on Airdrop Download trigger

This commit is contained in:
Gabriel Radureau
2025-10-09 23:46:41 +02:00
commit c798e0c73e
5 changed files with 131 additions and 0 deletions

27
README.md Normal file
View 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`

View 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>

View 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
View 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
View 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