Skip to content

Instantly share code, notes, and snippets.

@augustin64
Created August 18, 2021 18:14
Show Gist options
  • Save augustin64/f9f0d1a407710e64ade667b38eb8f21a to your computer and use it in GitHub Desktop.
Save augustin64/f9f0d1a407710e64ade667b38eb8f21a to your computer and use it in GitHub Desktop.
#!/bin/bash
mkdir "merges"; # On crée le dossier contenant la sortie
mmv '*/*"*' "#1/#2 #3" || true;
mmv "*/* *" "#1/#2 #3" || true; # simplifie un problème affectant les noms de fichier
mmv "*/*'*" "#1/#2 #3" || true;
merge () {
for directory in */; do
if [[ $directory != *"merges"* ]]; then # on itère dans chacun des sous-dossiers
cpt=0
files=""
cd "$directory"
for filename in *.${ext}; do
cpt=$((cpt+1))
files+=" -i '${directory}$filename'" # on concatène les éléments pour la commande ffmpeg
done
cd ..
echo $directory
merge_file=${directory//\//} # on supprime le "/" à la fin du nom de dossier
if [[ $merge_file == *" "* ]]; then
merge_file=${merge_file// /_}; # si le nom de dossier contient un ou des espaces, on les remplaces par des " "
fi
ffmpeg_cmd="ffmpeg${files} -filter_complex amix=inputs=${cpt}:duration=first:dropout_transition=0 'merges/${merge_file}.mp3'"
eval $ffmpeg_cmd # on exécute la commande
fi
done
}
extensions="mp3 m4a"
for ext in $extensions; do
merge # on exécute le code pour chacune des extensiosn disponibles
done; # cela a l'inconvénient de ne pas fonctionner si un même dossier comprend
# des fichiers audios d'extensions différentes
# Il doit y avoir un moyen simple de résoudre ce problème mais je ne le considère pas
# comme une priorité
echo "Done" # On indique à l'utilisateur que le script est terminé
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment