on Airdrop Download trigger
This commit is contained in:
27
README.md
Normal file
27
README.md
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
# Dance Videos
|
||||||
|
|
||||||
|
L'utilisateur prend des vidéos de ses cours de danses avec son iPhone,
|
||||||
|
en télécharge depuis son application whatsapp quand on lui partage
|
||||||
|
et enregistre l'écran de son téléphone quand certaines vidéos de danses apparaissent.
|
||||||
|
|
||||||
|
Les vidéos de l'iPhone sont au format .mov et possèdent des tags permettant d'identifier le lieu et le datetime de l'enregistrement.
|
||||||
|
Les autres sont en général au format .mp4 et le datetime correspond à la réception et non au moment de la danse.
|
||||||
|
|
||||||
|
L'utilisateur souhaite dans un premier temps organiser ces vidéos (vidéos de cours, de démo).
|
||||||
|
Dans un deuxième temps les convertir à un format adapté à son projecteur pour ses répétitions.
|
||||||
|
|
||||||
|
Un début de solution a été imaginé:Quand l'utilisateur "air drop" ses vidéos vers son MacBook pro M4,
|
||||||
|
cela déclenche un script qui déplacera toutes les vidéos du dossier Téléchargement vers un premier dossier de travail
|
||||||
|
et enclenchera le programme que l'on concevra ensemble.
|
||||||
|
|
||||||
|
Ce programme se chargera de convertir chaque vidéos en .mp4 (en conservant les tags si possibles)
|
||||||
|
et en renomant les vidéos aussi bien que possible avec un label parlant.
|
||||||
|
|
||||||
|
On développera plus tard la manière de construire les règles d'organisation (une combinaison de machine learning et de llm assisté par l'utilisateur).
|
||||||
|
|
||||||
|
Quand l'utilisateur branche sa carte SD avec un nom bien défini ("SD Danse" par exemple),
|
||||||
|
un programme se déclenche pour synchroniser son contenu avec le dossier de sortie où les vidéos sont organisées.
|
||||||
|
|
||||||
|
## [Déclencher au téléchargement](./doc/01.onAirdropDownload.md)
|
||||||
|
|
||||||
|
- `./registerApp.sh`
|
||||||
25
com.user.watchdownloads.plist
Normal file
25
com.user.watchdownloads.plist
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
|
||||||
|
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>Label</key>
|
||||||
|
<string>com.user.watchdownloads</string>
|
||||||
|
|
||||||
|
<key>UserName</key>
|
||||||
|
<string>gabrielradureau</string>
|
||||||
|
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>open</string>
|
||||||
|
<string>/Applications/DanceVideosOnAirdropDownload.app</string>
|
||||||
|
</array>
|
||||||
|
|
||||||
|
<key>WatchPaths</key>
|
||||||
|
<array>
|
||||||
|
<string>/Users/gabrielradureau/Downloads</string>
|
||||||
|
</array>
|
||||||
|
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
|
|
||||||
47
doc/01.OnAirdropDownload.md
Normal file
47
doc/01.OnAirdropDownload.md
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
# On Airdrop Download
|
||||||
|
|
||||||
|
## Déclencheur
|
||||||
|
|
||||||
|
1. Créer une application Automator manuellement et la dupliquer par script
|
||||||
|
1. Ouvre Automator (/Applications/Automator).
|
||||||
|
2. Crée un nouveau document de type Application.
|
||||||
|
3. Ajoute une action Exécuter un script shell et colle :
|
||||||
|
`bash /Users/gabrielradureau/Work/Danse/DanceVideos/onAirdropDownload.sh`
|
||||||
|
4. Enregistre l'application sous /Applications/WatchDownloadsTemplate.app.
|
||||||
|
2. Dupliquer l'application
|
||||||
|
```sh
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Chemin de l'application template
|
||||||
|
TEMPLATE_APP="/Applications/WatchDownloadsTemplate.app"
|
||||||
|
# Chemin de la nouvelle application
|
||||||
|
NEW_APP="/Applications/WatchDownloads.app"
|
||||||
|
|
||||||
|
# Supprime l'ancienne application si elle existe
|
||||||
|
rm -rf "$NEW_APP"
|
||||||
|
|
||||||
|
# Duplique l'application template
|
||||||
|
cp -R "$TEMPLATE_APP" "$NEW_APP"
|
||||||
|
|
||||||
|
# (Optionnel) Modifie le script shell dans l'application si nécessaire
|
||||||
|
# Par exemple, pour remplacer le chemin du script :
|
||||||
|
sed -i '' "s|/Users/gabrielradureau/Work/Danse/DanceVideos/onAirdropDownload.sh|/chemin/vers/ton/script.sh|g" "$NEW_APP/Contents/document.wflow"
|
||||||
|
```
|
||||||
|
|
||||||
|
3. Donner les permissions Full Disk Access
|
||||||
|
Après avoir dupliqué l'application, tu dois ajouter manuellement WatchDownloads.app dans Préférences Système > Sécurité et confidentialité > Confidentialité > Accès complet au disque.
|
||||||
|
|
||||||
|
4. Mettre à jour le fichier .plist
|
||||||
|
Modifie ton fichier com.user.watchdownloads.plist pour qu'il lance la nouvelle application :
|
||||||
|
```xml
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>/Applications/WatchDownloads.app/Contents/MacOS/Applescript</string>
|
||||||
|
</array>
|
||||||
|
```
|
||||||
|
5. Recharger le service launchd
|
||||||
|
```sh
|
||||||
|
launchctl unload ~/Library/LaunchAgents/com.user.watchdownloads.plist
|
||||||
|
launchctl load ~/Library/LaunchAgents/com.user.watchdownloads.plist
|
||||||
|
launchctl start com.user.watchdownloads
|
||||||
|
```
|
||||||
18
onAirdropDownload.sh
Executable file
18
onAirdropDownload.sh
Executable file
@@ -0,0 +1,18 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
set -eux
|
||||||
|
date
|
||||||
|
echo `date` >> /tmp/heho
|
||||||
|
find /Users/gabrielradureau/Downloads
|
||||||
|
mkdir -p /Users/gabrielradureau/Documents/.DanceVideos
|
||||||
|
find /Users/gabrielradureau/Documents/.DanceVideos
|
||||||
|
|
||||||
|
DLDIR=/Users/gabrielradureau/Downloads
|
||||||
|
|
||||||
|
DESTDIR=/Users/gabrielradureau/Documents/.DanceVideos
|
||||||
|
|
||||||
|
DL_VIDEOS=`find $DLDIR -type f -iname "*.mp4" -or -iname "*.mov" -maxdepth 1`
|
||||||
|
[ -z "$DL_VIDEOS" ] || {
|
||||||
|
for v in "$DL_VIDEOS"; do
|
||||||
|
echo `basename "$v"` >> /tmp/foo
|
||||||
|
done
|
||||||
|
}
|
||||||
14
registerApp.sh
Executable file
14
registerApp.sh
Executable file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
set -eux
|
||||||
|
TEMPLATE_APP="/Applications/WatchDownloadsTemplate.app"
|
||||||
|
NEW_APP="/Applications/DanceVideosOnAirdropDownload.app"
|
||||||
|
SCRIPTS_DIR=$(dirname `realpath ${BASH_SOURCE[0]}`)
|
||||||
|
rm -rf "$NEW_APP"
|
||||||
|
cp -R "$TEMPLATE_APP" "$NEW_APP"
|
||||||
|
sed -i '' "s|echo hello world|${SCRIPTS_DIR}/onAirdropDownload.sh|g" "$NEW_APP/Contents/document.wflow"
|
||||||
|
|
||||||
|
launchctl unload ~/Library/LaunchAgents/com.user.watchdownloads.plist | :
|
||||||
|
cp ${SCRIPTS_DIR}/com.user.watchdownloads.plist ~/Library/LaunchAgents/com.user.watchdownloads.plist
|
||||||
|
launchctl load ~/Library/LaunchAgents/com.user.watchdownloads.plist
|
||||||
|
# launchctl list | grep watchdownloads
|
||||||
|
launchctl start com.user.watchdownloads
|
||||||
Reference in New Issue
Block a user