2022-03-02 18:02:15 +01:00
|
|
|
#!/bin/bash
|
|
|
|
set -euo pipefail
|
|
|
|
IFS=$'\n\t'
|
|
|
|
|
|
|
|
function checkGlobal() {
|
|
|
|
hash mkvmerge 2>/dev/null || {
|
|
|
|
echo >&2 "Erreur: Commande mkvmerge pas trouvé, merci de l'installer"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
hash mkvextract 2>/dev/null || {
|
|
|
|
echo >&2 "Erreur: Commande mkvmerge pas trouvé, merci de l'installer"
|
|
|
|
exit 1
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
## on lance la fonction
|
|
|
|
checkGlobal
|
|
|
|
|
|
|
|
# $1 est le fichier à traiter préciser dans la commande
|
|
|
|
|
|
|
|
# On récupère le nom du fichier
|
|
|
|
fichier=$(basename "$1")
|
|
|
|
|
|
|
|
echo "Traitement du fichier $fichier"
|
|
|
|
|
|
|
|
## Check input file.
|
|
|
|
if [ ! -f "$fichier" ]; then
|
|
|
|
echo >&2 "ErroErreurr: Fichier d'entrée non trouvé"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Si le fichier est un fichier avi ou mp4, on le converti en mkv
|
|
|
|
|
|
|
|
if [[ $fichier != *.mkv ]]; then
|
|
|
|
echo "Convertion du fichier $fichier en mkv"
|
|
|
|
find "*" -execdir mkvmerge -o {}.mkv {} \;
|
|
|
|
fi
|
|
|
|
# Si le fichier est un fichier mkv on continue
|
|
|
|
|
|
|
|
if [[ $fichier == *.mkv ]]; then
|
|
|
|
mkvinfo "$fichier" | awk '/audio/ || /Langue/ || /mkvextract/ || /Identifiant du codec:/ || /Nom:/'
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo " On extrait la vidéo ? (y/n)"
|
|
|
|
read RepVideo
|
|
|
|
|
|
|
|
if [ "$RepVideo" == "n" ]; then
|
|
|
|
echo "On ne extrait pas la vidéo"
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo " Combien d'audio voulez-vous traiter ? "
|
|
|
|
read nb_lang
|
|
|
|
|
|
|
|
echo " Combien de sous-titres voulez-vous traiter ? "
|
|
|
|
read nb_sub
|
|
|
|
|
2022-03-02 21:13:20 +01:00
|
|
|
if [ $nb_lang != 0 ]; then
|
|
|
|
echo " Voulez vous encoder les audios ? (y/n)"
|
|
|
|
read encoder
|
|
|
|
|
|
|
|
if [ "$encoder" == "y" ]; then
|
|
|
|
echo "Dois-je supprimer les anciens audio après l'encodage ? (y/n)"
|
|
|
|
read supprimer
|
|
|
|
if [ "$supprimer" == "n" ]; then
|
|
|
|
echo "Ok on ne supprime pas les fichiers audio"
|
|
|
|
fi
|
2022-03-02 18:02:15 +01:00
|
|
|
fi
|
|
|
|
|
2022-03-02 21:13:20 +01:00
|
|
|
if [ "$encoder" == "n" ]; then
|
|
|
|
echo "Ok on encode pas !"
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
encoder="n"
|
|
|
|
echo "Ok on ne traite pas d'audio"
|
2022-03-02 18:02:15 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
audio_var=()
|
|
|
|
lang_var=()
|
|
|
|
audio_ext=()
|
|
|
|
st_var=()
|
|
|
|
st_ext=()
|
|
|
|
st_lang=()
|
|
|
|
new_ext_audio=()
|
|
|
|
bit_audio=()
|
|
|
|
|
|
|
|
for ((c = 1; c <= $nb_lang; c++)); do
|
|
|
|
echo "Quelle est l'ID de la piste audio $c ?"
|
|
|
|
read temp
|
|
|
|
audio_var+=($temp)
|
|
|
|
echo "Quelle est la langue de la piste audio $c ?"
|
|
|
|
read temp
|
|
|
|
lang_var+=($temp)
|
|
|
|
|
|
|
|
echo "Quelle est l'extension de la piste audio $c ? (Attention, si votre audio est AC3 ou EAC3 mettez [']ac3'"
|
|
|
|
read temp
|
|
|
|
audio_ext+=($temp)
|
|
|
|
done
|
|
|
|
|
|
|
|
for ((c = 1; c <= $nb_sub; c++)); do
|
|
|
|
echo "Quelle est l'ID de la piste sous-titres $c ?"
|
|
|
|
read temp
|
|
|
|
st_var+=($temp)
|
|
|
|
|
|
|
|
echo "Quelle est la langue de la piste sous-titres $c ?"
|
|
|
|
read temp
|
|
|
|
st_lang+=($temp)
|
|
|
|
|
|
|
|
echo "Quelle est l'extension de la piste sous-titres $c ? ( Information, si le sous-titre est un VobSub mettez 'sub'"
|
|
|
|
read temp
|
|
|
|
st_ext+=($temp)
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "$encoder" == "y" ]; then
|
|
|
|
|
|
|
|
echo "Quelle est le codec de l'audio ?"
|
|
|
|
read new_ext_audio
|
|
|
|
|
|
|
|
echo "Quelle est la bitrate de l'audio ?"
|
|
|
|
read bit_audio
|
|
|
|
fi
|
|
|
|
|
|
|
|
echo " Souhaitez vous renommer le dossier audio ? (y/n)"
|
|
|
|
read reponse
|
|
|
|
|
|
|
|
if [ "$reponse" == "y" ]; then
|
|
|
|
echo "Quel est le nouveau nom du dossier audio ?"
|
|
|
|
read nom_dossier
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$reponse" == "n" ]; then
|
|
|
|
echo "D'accord je ne modifie pas le nom du dossier !"
|
|
|
|
fi
|
|
|
|
|
2022-03-02 21:13:20 +01:00
|
|
|
if [ -d "audio" ]; then
|
|
|
|
echo "Le dossier audio existe"
|
|
|
|
else
|
|
|
|
mkdir audio
|
|
|
|
echo "Le dossier audio n'existe pas, il a été créé"
|
|
|
|
fi
|
2022-03-02 18:02:15 +01:00
|
|
|
|
2022-03-02 21:13:20 +01:00
|
|
|
if [ "$RepVideo" == "y" ]; then
|
2022-03-02 18:02:15 +01:00
|
|
|
if [ -d "video" ]; then
|
|
|
|
echo "Le dossier video existe"
|
|
|
|
else
|
|
|
|
mkdir video
|
|
|
|
echo "Le dossier video n'existe pas, il a été créé"
|
|
|
|
fi
|
2022-03-02 21:13:20 +01:00
|
|
|
fi
|
2022-03-02 18:02:15 +01:00
|
|
|
|
|
|
|
if [ "$RepVideo" == "y" ]; then
|
|
|
|
for i in *.mkv; do
|
2022-03-02 21:13:20 +01:00
|
|
|
mkvmerge --output video/"$i"'.VIDEO.mkv' \
|
|
|
|
--no-audio \
|
|
|
|
--no-subtitles \
|
|
|
|
--no-chapters \
|
|
|
|
--no-attachments \
|
|
|
|
--no-global-tags \
|
|
|
|
--language 0:und \
|
|
|
|
--default-track 0:yes \
|
|
|
|
--display-dimensions 0:1920x1080 \
|
|
|
|
'(' "$i" ')' \
|
|
|
|
--title "",
|
2022-03-02 18:02:15 +01:00
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
for ((c = 0; c <= $nb_lang - 1; c++)); do
|
|
|
|
find *.mkv -execdir mkvextract {} tracks ${audio_var[$c]}:{}.${lang_var[$c]}.${audio_ext[$c]} \;
|
|
|
|
echo "Lancement de mkvextract audio"
|
|
|
|
|
|
|
|
mv *.${lang_var[$c]}.${audio_ext[$c]} audio/
|
|
|
|
|
|
|
|
done # fin de la boucle audio
|
|
|
|
|
|
|
|
for ((c = 0; c <= $nb_sub - 1; c++)); do
|
|
|
|
find *.mkv -execdir mkvextract {} tracks ${st_var[$c]}:{}.${st_lang[$c]}.${st_ext[$c]} \;
|
|
|
|
echo "Lancement de mkvextract sous-titres"
|
|
|
|
|
|
|
|
mv *.${st_lang[$c]}.${st_ext[$c]} audio/
|
|
|
|
|
|
|
|
if [ ${st_ext} == "sub" ]; then
|
|
|
|
mv *.idx audio/
|
|
|
|
fi
|
|
|
|
|
|
|
|
done # fin de la boucle sous-titres
|
|
|
|
|
|
|
|
cd audio/
|
|
|
|
|
|
|
|
echo "Les fichiers audio ont été déplacés dans le dossier audio"
|
|
|
|
|
|
|
|
# Regarder si le nom du fichier contient .mkv dedans
|
|
|
|
|
|
|
|
for i in *; do
|
|
|
|
i2=$(echo $i | sed -E 's/.mp4|.avi|.mkv//gm;t;d')
|
|
|
|
mv "$i" "$i2"
|
|
|
|
done
|
|
|
|
|
|
|
|
if [ "$reponse" == "y" ]; then
|
|
|
|
cd ..
|
|
|
|
mv audio "$nom_dossier"
|
|
|
|
cd "$nom_dossier"
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$encoder" == "y" ]; then
|
|
|
|
|
2022-03-02 21:13:20 +01:00
|
|
|
if [ -d "FAIT" ]; then
|
|
|
|
echo "ok"
|
|
|
|
else
|
|
|
|
mkdir FAIT/
|
|
|
|
fi
|
|
|
|
|
2022-03-02 18:02:15 +01:00
|
|
|
for i in *.${audio_ext}; do
|
2022-03-02 21:13:20 +01:00
|
|
|
ffmpeg -i "$i" -c:a ${new_ext_audio} -b:a ${bit_audio}k "$i.new.${new_ext_audio}"
|
2022-03-02 18:02:15 +01:00
|
|
|
echo "Lancement de l'encodage de l'audio"
|
2022-03-02 21:13:20 +01:00
|
|
|
|
|
|
|
mv *.new.${new_ext_audio} FAIT/
|
|
|
|
|
2022-03-02 18:02:15 +01:00
|
|
|
done
|
|
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
if [ "$encoder" == "y" ]; then
|
|
|
|
|
|
|
|
if [ "$supprimer" == "y" ]; then
|
|
|
|
rm *.${audio_ext}
|
|
|
|
echo "Les fichiers audio ont été supprimés"
|
2022-03-02 21:13:20 +01:00
|
|
|
mv FAIT/* .
|
|
|
|
rm -r FAIT/
|
|
|
|
|
|
|
|
for i in *.${audio_ext}; do
|
|
|
|
i2=$(echo $i | sed -E 's/.new.ac3//gm;t;d')
|
|
|
|
mv "$i" "$i2"
|
|
|
|
done
|
|
|
|
|
2022-03-02 18:02:15 +01:00
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
2022-03-02 21:13:20 +01:00
|
|
|
|
2022-03-02 18:02:15 +01:00
|
|
|
#Le script est fini
|
|
|
|
echo "Merci de m'avoir utilisé !"
|
|
|
|
exit 0
|