0 votes

Récupérer le nom du dossier pour l'action shell script d'Automator

Pour concaténer des fichiers vidéo, j'ai assemblé des bouts de code trouvés en ligne dans un bash ffmpeg script sur Automator. Cela fonctionne. Cependant, j'aimerais que le fichier de sortie porte le nom du dossier dans lequel se trouvent les vidéos.

J'ai trouvé des solutions en ligne, mais aucune ne suit un flux de travail shell script. Mon flux de travail est juste (avec une demande ajoutée "Get Specified Finder Items" lorsqu'il est testé dans Automator) :

current_path=$(dirname "$1")
cd "$current_path"

for f in "$@"
do
    /usr/local/Cellar/ffmpeg/4.1_1/bin/ffmpeg -i concat:"$(pipeize() { local OLDIFS="$IFS";IFS='|';echo "$*";IFS="$OLDIFS";}; pipeize *.VOB)" -c copy -map "0:v?" -map "0:a?" -map "0:s?" "THIS_SHOULD_BE_THE_DIRECTORY_NAME.VOB"
done

0voto

user3439894 Points 52496

Je suppose que $1 est par exemple "/path/to/filename.VOB" donc $current_path serait : /path/to

Donc, pour $filename utiliser filename="$(basename "$current_path")" placé après : current_path="$(dirname "$1")" et ensuite ext=".VOB" après. Vous pouvez alors modifier .VOB à d'autres extensions si nécessaire.

Ainsi, le changement "THIS_SHOULD_BE_THE_DIRECTORY_NAME.VOB" à "${filename}${ext}" comme indiqué ci-dessous :

#!/bin/bash

current_path="$(dirname "$1")"
filename="$(basename "$current_path")"
ext=".VOB"
cd "$current_path"

for f in "$@"
do
    /usr/local/Cellar/ffmpeg/4.1_1/bin/ffmpeg -i concat:"$(pipeize() { local OLDIFS="$IFS";IFS='|';echo "$*";IFS="$OLDIFS";}; pipeize *.VOB)" -c copy -map "0:v?" -map "0:a?" -map "0:s?" "${filename}${ext}"
done

0 votes

Merci beaucoup. Cela fonctionne, même si je crois que vous avez oublié un " sur filename="$(basename "$current_path")".VOB" car le script ne s'exécute de mon côté que si j'en ajoute un. Savez-vous comment je pourrais modifier le code pour qu'il fonctionne avec n'importe quelle extension ? J'ai essayé un tas de flux de travail et de modifications du code, mais ils échouent tous de différentes manières. J'aimerais utiliser la même action pour les dossiers qui peuvent contenir des .VOB, ou des .m2ts, ou des .mkv.

0 votes

@firewater, j'ai mis à jour la réponse pour répondre à votre commentaire, en créant une variable séparée pour le nom de fichier et l'extension. Je pense que ce que j'ai ajouté est cité correctement, car je l'ai vérifié deux fois à l'adresse suivante ShellCheck . Cela dit, votre code jette quelques drapeaux, donc je vous suggère d'utiliser ShellCheck pour voir ce qui se passe.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X