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