J'essaie d'automatiser le processus de conversion vidéo en utilisant Automator et la version CLI de Handbrake. J'essaie d'implémenter la fonctionnalité qui fait que chaque fois qu'une vidéo est téléchargée dans mon dossier Dropbox sur mon PC, elle est convertie et placée dans un autre dossier. Actuellement, je le teste avec un dossier de test (qui n'est pas sur Dropbox, je ne fais que copier des fichiers dans ce dossier pour le tester). Lorsque je place un seul fichier ou plusieurs fichiers dans le dossier simultanément, cela fonctionne. Mais quand je mets un fichier (ou plusieurs) et que script s'exécute c'est-à-dire qu'il convertit les vidéos et que je mets un autre fichier dans le dossier alors pour ce nouveau fichier script n'est jamais appelé donc la nouvelle vidéo n'est pas convertie.
Alors comment puis-je réaliser cette fonctionnalité que lorsque script est en cours d'exécution et qu'un nouveau fichier est ajouté, une autre instance de script est lancée pour le nouveau fichier.
De plus, le nouveau fichier est enregistré avec seulement le premier mot du nom si celui-ci comporte plusieurs mots (c'est-à-dire s'il est brisé par un espace).
Voici la capture d'écran de la configuration de mon automate :
Merci d'avance pour votre aide.
Voici mon script du shell d'exécution script comme vous l'avez demandé @:Tony Williams
for f in "$@"
do
Applications/HandBrakeCLI -i "$f" -t 1 --angle 1 -c 1 -o "/Users/abc/Desktop/TestVidDest/$(basename $f)" -f mp4 -4 -O --decomb="fast" -w 1280 -l 720 --modulus 16 -e x264 -b 3800 -2 -T --cfr -a 1 -E faac -6 dpl2 -R 48 -B 128 -D 0 --gain 0 --audio-fallback ffac3 --x264-preset=slow --x264-profile=high --x264-tune="film" --h264-level="4.0" --verbose=1
done
0 votes
Il est presque impossible de lire cette étape du shell script. Pourriez-vous coller uniquement le texte dans votre question ?
0 votes
Le problème vient probablement du fait que Automator n'est pas déclenché par les nouveaux fichiers, et non du shell script. Pour tester cela, pouvez-vous remplacer le contenu de la balise
for
boucle avecsleep 30 && mv "$f" /tmp
et voir si tous les fichiers sont copiés ou seulement ceux que vous avez mis en premier ?1 votes
@patrix merci pour votre réponse ! même problème ici aussi. cela fonctionne si je mets des fichiers et puis j'attends qu'ils soient déplacés et puis je mets de nouveaux fichiers. mais ne fonctionne pas quand je mets certains fichiers et pendant qu'ils sont déplacés (c'est-à-dire script est en cours d'exécution) je mets d'autres fichiers puis les nouveaux fichiers ne sont pas déplacés.
0 votes
Lors de l'utilisation d'actions de dossier, l
for i in "$@" ...
devrait être obsolète...