logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Prochaine révision Les deux révisions suivantes
utilisateurs:slyfox:scripts:accueil [14/08/2018 17:25]
Slyfox supprimée
utilisateurs:slyfox:scripts:accueil [07/08/2020 17:40]
Slyfox supprimée
Ligne 1: Ligne 1:
-====== ​Sylmedia 2 ======+====== ​Slymedia ​======
  
-  * Objet : +  * Objet : Script Slymedia
   * Niveau requis : {{tag>​débutant}}   * Niveau requis : {{tag>​débutant}}
   * Commentaires : -   * Commentaires : -
   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)   * Débutant, à savoir : [[:​doc:​systeme:​commandes:​le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !.]] :-)
-  ​* Suivi :  +  * Création par [[user>​Slyfox]] ​14.08.2018 
-    ​* Création par [[user>​Slyfox]] ​31/07/2018 +  * Suivi {{tag>À compléter}} ​
-  * Commentaires sur le forum +
  
-<note warning>​__**Script en cours d’écriture!**__</​note>​+===== Introduction ===== 
 +Slymedia est un script (amateur) qui permet de convertir les fichiers vidéo et audio.
  
-Installation ​des paquets: +===== Installation ​=====
-<code root>​apt-get update +
-apt-get install ffmpeg yad flac vorbis-tools eyed3 kid3-cli</​code>​+
  
-Copier ​le script ​ci-dessous dans un fichier et le nommer **slymedia.sh** \\ +Paquets pour le fonctionne du script:
-Déplacer le fichier **slymedia.sh** dans le dossier **/home** ou a convenance.\\ +
-Avant le premier lancement il faut que le fichier soit exécutable (adapter si nécessaire le chemin du fichier).\\ +
-<code user>​chmod u+x /​$HOME/​slymedia.sh</​code>​+
  
-Pour lancer le script:\\+<code root>apt update</​code>​ 
 +<code root>apt install aptitude</​code>​ 
 +<code root>​aptitude install ffmpeg yad flac vorbis-tools eyed3 kid3-cli</​code>​ 
 +<code root>apt upgrade</​code>​ 
 +===== Script ===== 
 +<note important>​En cours d'​écriture,​ peut fonctionner que partiellement.</​note>​
  
-  * Ouvrir un terminal graphique (gnome terminal, terminal mate...) et taper le chemin du fichier **slymedia.sh** (adapter si nécessaire le chemin du fichier).\\ +<​note ​tip>Version du: 17.08.2018</​note>​
- +
-<code user>/​$HOME/​slymedia.sh</​code>​ +
- +
-ou\\ +
- +
-  * Faire un double clic sur le fichier. +
- +
- +
- +
-<​note>​**Version du 02.08.2018**</​note>​ +
- +
-===== Script =====+
  
 <code user>#! /bin/bash <code user>#! /bin/bash
 + 
 # Paquets à installer: ffmpeg yad flac vorbis-tools eyed3 kid3-cli # Paquets à installer: ffmpeg yad flac vorbis-tools eyed3 kid3-cli
-# Version: ​20180802 +# Version: ​20180817 
 + 
 #​=========================================================================================================== #​===========================================================================================================
 function YADMAIN() function YADMAIN()
Ligne 66: Ligne 54:
 --button="​Source!gtk-file!:​4"​ \ --button="​Source!gtk-file!:​4"​ \
 --button="​Lancer conversion!gtk-convert!:​0"​ \ --button="​Lancer conversion!gtk-convert!:​0"​ \
-"${cdeYadStream[@]}"​) +"${TabYadStream[@]}"​) 
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 + 
 # Récupération variables # Récupération variables
 profile=$(awk -F [\|] '​{print $2}' <<<​ "​${yadMain}"​) profile=$(awk -F [\|] '​{print $2}' <<<​ "​${yadMain}"​)
Ligne 102: Ligne 90:
 --field="​ ":LBL " " \ --field="​ ":LBL " " \
 --field="<​b>​Options</​b>":​LBL " " \ --field="<​b>​Options</​b>":​LBL " " \
---field="​Supprimer ​toutes ​les métadonnées":CHK "​${metadata}"​ \+--field="​Supprimer ​tous les tags et images cover":CHK "​${metadata}"​ \
 --field="​Ne pas encoder si même codec que l'​original":​CHK "​${nocopy}"​ \ --field="​Ne pas encoder si même codec que l'​original":​CHK "​${nocopy}"​ \
 --field="​Dossier source":​DIR "​${dirIn}"​ \ --field="​Dossier source":​DIR "​${dirIn}"​ \
Ligne 108: Ligne 96:
 --button="​gtk-cancel:​2"​ \ --button="​gtk-cancel:​2"​ \
 --button="​gtk-ok:​0"​) --button="​gtk-ok:​0"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 + 
 # Récupération variables # Récupération variables
 definition=$(awk -F [\|] '​{print $2}' <<<​ "​${yadPreference}"​) definition=$(awk -F [\|] '​{print $2}' <<<​ "​${yadPreference}"​)
Ligne 120: Ligne 108:
 nocopy=$(awk -F [\|] '​{print $20}' <<<​ "​${yadPreference}"​) nocopy=$(awk -F [\|] '​{print $20}' <<<​ "​${yadPreference}"​)
 dirIn=$(awk -F [\|] '​{print $21}' <<<​ "​${yadPreference}"​) dirIn=$(awk -F [\|] '​{print $21}' <<<​ "​${yadPreference}"​)
- 
- 
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 127: Ligne 113:
 { {
 IFS=$"​|"​ IFS=$"​|"​
 + 
 yadSource=$(yad --list \ yadSource=$(yad --list \
 --radiolist \ --radiolist \
Ligne 141: Ligne 127:
 --column=""​ \ --column=""​ \
 --column="​Type de source"​ \ --column="​Type de source"​ \
 +"​FALSE"​ "​Fichier avec analyse"​ \
 "​TRUE"​ "​Fichier"​ \ "​TRUE"​ "​Fichier"​ \
 "​FALSE"​ "​DVD"​ \ "​FALSE"​ "​DVD"​ \
 "​FALSE"​ "​CD"​ \ "​FALSE"​ "​CD"​ \
 "​FALSE"​ "​DDL"​) "​FALSE"​ "​DDL"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 + 
 # Récupération variables # Récupération variables
 source=$(awk -F [\|] '/​TRUE/​ {print $2}' <<<​ "​${yadSource}"​) source=$(awk -F [\|] '/​TRUE/​ {print $2}' <<<​ "​${yadSource}"​)
Ligne 169: Ligne 156:
 --button="​gtk-cancel:​2"​ \ --button="​gtk-cancel:​2"​ \
 --button="​gtk-ok:​0"​) --button="​gtk-ok:​0"​)
 + 
 # Status de sortie Yad # Status de sortie Yad
 status="​$?"​ status="​$?"​
 +}
 +#​===========================================================================================================
 +function YADPROGRESS()
 +{
 +yad --progress \
 +--title "​SlyEditImage ${version}"​ \
 +--geometry="​550x300"​ \
 +--borders="​25"​ \
 +--auto-close \
 +--auto-kill \
 +--button="​gtk-media-stop:​1"​
 +
 +yadStatus="​$?"​
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 179: Ligne 179:
 dirSylmedia="/​home/​$USER/​.slymedia"​ dirSylmedia="/​home/​$USER/​.slymedia"​
 [[ ! -d "​${dirSylmedia}"​ ]] && mkdir "​${dirSylmedia}"​ [[ ! -d "​${dirSylmedia}"​ ]] && mkdir "​${dirSylmedia}"​
 + 
 # Suppression des anciens dossiers temporaires # Suppression des anciens dossiers temporaires
 rm -rf "​${dirSylmedia}"/​tmp* rm -rf "​${dirSylmedia}"/​tmp*
 + 
 # Création du dossier temporaire # Création du dossier temporaire
 dossierTmp="​$(mktemp -d "​${dirSylmedia}/​tmp-XXXXXXXXXXX"​)"​ dossierTmp="​$(mktemp -d "​${dirSylmedia}/​tmp-XXXXXXXXXXX"​)"​
 + 
 # Création du fichier de configurations # Création du fichier de configurations
 fileConfig="​${dirSylmedia}/​config.txt"​ fileConfig="​${dirSylmedia}/​config.txt"​
 + 
 [[ ! -f "​${fileConfig}"​ ]] && CONFIGDEFAUT [[ ! -f "​${fileConfig}"​ ]] && CONFIGDEFAUT
 } }
Ligne 202: Ligne 202:
 # Sauvegarde variables dans fichier de configuaration utilisateur # Sauvegarde variables dans fichier de configuaration utilisateur
 echo -e "​profile=\"​${profile}\"​\nquality=\"​${quality}\"​\ndirOut=\"​${dirOut}\"​\ndefinition=\"​${definition}\"​\nlangAudio=\"​${langAudio}\"​\ntypeRate=\"​${typeRate}\"​\nlangSub=\"​${langSub}\"​\nmetadata=\"​${metadata}\"​\nnocopy=\"​${nocopy}\"​\ndirIn=\"​${dirIn}\""​ > "​${fileConfig}"​ echo -e "​profile=\"​${profile}\"​\nquality=\"​${quality}\"​\ndirOut=\"​${dirOut}\"​\ndefinition=\"​${definition}\"​\nlangAudio=\"​${langAudio}\"​\ntypeRate=\"​${typeRate}\"​\nlangSub=\"​${langSub}\"​\nmetadata=\"​${metadata}\"​\nnocopy=\"​${nocopy}\"​\ndirIn=\"​${dirIn}\""​ > "​${fileConfig}"​
 + 
 echo "​profile:​ ${profile}"​ echo "​profile:​ ${profile}"​
 echo "​quality:​ ${quality}"​ echo "​quality:​ ${quality}"​
Ligne 221: Ligne 221:
  language="​Français"​  language="​Français"​
  languageISO="​fre"​  languageISO="​fre"​
- + 
  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​deu"​ ]] || [[ "​${lang}"​ == "​de"​ ]]; then  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​deu"​ ]] || [[ "​${lang}"​ == "​de"​ ]]; then
  language="​Allemand"​  language="​Allemand"​
  languageISO="​deu"​  languageISO="​deu"​
- + 
  elif [[ "​${lang}"​ == "​eng"​ ]] || [[ "​${lang}"​ == "​en"​ ]]; then  elif [[ "​${lang}"​ == "​eng"​ ]] || [[ "​${lang}"​ == "​en"​ ]]; then
  language="​Anglais"​  language="​Anglais"​
  languageISO="​eng"​  languageISO="​eng"​
-  +  
- + 
  elif [[ "​${lang}"​ == "​ara"​ ]] || [[ "​${lang}"​ == "​ar"​ ]]; then  elif [[ "​${lang}"​ == "​ara"​ ]] || [[ "​${lang}"​ == "​ar"​ ]]; then
  language="​Arabe"​  language="​Arabe"​
  languageISO="​ara"​  languageISO="​ara"​
- + 
  elif [[ "​${lang}"​ == "​bre"​ ]] || [[ "​${lang}"​ == "​br"​ ]]; then  elif [[ "​${lang}"​ == "​bre"​ ]] || [[ "​${lang}"​ == "​br"​ ]]; then
  language="​Breton"​  language="​Breton"​
  languageISO="​bre"​   languageISO="​bre"​
- + 
  elif [[ "​${lang}"​ == "​cat"​ ]] || [[ "​${lang}"​ == "​ca"​ ]]; then  elif [[ "​${lang}"​ == "​cat"​ ]] || [[ "​${lang}"​ == "​ca"​ ]]; then
  language="​Catalan"​  language="​Catalan"​
  languageISO="​cat"​  languageISO="​cat"​
 + 
  elif [[ "​${lang}"​ == "​chi"​ ]] || [[ "​${lang}"​ == "​zho"​ ]] || [[ "​${lang}"​ == "​zh"​ ]]; then  elif [[ "​${lang}"​ == "​chi"​ ]] || [[ "​${lang}"​ == "​zho"​ ]] || [[ "​${lang}"​ == "​zh"​ ]]; then
  language="​Chinois"​  language="​Chinois"​
  languageISO="​chi"​  languageISO="​chi"​
- + 
  elif [[ "​${lang}"​ == "​kor"​ ]] || [[ "​${lang}"​ == "​ko"​ ]]; then  elif [[ "​${lang}"​ == "​kor"​ ]] || [[ "​${lang}"​ == "​ko"​ ]]; then
  language="​Coréen"​  language="​Coréen"​
  languageISO="​kor"​  languageISO="​kor"​
- + 
  elif [[ "​${lang}"​ == "​cos"​ ]] || [[ "​${lang}"​ == "​co"​ ]]; then  elif [[ "​${lang}"​ == "​cos"​ ]] || [[ "​${lang}"​ == "​co"​ ]]; then
  language="​Corse"​  language="​Corse"​
  languageISO="​cos"​  languageISO="​cos"​
- + 
  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then
  language="​Créole_haïtien"​  language="​Créole_haïtien"​
  languageISO="​hat"​  languageISO="​hat"​
- + 
  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then  elif [[ "​${lang}"​ == "​hat"​ ]] || [[ "​${lang}"​ == "​ht"​ ]]; then
  language="​Créole_haïtien"​  language="​Créole_haïtien"​
  languageISO="​hat"​  languageISO="​hat"​
- + 
  elif [[ "​${lang}"​ == "​rcf"​ ]] || [[ "​${lang}"​ == "​rc"​ ]]; then  elif [[ "​${lang}"​ == "​rcf"​ ]] || [[ "​${lang}"​ == "​rc"​ ]]; then
  language="​Créole_Réunionnais"​  language="​Créole_Réunionnais"​
  languageISO="​rcf"​  languageISO="​rcf"​
- + 
  elif [[ "​${lang}"​ == "​gla"​ ]] || [[ "​${lang}"​ == "​gd"​ ]]; then  elif [[ "​${lang}"​ == "​gla"​ ]] || [[ "​${lang}"​ == "​gd"​ ]]; then
  language="​Écossais"​  language="​Écossais"​
  languageISO="​gla"​  languageISO="​gla"​
 + 
  elif [[ "​${lang}"​ == "​spa"​ ]] || [[ "​${lang}"​ == "​es"​ ]]; then  elif [[ "​${lang}"​ == "​spa"​ ]] || [[ "​${lang}"​ == "​es"​ ]]; then
  language="​Espagnol"​  language="​Espagnol"​
  languageISO="​spa"​  languageISO="​spa"​
- + 
  elif [[ "​${lang}"​ == "​epo"​ ]] || [[ "​${lang}"​ == "​eo"​ ]]; then  elif [[ "​${lang}"​ == "​epo"​ ]] || [[ "​${lang}"​ == "​eo"​ ]]; then
  language="​Espéranto"​  language="​Espéranto"​
  languageISO="​epo"​  languageISO="​epo"​
 + 
  elif [[ "​${lang}"​ == "​fin"​ ]] || [[ "​${lang}"​ == "​fi"​ ]]; then  elif [[ "​${lang}"​ == "​fin"​ ]] || [[ "​${lang}"​ == "​fi"​ ]]; then
  language="​Finnois"​  language="​Finnois"​
  languageISO="​fin"​  languageISO="​fin"​
- + 
  elif [[ "​${lang}"​ == "​glg"​ ]] || [[ "​${lang}"​ == "​gl"​ ]]; then  elif [[ "​${lang}"​ == "​glg"​ ]] || [[ "​${lang}"​ == "​gl"​ ]]; then
  language="​Galicien"​  language="​Galicien"​
  languageISO="​glg"​  languageISO="​glg"​
-  +  
- + 
  elif [[ "​${lang}"​ == "​wel"​ ]] || [[ "​${lang}"​ == "​cym"​ ]] || [[ "​${lang}"​ == "​cy"​ ]]; then  elif [[ "​${lang}"​ == "​wel"​ ]] || [[ "​${lang}"​ == "​cym"​ ]] || [[ "​${lang}"​ == "​cy"​ ]]; then
  language="​Gallois"​  language="​Gallois"​
  languageISO="​wel"​  languageISO="​wel"​
 + 
  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​ell"​ ]] || [[ "​${lang}"​ == "​el"​ ]]; then  elif [[ "​${lang}"​ == "​gre"​ ]] || [[ "​${lang}"​ == "​ell"​ ]] || [[ "​${lang}"​ == "​el"​ ]]; then
  language="​Grec"​  language="​Grec"​
  languageISO="​gre"​  languageISO="​gre"​
- + 
  elif [[ "​${lang}"​ == "​heb"​ ]] || [[ "​${lang}"​ == "​he"​ ]]; then  elif [[ "​${lang}"​ == "​heb"​ ]] || [[ "​${lang}"​ == "​he"​ ]]; then
  language="​Hébreu"​  language="​Hébreu"​
  languageISO="​heb"​  languageISO="​heb"​
- + 
  elif [[ "​${lang}"​ == "​hin"​ ]] || [[ "​${lang}"​ == "​hi"​ ]]; then  elif [[ "​${lang}"​ == "​hin"​ ]] || [[ "​${lang}"​ == "​hi"​ ]]; then
  language="​Hindi"​  language="​Hindi"​
  languageISO="​hin"​  languageISO="​hin"​
- + 
  elif [[ "​${lang}"​ == "​hun"​ ]] || [[ "​${lang}"​ == "​hu"​ ]]; then  elif [[ "​${lang}"​ == "​hun"​ ]] || [[ "​${lang}"​ == "​hu"​ ]]; then
  language="​Hongrois"​  language="​Hongrois"​
  languageISO="​hun"​  languageISO="​hun"​
- + 
  elif [[ "​${lang}"​ == "​gle"​ ]] || [[ "​${lang}"​ == "​ga"​ ]]; then  elif [[ "​${lang}"​ == "​gle"​ ]] || [[ "​${lang}"​ == "​ga"​ ]]; then
  language="​Irlandais"​  language="​Irlandais"​
  languageISO="​gle"​  languageISO="​gle"​
- + 
  elif [[ "​${lang}"​ == "​ice"​ ]] || [[ "​${lang}"​ == "​isl"​ ]] || [[ "​${lang}"​ == "​is"​ ]]; then  elif [[ "​${lang}"​ == "​ice"​ ]] || [[ "​${lang}"​ == "​isl"​ ]] || [[ "​${lang}"​ == "​is"​ ]]; then
  language="​Islandais"​  language="​Islandais"​
  languageISO="​ice"​   languageISO="​ice"​
 + 
  elif [[ "​${lang}"​ == "​ita"​ ]] || [[ "​${lang}"​ == "​it"​ ]]; then  elif [[ "​${lang}"​ == "​ita"​ ]] || [[ "​${lang}"​ == "​it"​ ]]; then
  language="​Italien"​  language="​Italien"​
  languageISO="​ita"​  languageISO="​ita"​
- + 
  elif [[ "​${lang}"​ == "​jpn"​ ]] || [[ "​${lang}"​ == "​jp"​ ]]; then  elif [[ "​${lang}"​ == "​jpn"​ ]] || [[ "​${lang}"​ == "​jp"​ ]]; then
  language="​Japonais"​  language="​Japonais"​
  languageISO="​jpn"​  languageISO="​jpn"​
- + 
  elif [[ "​${lang}"​ == "​lat"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then  elif [[ "​${lang}"​ == "​lat"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then
  language="​Latin"​  language="​Latin"​
  languageISO="​lat"​  languageISO="​lat"​
 + 
  elif [[ "​${lang}"​ == "​ltz"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then  elif [[ "​${lang}"​ == "​ltz"​ ]] || [[ "​${lang}"​ == "​la"​ ]]; then
  language="​Luxembourgeois"​  language="​Luxembourgeois"​
  languageISO="​ltz"​  languageISO="​ltz"​
- + 
  elif [[ "​${lang}"​ == "​dut"​ ]] || [[ "​${lang}"​ == "​nld"​ ]] || [[ "​${lang}"​ == "​lb"​ ]]; then  elif [[ "​${lang}"​ == "​dut"​ ]] || [[ "​${lang}"​ == "​nld"​ ]] || [[ "​${lang}"​ == "​lb"​ ]]; then
  language="​Néerlandais"​  language="​Néerlandais"​
  languageISO="​dut"​  languageISO="​dut"​
- + 
  elif [[ "​${lang}"​ == "​nor"​ ]] || [[ "​${lang}"​ == "​no"​ ]]; then  elif [[ "​${lang}"​ == "​nor"​ ]] || [[ "​${lang}"​ == "​no"​ ]]; then
  language="​Norvégien"​  language="​Norvégien"​
  languageISO="​nor"​  languageISO="​nor"​
- + 
  elif [[ "​${lang}"​ == "​por"​ ]] || [[ "​${lang}"​ == "​pt"​ ]]; then  elif [[ "​${lang}"​ == "​por"​ ]] || [[ "​${lang}"​ == "​pt"​ ]]; then
  language="​Portugais"​  language="​Portugais"​
  languageISO="​por"​  languageISO="​por"​
- + 
  elif [[ "​${lang}"​ == "​roh"​ ]] || [[ "​${lang}"​ == "​rm"​ ]]; then  elif [[ "​${lang}"​ == "​roh"​ ]] || [[ "​${lang}"​ == "​rm"​ ]]; then
  language="​Romanche"​  language="​Romanche"​
  languageISO="​roh"​  languageISO="​roh"​
 + 
  elif [[ "​${lang}"​ == "​rus"​ ]] || [[ "​${lang}"​ == "​ru"​ ]]; then  elif [[ "​${lang}"​ == "​rus"​ ]] || [[ "​${lang}"​ == "​ru"​ ]]; then
  language="​Russe"​  language="​Russe"​
  languageISO="​rus"​  languageISO="​rus"​
 + 
  elif [[ "​${lang}"​ == "​swe"​ ]] || [[ "​${lang}"​ == "​sv"​ ]]; then  elif [[ "​${lang}"​ == "​swe"​ ]] || [[ "​${lang}"​ == "​sv"​ ]]; then
  language="​Suédois"​  language="​Suédois"​
  languageISO="​swe"​  languageISO="​swe"​
 + 
  else  else
  language="​Inconnu"​  language="​Inconnu"​
Ligne 362: Ligne 362:
 } }
 #​=========================================================================================================== #​===========================================================================================================
-function ​STREAM()+function ​STREAM_SIMPLE()
 { {
 +
 [[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​ [[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​
-cdeYadStream=() +TabYadStream=()
- +
 IFS=$'​\n'​ IFS=$'​\n'​
 +
 +
 +# Initialisation
 +nbr="​0"​
 +pourcent="​0"​
 +timeGo="​$(date +%s)"
 +
 +# Nombre de fichier
 +nbrFichier=$(awk '/./ {print}'​ <<<​ "​${fileIn}"​ | wc -l)
 +
 +# Calcul le pourcent par fichier
 +pourcentFichier=$(echo "​scale=15;​ 100/​${nbrFichier}"​ | bc)
 +
  
 for i in ${fileIn}; do for i in ${fileIn}; do
 +
 +# Titre et durée
 +#​streamFormat=$(ffprobe -i "​${i}"​ -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="​|"​)
 +#​rateTotal=$(ffmpeg -y -i "​${i}"​ 2>&1 | awk '/​Duration:/​ {printf "​%s\n"​ ,​$(NF-1)}'​)
 + 
 +# Mise en mémoire dans tableau TabYadStream
 +TabYadStream=(${TabYadStream[@]} --field="<​b>​TITRE:</​b>​ $(basename "​${i}"​)":​LBL " ")
 +
 +
 +
 + # Nom du fichier
 + fileNameExt=$(basename "​${i}"​)
 + fileName="​${fileNameExt%.*}"​
 +
 + # Envoi données vers YADPROGRESS
 + pourcent=$(echo "​scale=15;​ (${pourcent}+${pourcentFichier})"​ | bc) 
 +
 + ((nbr+=1))
 +
 + # Calcul temps restant
 + timeT="​$(date +%s)"
 + timeRemainingS=$(echo "​scale=15;​ ((${timeT}-${timeGo})*${nbrFichier}/​${nbr})-(${timeT}-${timeGo})"​ | bc | awk -F"​."​ '​{print $1}')
 + timeRemainingHMS=$(date +%T -d "​0000-01-01 ${timeRemainingS} seconds"​)
 +
 + # Envoi données à YADPROGRESS
 + echo  "​${pourcent}"​
 + echo -e "​\n#​Chargement ${nbr} fichiers sur ${nbrFichier} - Temps restant environ: ${timeRemainingHMS}"​
 +
 +
 +
 +
 +
 +
 +done
 +
 +
 +
 +
 +
 +
 +for i in "​${TabYadStream[@]}";​ do
 + echo "​$i"​ >>"​${dossierTmp}/​yadStream.txt"​
 +done
 +}
 +#​===========================================================================================================
 +function STREAM()
 +{
 +[[ -f "​${dossierTmp}/​stream.txt"​ ]] && rm "​${dossierTmp}/​stream.txt"​
 +touch "​${dossierTmp}/​yadStream.txt"​
 +TabYadStream=()
 +
 +# Initialisation
 +nbr="​0"​
 +pourcent="​0"​
 +timeGo="​$(date +%s)"
 +
 +# Nombre de fichier
 +nbrFichier=$(awk '/./ {print}'​ <<<​ "​${fileIn}"​ | wc -l)
 +
 +# Calcul le pourcent par fichier
 +pourcentFichier=$(echo "​scale=15;​ 100/​${nbrFichier}"​ | bc)
 +
 +IFS=$'​\n'​
 +
 +for iFileIn in ${fileIn}; do
  STREAMTITLE  STREAMTITLE
  STREAMVIDEO  STREAMVIDEO
  STREAMAUDIO  STREAMAUDIO
  STREAMSUBTITLE  STREAMSUBTITLE
- cdeYadStream=(${cdeYadStream[@]} --field="​ ":LBL " ") 
   
 + TabYadStream+=( --field="​ ":LBL " ")
 +
 + # Nom du fichier
 + fileNameExt=$(basename "​${iFileIn}"​)
 + fileName="​${fileNameExt%.*}"​
 +
 + # Envoi données vers YADPROGRESS
 + pourcent=$(echo "​scale=15;​ (${pourcent}+${pourcentFichier})"​ | bc) 
 +
 + ((nbr+=1))
 +
 + # Calcul temps restant
 + timeT="​$(date +%s)"
 + timeRemainingS=$(echo "​scale=15;​ ((${timeT}-${timeGo})*${nbrFichier}/​${nbr})-(${timeT}-${timeGo})"​ | bc | awk -F"​."​ '​{print $1}')
 + timeRemainingHMS=$(date +%T -d "​0000-01-01 ${timeRemainingS} seconds"​)
 +
 + # Envoi données à YADPROGRESS
 + echo  "​${pourcent}"​
 + echo -e "​\n#​Analyse ${nbr} fichiers sur ${nbrFichier} - Temps restant environ: ${timeRemainingHMS}"​
 +done 
 +
 +for i in "​${TabYadStream[@]}";​ do
 + echo "​$i"​ >>"​${dossierTmp}/​yadStream.txt"​
 done done
 } }
Ligne 382: Ligne 482:
 { {
 # Titre et durée # Titre et durée
-streamFormat=$(ffprobe -i "${i}" -hide_banner -v quiet -show_entries format=duration,​bit_rate -of csv=s="​|"​) +streamFormat=$(ffprobe -i "${iFileIn}" -hide_banner -v quiet -show_entries format=duration,​bit_rate -of csv=s="​|"​)
 durationS=$(awk -F [\|] '​{print $2}' <<<​ "​${streamFormat}"​) durationS=$(awk -F [\|] '​{print $2}' <<<​ "​${streamFormat}"​)
-durationHMS=$(date -d@"​${durationS}" ​-u +%H:%M:%S)+durationHMS=$(date ​+%T -d "0000-01-01 ​${durationS} ​seconds")
 rateTotal=$(awk -F [\|] '​{printf "%d kb/s" ,​($3/​1000)}'​ <<<​ "​${streamFormat}"​) rateTotal=$(awk -F [\|] '​{printf "%d kb/s" ,​($3/​1000)}'​ <<<​ "​${streamFormat}"​)
- +  
-# Mise en mémoire dans tableau ​cdeYadStream +# Mise en mémoire dans tableau ​TabYadStream 
-cdeYadStream=(${cdeYadStream[@]} ​--field="<​b>​TITRE:​ $(basename "${i}") - ${durationHMS} - ${rateTotal}</​b>":​LBL " ")+TabYadStream+=( --field="<​b>​TITRE:​ $(basename "${iFileIn}") - ${durationHMS} - ${rateTotal}</​b>":​LBL " ")
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function STREAMVIDEO() function STREAMVIDEO()
 { {
-streamVideo=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams v -show_entries stream=index,​codec_name,​width,​height,​r_frame_rate -of csv=s="​|"​) 
- 
 while read line; do while read line; do
- + 
  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)
  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)
Ligne 404: Ligne 501:
  fps1=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $1}')  fps1=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $1}')
  fps2=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $2}')  fps2=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​ | awk -F [\/] '​{print $2}')
- + 
  # Vérifiction si fps1 et fps2 sont des valeurs numériques  # Vérifiction si fps1 et fps2 sont des valeurs numériques
- + 
  if [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ = +([0-9]) ]]; then  if [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ = +([0-9]) ]]; then
  fps=$(echo "​${fps1} / ${fps2}"​ | bc -l | awk '​{printf "​%.3f"​ ,$1}')  fps=$(echo "​${fps1} / ${fps2}"​ | bc -l | awk '​{printf "​%.3f"​ ,$1}')
- + 
  elif [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ != +([0-9]) ]]; then  elif [[ "​${fps1}"​ = +([0-9]) ]] && [[ "​${fps2}"​ != +([0-9]) ]]; then
  fps=$(awk '​{printf "​%d"​ ,$1}' <<<​ "​${fps1}"​)  fps=$(awk '​{printf "​%d"​ ,$1}' <<<​ "​${fps1}"​)
- + 
  else  else
  fps="​N/​A"​  fps="​N/​A"​
  fi  fi
- + 
  # Type d'​image (Front, back, other)  # Type d'​image (Front, back, other)
  if [[ "​${codec}"​ == "​mjpeg"​ ]] || [[ "​${codec}"​ == "​png"​ ]]; then  if [[ "​${codec}"​ == "​mjpeg"​ ]] || [[ "​${codec}"​ == "​png"​ ]]; then
-  +  
- # Recherche numéro id depuis la map+ # Recherche ​map depuis ​numéro id
  id=$(awk -F [\:] '​{print $2}' <<<​ "​0:​${index}"​)  id=$(awk -F [\:] '​{print $2}' <<<​ "​0:​${index}"​)
  typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')  typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
- +  
- +  
- # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau ​cdeYadStream)+ # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau ​TabYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
- printf "|${i}|0:​${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|0:​${index}|VIDEO|${typeImage}|${codec}|${width}|${height}\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- cdeYadStream=(${cdeYadStream[@]} ​--field="​0:​${index} | VIDEO |${typeImage} ${codec} ${width}x${height}":​CHK "​TRUE"​) + TabYadStream+=( --field="​0:​${index} | VIDEO |${typeImage} ${codec} ${width}x${height}":​CHK "​TRUE"​)
- +
  fi  fi
- + 
  else  else
-  +  
- # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau ​cdeYadStream)+ # Mise en forme piste vidéo (envoi vers fichier tmp et envoi dans tableau ​TabYadStream)
  if [[ "​${index}"​ != ""​ ]]; then  if [[ "​${index}"​ != ""​ ]]; then
- printf "|${i}|0:​${index}|VIDEO|${codec}|${width}|${height}|${fps}\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|0:​${index}|VIDEO|${codec}|${width}|${height}|${fps}\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- cdeYadStream=(${cdeYadStream[@]} ​--field="​0:​${index} | VIDEO |${codec} ${width}x${height} ${fps} fps":​CHK "​TRUE"​) + TabYadStream+=( --field="​0:​${index} | VIDEO |${codec} ${width}x${height} ${fps} fps":​CHK "​TRUE"​)
- +
  fi  fi
  fi  fi
-  +  
- +done <<< ​$(ffprobe -i  ​"${iFileIn}" ​-hide_banner -v quiet -select_streams v -show_entries stream=index,​codec_name,​width,​height,​r_frame_rate -of csv=s="​|"​)
-  +
-done <<<​ "${streamVideo}"+
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function STREAMAUDIO() function STREAMAUDIO()
 { {
-streamAudio=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams a -show_entries stream=index,​codec_name,​sample_rate,​channel_layout,​bit_rate -show_entries stream_tags=language -of csv=s="​|"​) +while read line; do
-  +
- while read line; do+
  
- index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​) + index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​) 
- codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​) + codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​) 
- rate=$(awk -F [\|] '​{print $4}' <<<​ "​${line}"​) + rate=$(awk -F [\|] '​{print $4}' <<<​ "​${line}"​) 
- channelOut=$(awk -F [\|] '​{print $5}' <<<​ "​${line}"​) + channelOut=$(awk -F [\|] '​{print $5}' <<<​ "​${line}"​) 
- lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​) + lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)
- #​debitAudio=$(awk -F [\|] '​{print $6}' <<<​ "​${line}"​)+
  
- LANGUE + LANGUE 
-  + 
- # Affectation TRUE ou FALSE + # Affectation TRUE ou FALSE 
- if [[ "​${language}"​ == "​${langAudio}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langAudio}"​ == "​Toutes les langues"​ ]]; then + if [[ "​${language}"​ == "​${langAudio}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langAudio}"​ == "​Toutes les langues"​ ]]; then 
- bol="​TRUE"​ + bol="​TRUE"​ 
-  + 
- else + else 
- bol="​FALSE"​ + bol="​FALSE"​ 
- fi + fi 
-  + 
- # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau ​cdeYadStream+ # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau ​TabYadStream
- if [[ "​${index}"​ != ""​ ]]; then + if [[ "​${index}"​ != ""​ ]]; then 
- printf "|${i}|0:​${index}|AUDIO|${codec}|${language}|${languageISO}|${rate}|${channelOut}|\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|0:​${index}|AUDIO|${codec}|${language}|${languageISO}|${rate}|${channelOut}|\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- cdeYadStream=(${cdeYadStream[@]} ​--field="​0:​${index}| AUDIO | ${language} ${codec} ${rate} Hz ${channelOut}":​CHK "​${bol}"​) + TabYadStream+=( --field="​0:​${index}| AUDIO | ${language} ${codec} ${rate} Hz ${channelOut}":​CHK "​${bol}"​) 
-  + fi 
- fi + 
-  +done <<< ​$(ffprobe -i  ​"${iFileIn}" ​-hide_banner -v quiet -select_streams a -show_entries stream=index,​codec_name,​sample_rate,​channel_layout,​bit_rate -show_entries stream_tags=language -of csv=s="​|"​)
- done <<<​ "${streamAudio}" +
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function STREAMSUBTITLE() function STREAMSUBTITLE()
 { {
-streamSub=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams s -show_entries stream=index,​codec_name -show_entries stream_tags=language -of csv=s="​|"​) 
- 
 while read line; do while read line; do
 + 
  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)  index=$(awk -F [\|] '​{print $2}' <<<​ "​${line}"​)
  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)  codec=$(awk -F [\|] '​{print $3}' <<<​ "​${line}"​)
  lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)  lang=$(awk -F [\|] '​{print $NF}' <<<​ "​${line}"​)
 + 
  LANGUE  LANGUE
- + 
  # Affectation TRUE ou FALSE  # Affectation TRUE ou FALSE
  if [[ "​${language}"​ == "​${langSub}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langSub}"​ == "​Toutes les langues"​ ]]; then  if [[ "​${language}"​ == "​${langSub}"​ ]] || [[ "​${language}"​ == "​Inconnu"​ ]] || [[ "​${langSub}"​ == "​Toutes les langues"​ ]]; then
  bol="​TRUE"​  bol="​TRUE"​
- + 
  else  else
  bol="​FALSE"​  bol="​FALSE"​
  fi  fi
-  +  
- # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau ​cdeYadStream+ # Mise en forme piste audio (envoi vers fichier tmp et envoi dans tableau ​TabYadStream
- + 
  if [[ "​${index}"​ != ""​ ]]; then   if [[ "​${index}"​ != ""​ ]]; then
- printf "|${i}|0:​${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n"​ >> "​${dossierTmp}/​stream.txt"​ + printf "|${iFileIn}|0:​${index}|SUBTITLE|${codec}|${language}|${languageISO}|\n"​ >> "​${dossierTmp}/​stream.txt"​ 
- cdeYadStream=(${cdeYadStream[@]} ​--field="​0:​${index} | SUBTITLE | ${language} ${codec}":​CHK "​${bol}"​) + TabYadStream+=( --field="​0:​${index} | SUBTITLE | ${language} ${codec}":​CHK "​${bol}"​)
- +
  fi  fi
-  +  
-done <<<​ "${streamSub}"+done <<< ​$(ffprobe -i  ​"${iFileIn}" ​-hide_banner -v quiet -select_streams s -show_entries stream=index,​codec_name -show_entries stream_tags=language -of csv=s="​|"​)
 } }
 #​=========================================================================================================== #​===========================================================================================================
 + 
 function PROFIL() function PROFIL()
 { {
Ligne 517: Ligne 603:
  FLAC  FLAC
  conteneur="​flac"​  conteneur="​flac"​
 + 
 elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then
  VORBIS  VORBIS
  conteneur="​ogg"​  conteneur="​ogg"​
 + 
 elif [[ "​${profile}"​ = "Audio aac" ]]; then elif [[ "​${profile}"​ = "Audio aac" ]]; then
  AAC  AAC
  conteneur="​m4a"​  conteneur="​m4a"​
- + 
 elif [[ "​${profile}"​ = "Audio mp3" ]]; then elif [[ "​${profile}"​ = "Audio mp3" ]]; then
  MP3  MP3
  conteneur="​mp3"​  conteneur="​mp3"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - vorbis"​ ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - vorbis"​ ]]; then
  X264  X264
  VORBIS  VORBIS
  conteneur="​mkv"​  conteneur="​mkv"​
 + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - aac" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - aac" ]]; then
  X264  X264
  AAC  AAC
  conteneur="​mkv"​  conteneur="​mkv"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - mp3" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x264 - mp3" ]]; then
  X264  X264
  MP3  MP3
  conteneur="​mkv"​  conteneur="​mkv"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - aac" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - aac" ]]; then
  X265  X265
  AAC  AAC
  conteneur="​mkv"​  conteneur="​mkv"​
- + 
 elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - mp3" ]]; then elif [[ "​${profile}"​ = "​Vidéo mkv - x265 - mp3" ]]; then
  X265  X265
Ligne 562: Ligne 648:
 if [[ "​${quality}"​ == "​Excellente"​ ]]; then if [[ "​${quality}"​ == "​Excellente"​ ]]; then
  cdeQualityVideo=(${qVideo1[@]})  cdeQualityVideo=(${qVideo1[@]})
- + 
 elif [[ "​${quality}"​ == "​Elevée"​ ]]; then elif [[ "​${quality}"​ == "​Elevée"​ ]]; then
  cdeQualityVideo=(${qVideo2[@]})  cdeQualityVideo=(${qVideo2[@]})
- + 
 elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then
  cdeQualityVideo=(${qVideo3[@]})  cdeQualityVideo=(${qVideo3[@]})
- + 
 elif [[ "​${quality}"​ == "​Minimum"​ ]]; then elif [[ "​${quality}"​ == "​Minimum"​ ]]; then
  cdeQualityVideo=(${qVideo4[@]})  cdeQualityVideo=(${qVideo4[@]})
- + 
 elif [[ "​${quality}"​ == "​Faible"​ ]]; then elif [[ "​${quality}"​ == "​Faible"​ ]]; then
  cdeQualityVideo=(${qVideo5[@]})  cdeQualityVideo=(${qVideo5[@]})
-  + 
-fi +
-+
-#​=========================================================================================================== +
-function QUALITY_AUDIO() +
-+
-# Recherche debit total maximum du fichier source +
-rateTotal=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="​|"​ | awk -F [\|] '​{printf "​%d"​ ,​($2/​1000)}'​) +
-  +
-# Commande selon la qualité +
-if [[ "​${cAudio}"​ = "​copy"​ ]] || [[ "​${cAudio}"​ == "​flac"​ ]]; then +
- cdeQualityAudio=() +
- +
-elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then +
- +
- if [[ "​${quality}"​ == "​Excellente"​ ]] && [[ "​${rateTotal}"​ -ge "​320"​ ]]; then +
- cdeQualityAudio=(${qAudio1[@]}) +
- +
- elif [[ "​${quality}"​ == "​Elevée"​ ]] && [[ "​${rateTotal}"​ -ge "​256"​ ]]; then +
- cdeQualityAudio=(${qAudio2[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Moyenne"​ ]] && [[ "​${rateTotal}"​ -ge "​192"​ ]]; then +
- cdeQualityAudio=(${qAudio3[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Minimum"​ ]] && [[ "​${rateTotal}"​ -ge "​128"​ ]]; then +
- cdeQualityAudio=(${qAudio4[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Faible"​ ]] && [[ "​${rateTotal}"​ -ge "​64"​ ]]; then +
- cdeQualityAudio=(${qAudio5[@]}) +
-  +
- else +
-  +
- if [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then +
- cAudio="​copy"​ +
- cdeQualityAudio=() +
- +
- else +
- cdeQualityAudio=(-b:​a "​${rateTotal}k"​) +
-  +
- fi +
- +
- fi +
-  +
-elif [[ "​${typeRate}"​ == "​VBR"​ ]]; then +
- +
- if [[ "​${quality}"​ == "​Excellente"​ ]]; then +
- cdeQualityAudio=(${qAudio1[@]}) +
- +
- elif [[ "​${quality}"​ == "​Elevée"​ ]]; then +
- cdeQualityAudio=(${qAudio2[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then +
- cdeQualityAudio=(${qAudio3[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Minimum"​ ]]; then +
- cdeQualityAudio=(${qAudio4[@]}) +
-  +
- elif [[ "​${quality}"​ == "​Faible"​ ]]; then +
- cdeQualityAudio=(${qAudio5[@]}) +
-  +
- fi+
 fi fi
 } }
Ligne 644: Ligne 670:
 else else
  cVideo="​libx265"​  cVideo="​libx265"​
- + 
  qVideo1=(-crf 18 -preset slow)  qVideo1=(-crf 18 -preset slow)
  qVideo2=(-crf 24 -preset slow)  qVideo2=(-crf 24 -preset slow)
Ligne 651: Ligne 677:
  qVideo5=(-crf 42 -preset ultrafast)   qVideo5=(-crf 42 -preset ultrafast)
 fi fi
- +  
 + 
 } }
 #​=========================================================================================================== #​===========================================================================================================
Ligne 661: Ligne 687:
 else else
  cVideo="​libx264"​  cVideo="​libx264"​
 + 
  qVideo1=(-crf 18 -preset slow)  qVideo1=(-crf 18 -preset slow)
  qVideo2=(-crf 24 -preset slow)  qVideo2=(-crf 24 -preset slow)
Ligne 667: Ligne 693:
  qVideo4=(-crf 36 -preset veryfast)  qVideo4=(-crf 36 -preset veryfast)
  qVideo5=(-crf 42 -preset ultrafast)  qVideo5=(-crf 42 -preset ultrafast)
 + 
 fi  fi
 } }
Ligne 675: Ligne 701:
 if [[ "​${codecAudioIn}"​ = "​flac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​flac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  cAudio="​flac"​  cAudio="​flac"​
Ligne 685: Ligne 711:
 if [[ "​${codecAudioIn}"​ = "​vorbis"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​vorbis"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  codecAudioOut="​vorbis"​  codecAudioOut="​vorbis"​
  cAudio="​libvorbis"​  cAudio="​libvorbis"​
- + 
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
  qAudio1=(-qscale:​a 10)  qAudio1=(-qscale:​a 10)
Ligne 696: Ligne 722:
  qAudio4=(-qscale:​a 4)  qAudio4=(-qscale:​a 4)
  qAudio5=(-qscale:​a 0)  qAudio5=(-qscale:​a 0)
 + 
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
  qAudio2=(-b:​a 256k)  qAudio2=(-b:​a 256k)
- qAudio3=(-b:​a ​192k)+ qAudio3=(-b:​a ​160k)
  qAudio4=(-b:​a 128k)  qAudio4=(-b:​a 128k)
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
  fi  fi
 + 
 fi  fi
 } }
Ligne 712: Ligne 738:
 if [[ "​${codecAudioIn}"​ = "​aac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​aac"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  codecAudioOut="​aac"​  codecAudioOut="​aac"​
  cAudio="​aac"​  cAudio="​aac"​
 + 
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
- qAudio1=(-q:​a ​0+ qAudio1=(-q:​a ​2
- qAudio2=(-q:​a ​2+ qAudio2=(-q:​a ​1.5
- qAudio3=(-q:​a ​5+ qAudio3=(-q:​a ​1
- qAudio4=(-q:​a 7) + qAudio4=(-q:​a ​0.7) 
- qAudio5=(-q:​a ​9+ qAudio5=(-q:​a ​0.2
 + 
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
  qAudio2=(-b:​a 256k)  qAudio2=(-b:​a 256k)
- qAudio3=(-b:​a ​192k)+ qAudio3=(-b:​a ​160k)
  qAudio4=(-b:​a 128k)  qAudio4=(-b:​a 128k)
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
  fi  fi
 + 
 fi fi
 } }
Ligne 739: Ligne 765:
 if [[ "​${codecAudioIn}"​ = "​mp3"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then if [[ "​${codecAudioIn}"​ = "​mp3"​ ]] && [[ "​${nocopy}"​ = "​TRUE"​ ]]; then
  cAudio="​copy"​  cAudio="​copy"​
- + 
 else else
  codecAudioOut="​mp3"​  codecAudioOut="​mp3"​
  cAudio="​libmp3lame"​  cAudio="​libmp3lame"​
 + 
  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then  if [[ "​${typeRate}"​ == "​VBR"​ ]]; then
  qAudio1=(-q:​a 0)  qAudio1=(-q:​a 0)
- qAudio2=(-q:​a ​2+ qAudio2=(-q:​a ​1
- qAudio3=(-q:​a ​5)+ qAudio3=(-q:​a ​4)
  qAudio4=(-q:​a 7)  qAudio4=(-q:​a 7)
  qAudio5=(-q:​a 9)  qAudio5=(-q:​a 9)
- + 
  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then  elif [[ "​${typeRate}"​ == "​CBR"​ ]]; then
  qAudio1=(-b:​a 320k)  qAudio1=(-b:​a 320k)
  qAudio2=(-b:​a 256k)  qAudio2=(-b:​a 256k)
- qAudio3=(-b:​a ​192k)+ qAudio3=(-b:​a ​160k)
  qAudio4=(-b:​a 128k)  qAudio4=(-b:​a 128k)
  qAudio5=(-b:​a 64k)  qAudio5=(-b:​a 64k)
Ligne 760: Ligne 786:
 fi fi
 } }
 +function FFMPEG_SIMPLE
 +{
 +
 +
 +
 +IFS=$'​\n'​
 + 
 +for iFileIn in ${fileIn}; do
 +
 + # Initialisation commandes
 + cdeVideo=()
 + cdeAudio=()
 + cdeSub=()
 + 
 + # Nom fichier source
 + fileNameExtension=$(basename "​${iFileIn}"​)
 + fileName="​${fileNameExtension%.*}"​
 + extension="​${fileNameExtension##​*.}"​
 +
 +
 +
 + STREAMAUDIO
 +
 +
 +cat "​${dossierTmp}/​stream.txt"​
 +
 +
 +exit
 +
 +
 +
 +
 +
 +
 +done
 +}
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 +
 #​=========================================================================================================== #​===========================================================================================================
 function FFMPEG() function FFMPEG()
 { {
 IFS=$'​\n'​ IFS=$'​\n'​
- 
 for iFileIn in ${fileIn}; do for iFileIn in ${fileIn}; do
- +
  # Initialisation commandes  # Initialisation commandes
  cdeVideo=()  cdeVideo=()
  cdeAudio=()  cdeAudio=()
  cdeSub=()  cdeSub=()
- +
  # Nom fichier source  # Nom fichier source
  fileNameExtension=$(basename "​${iFileIn}"​)  fileNameExtension=$(basename "​${iFileIn}"​)
  fileName="​${fileNameExtension%.*}"​  fileName="​${fileNameExtension%.*}"​
  extension="​${fileNameExtension##​*.}"​  extension="​${fileNameExtension##​*.}"​
- +
  # Recherche map  # Recherche map
- mapVideo=$(awk -F [\|] '{if ($4 ~ /VIDEO&& ​/'${fileName}'/​) {printf "%s\n" ,$3}}' <<<​ "​${stream}"​) + mapVideo=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{if ($4 == "VIDEO" ​&& $2 == iFileIn) {printf "​%s"​ ,$3}}' <<<​ "​${stream}"​) 
- mapAudio=$(awk -F [\|] '{if ($4 ~ /AUDIO&& ​/'${fileName}'/​) {printf "%s\n" ,$3}}' <<<​ "​${stream}"​) + mapAudio=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{if ($4 == "AUDIO" ​&& $2 == iFileIn) {printf "​%s"​ ,$3}}' <<<​ "​${stream}"​) 
- mapSub=$(awk -F [\|] '{if ($4 ~ /SUBTITLE&& ​/'${fileName}'/​) {printf "%s\n" ,$3}}' <<<​ "​${stream}"​) + mapSub=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}" ​-F [\|] '{if ($4 == "SUBTITLE" ​&& $2 == iFileIn) {printf "​%s"​ ,$3}}' <<<​ "​${stream}"​) 
- +
  echo "​=============================================="​  echo "​=============================================="​
  echo " ​ iFileIn: ${iFileIn}"​  echo " ​ iFileIn: ${iFileIn}"​
Ligne 788: Ligne 863:
  echo " mapAudio: ${mapAudio}"​  echo " mapAudio: ${mapAudio}"​
  echo " ​  ​mapSub:​ ${mapSub}"​  echo " ​  ​mapSub:​ ${mapSub}"​
- +
  # Metadonnée  # Metadonnée
  if [[ "​${metadata}"​ == "​TRUE"​ ]]; then  if [[ "​${metadata}"​ == "​TRUE"​ ]]; then
Ligne 795: Ligne 870:
  cdeMetadata=()  cdeMetadata=()
  fi  fi
- +
  FFMPEG_VIDEO  FFMPEG_VIDEO
  FFMPEG_AUDIO  FFMPEG_AUDIO
  FFMPEG_OUT  FFMPEG_OUT
-  +
-  +
- +
  # Conversion fichier  # Conversion fichier
- ffmpeg -y -i "​${iFileIn}"​ -loglevel debug "​${cdeMetadata[@]}"​ "​${cdeVideo[@]}"​ "​${cdeAudio[@]}"​ "​${dirOut}/​${fileName}.${conteneur}"​ + ffmpeg -y -i "​${iFileIn}"​ -loglevel debug "​${cdeMetadata[@]}"​ "​${cdeVideo[@]}"​ "​${cdeAudio[@]}" ​-t 10 "​${dirOut}/​${fileName}.${conteneur}"​
- +
  ffmpeg -i "​${dirOut}/​${fileName}.${conteneur}"​ ## TEST ##  ffmpeg -i "​${dirOut}/​${fileName}.${conteneur}"​ ## TEST ##
- echo "​ffmpeg -y -i "${iFileIn}" "${cdeMetadata[@]}" "${cdeVideo[@]}" "${cdeAudio[@]}" "${dirOut}/​${fileName}.${conteneur}"" ## TEST ## + 
- + echo "​=============================================="​ 
 + echo "​ffmpeg -y -i ${iFileIn} ${cdeMetadata[@]} ${cdeVideo[@]} ${cdeAudio[@]} ​-t 10 ${dirOut}/​${fileName}.${conteneur} 
 + rateTotal: ${rateTotal}" ## TEST ## 
 + echo "​=============================================="​ 
  # Image cover fichier audio  # Image cover fichier audio
  for iMapVideo in ${mapVideo};​ do  for iMapVideo in ${mapVideo};​ do
- +
  numImage="​1"​  numImage="​1"​
  
Ligne 817: Ligne 893:
  
  if [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] || [[ "​${codecVideoIn}"​ == "​png"​ ]]; then  if [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] || [[ "​${codecVideoIn}"​ == "​png"​ ]]; then
- +
  COVER  COVER
  fi  fi
- +
  done  done
- +
 done done
 +
 } }
- 
 #​=========================================================================================================== #​===========================================================================================================
 function FFMPEG_VIDEO() function FFMPEG_VIDEO()
 { {
 numFile=""​ numFile=""​
 + 
 for iMapVideo in ${mapVideo};​ do for iMapVideo in ${mapVideo};​ do
- +  
- codecVideoIn=$(awk -F [\|] '{if ($4 ~ /VIDEO&& ​/'${iMapVideo}'/ ​&& ​/'${fileName}'/​) {printf "​%s"​ ,$5}}' <<<​ "​${stream}"​) +codecVideoIn=$(awk ​-v iFileIn="​${iFileIn}"​ -v iMapVideo="​${iMapVideo}" ​-F [\|] '{if ($4 == "VIDEO" ​&& $2 == iFileIn ​&& $3 == iMapVideo){printf "​%s"​ ,$5}}' <<<​ "​${stream}"​) 
- + 
  PROFIL  PROFIL
  QUALITY_VIDEO  QUALITY_VIDEO
- + 
  if [[ "​${profile}"​ = "Audio FLAC" ]] || [[ "​${profile}"​ = "Audio vorbis"​ ]] || [[ "​${profile}"​ = "Audio aac" ]] || [[ "​${profile}"​ = "Audio mp3" ]]; then  if [[ "​${profile}"​ = "Audio FLAC" ]] || [[ "​${profile}"​ = "Audio vorbis"​ ]] || [[ "​${profile}"​ = "Audio aac" ]] || [[ "​${profile}"​ = "Audio mp3" ]]; then
  cdeVideo=(-vn)  cdeVideo=(-vn)
 + 
  else  else
  cdeVideo=(${cdeVideo[@]} -map ${iMapVideo} -c:v ${cVideo} ${cdeQualityVideo[@]})  cdeVideo=(${cdeVideo[@]} -map ${iMapVideo} -c:v ${cVideo} ${cdeQualityVideo[@]})
 + 
  fi  fi
- + 
  echo "​cdeVideo:​ ${cdeVideo[@]}"​  echo "​cdeVideo:​ ${cdeVideo[@]}"​
 + 
 done done
 } }
 +
 #​=========================================================================================================== #​===========================================================================================================
 function FFMPEG_AUDIO() function FFMPEG_AUDIO()
Ligne 855: Ligne 932:
 numAudio="​0"​ numAudio="​0"​
  
 +
 + 
 for iMapAudio in ${mapAudio};​ do for iMapAudio in ${mapAudio};​ do
 + 
 + codecAudioIn=$(awk -v iFileIn="​${iFileIn}"​ -v iMapAudio="​${iMapAudio}"​ -F [\|] '{
 +
 + if ($4 == "​AUDIO"​ && $2 == iFileIn && $3 == iMapAudio)
 + {printf "%s - %s" ,​$5,​iFileIn}
 +
 + }' <<<​ "​${stream}"​)
  
- codecAudioIn=$(awk -F [\|] '{if ($4 ~ /AUDIO/ && /'${iMapAudio}'/ && /'​${fileName}'/​) {printf ​"%s" ,$5}}' <<< ​"${stream}"+ languageISO=$(awk -v iFileIn="​${iFileIn}" ​-v iMapAudio="${iMapAudio}" -F [\|] '{ 
- languageISO=$(awk ​-F [\|] '{if ($4 ~ /AUDIO&& $3 ~ /'​${iMapAudio}'/ ​&& ​/'${fileName}'/​) {printf "​%s"​ ,$7}}' <<<​ "​${stream}"​) +  
- + if ($4 == "AUDIO" ​&& $2 == iFileIn ​&& $3 == iMapAudio) 
 + {printf "​%s"​ ,$7} 
 +  
 + }' <<<​ "​${stream}"​) 
 +  
  PROFIL  PROFIL
  QUALITY_AUDIO  QUALITY_AUDIO
Ligne 865: Ligne 955:
  cdeAudio=(${cdeAudio[@]} -map ${iMapAudio} -metadata:​s:​a:​${numAudio} language="​${languageISO}"​ -c:a ${cAudio} ${cdeQualityAudio[@]} ${channel[@]} -cutoff 20000)  cdeAudio=(${cdeAudio[@]} -map ${iMapAudio} -metadata:​s:​a:​${numAudio} language="​${languageISO}"​ -c:a ${cAudio} ${cdeQualityAudio[@]} ${channel[@]} -cutoff 20000)
  ((numAudio+=1))  ((numAudio+=1))
 + 
 done done
 } }
 #​=========================================================================================================== #​===========================================================================================================
-function ​FFMPEG_OUT()+function ​QUALITY_AUDIO()
 { {
 +# Recherche debit total maximum du fichier source
 +rateTotal=$(ffprobe -i "​${iFileIn}"​ -hide_banner -v quiet -show_entries format=bit_rate -of csv=s="​|"​ | awk -F [\|] '​{printf "​%d\n"​ ,​($2/​1000)}'​)
  
 +# Commande selon la qualité
 +if [[ "​${cAudio}"​ = "​copy"​ ]] || [[ "​${cAudio}"​ == "​flac"​ ]]; then
 + cdeQualityAudio=()
 + 
 +elif [[ "​${quality}"​ == "​Excellente"​ ]]; then
  
 + if [[ "​${rateTotal}"​ -gt "​320"​ ]]; then
 + cdeQualityAudio=(${qAudio1[@]})
 +
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 +
 +elif [[ "​${quality}"​ == "​Elevée"​ ]]; then
 + 
 + if [[ "​${rateTotal}"​ -gt "​256"​ ]]; then
 + cdeQualityAudio=(${qAudio2[@]})
 +
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 +
 +elif [[ "​${quality}"​ == "​Moyenne"​ ]]; then
 + if [[ "​${rateTotal}"​ -gt "​192"​ ]]; then
 + cdeQualityAudio=(${qAudio3[@]})
 +
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 +
 +elif [[ "​${quality}"​ == "​Minimum"​ ]]; then
 + if [[ "​${rateTotal}"​ -gt "​128"​ ]]; then
 + cdeQualityAudio=(${qAudio4[@]})
 +
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 +
 +elif [[ "​${quality}"​ == "​Faible"​ ]]; then
 + if [[ "​${rateTotal}"​ -gt "​64"​ ]]; then
 + cdeQualityAudio=(${qAudio5[@]})
 +
 + elif [[ "​${codecAudioIn}"​ == "​${codecAudioOut}"​ ]]; then
 + cAudio="​copy"​
 + cdeQualityAudio=()
 +
 + else
 + cdeQualityAudio=(-b:​a "​${rateTotal}k"​)
 + fi
 +fi
 +
 + echo "​typeRate:​ ${typeRate}"​ ## TEST
 + echo "​rateTotal:​ ${rateTotal}"​ ## TEST
 + echo "​quality:​ ${quality}"​ ## TEST
 + echo "​cdeQualityAudio:​ ${cdeQualityAudio[@]}"​ ## TEST
 +}
 +#​===========================================================================================================
 +function FFMPEG_OUT()
 +{
 # Si fichier exsite déjà ajoute "​copie"​ et numéro de la copie # Si fichier exsite déjà ajoute "​copie"​ et numéro de la copie
 nbrCopie="​1"​ nbrCopie="​1"​
- + 
 while [[ -f "​${dirOut}/​${fileName}.${conteneur}"​ ]]; do while [[ -f "​${dirOut}/​${fileName}.${conteneur}"​ ]]; do
  fileName=$(awk '​{gsub(/​ - copie.*/, ""​);​ printf "%s - copie '​$nbrCopie'"​ ,$0}' <<<​ "​${fileName}"​)  fileName=$(awk '​{gsub(/​ - copie.*/, ""​);​ printf "%s - copie '​$nbrCopie'"​ ,$0}' <<<​ "​${fileName}"​)
Ligne 881: Ligne 1043:
 done done
 } }
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
- 
 #​=========================================================================================================== #​===========================================================================================================
 function COVER() function COVER()
Ligne 897: Ligne 1048:
 # Si codecVideoIn = mjpeg --> jpeg # Si codecVideoIn = mjpeg --> jpeg
 [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] && codecVideoIn="​jpeg"​ [[ "​${codecVideoIn}"​ == "​mjpeg"​ ]] && codecVideoIn="​jpeg"​
 + 
 # Recherche numéro id depuis la map # Recherche numéro id depuis la map
 id=$(awk -F [\:] '​{print $2}' <<<​ "​${iMapVideo}"​) id=$(awk -F [\:] '​{print $2}' <<<​ "​${iMapVideo}"​)
 + 
 # Type d'​image (Front, back, other) # Type d'​image (Front, back, other)
 typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}') typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
 + 
 # Nom image cover # Nom image cover
 nameImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=title -of csv=s="​|"​ | awk -F [\|] '​{print $2}') nameImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=title -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
 + 
 if [[ "​${nameImage}"​ == ""​ ]]; then  if [[ "​${nameImage}"​ == ""​ ]]; then 
  #​nameImage="​cover_${typeImage}"​  #​nameImage="​cover_${typeImage}"​
-  +  
- + 
  if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then  if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  nameImage="​Cover front"  nameImage="​Cover front"
 + 
  elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then  elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  nameImage="​Cover back"  nameImage="​Cover back"
 + 
  else [[ "​${typeImage}"​ == "​Other"​ ]]  else [[ "​${typeImage}"​ == "​Other"​ ]]
  nameImage="​Other"​  nameImage="​Other"​
- + 
  fi  fi
 + 
 elif [[ "​${nameImage}"​ == "​${nameImageSave}"​ ]]; then elif [[ "​${nameImage}"​ == "​${nameImageSave}"​ ]]; then
  nameImage="​${nameImage}_${numImage}"​  nameImage="​${nameImage}_${numImage}"​
- + 
 fi fi
 + 
 # Sauvegarde du nom de l'​image # Sauvegarde du nom de l'​image
 nameImageSave="​${numImage}"​ nameImageSave="​${numImage}"​
 ((numImage+=1)) ((numImage+=1))
 + 
 # Extraction image du fichier source # Extraction image du fichier source
 ffmpeg -y -i "​${iFileIn}"​ -map ${iMapVideo} -an "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​ ffmpeg -y -i "​${iFileIn}"​ -map ${iMapVideo} -an "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​
 + 
 # Image cover pour fichier audio flac # Image cover pour fichier audio flac
 if [[ "​${profile}"​ = "Audio FLAC" ]]; then if [[ "​${profile}"​ = "Audio FLAC" ]]; then
  COVER_FLAC  COVER_FLAC
 + 
 # Image cover pour fichier audio vorbis # Image cover pour fichier audio vorbis
 elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then elif [[ "​${profile}"​ = "Audio vorbis"​ ]]; then
  COVER_OGG  COVER_OGG
 + 
 # Image cover pour fichier audio mp3 # Image cover pour fichier audio mp3
 elif [[ "​${profile}"​ = "Audio mp3" ]]; then elif [[ "​${profile}"​ = "Audio mp3" ]]; then
  COVER_MP3  COVER_MP3
 + 
 # Image cover pour fichier audio aac # Image cover pour fichier audio aac
 elif [[ "​${profile}"​ = "Audio aac" ]]; then elif [[ "​${profile}"​ = "Audio aac" ]]; then
  COVER_OTHER  COVER_OTHER
 fi fi
- +  
 + 
 echo "=== COVER ===" echo "=== COVER ==="
 echo "id: ${id}" echo "id: ${id}"
Ligne 960: Ligne 1111:
 function COVER_FLAC() function COVER_FLAC()
 { {
 + 
 if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  typeImage="​3"​  typeImage="​3"​
 + 
 elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  typeImage="​4"​  typeImage="​4"​
- +  
 + 
 else [[ "​${typeImage}"​ == "​Other"​ ]] else [[ "​${typeImage}"​ == "​Other"​ ]]
  typeImage="​0"​  typeImage="​0"​
- 
- 
- 
 fi fi
 + 
 # Ajout de l'​image au fichier audio # Ajout de l'​image au fichier audio
 metaflac --import-picture-from="​${typeImage}||${nameImage}||${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dirOut}/​${fileName}.${conteneur}"​ metaflac --import-picture-from="​${typeImage}||${nameImage}||${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dirOut}/​${fileName}.${conteneur}"​
- 
 } }
 #​=========================================================================================================== #​===========================================================================================================
 function COVER_OGG() function COVER_OGG()
 { {
 + 
 # Type d'​image (Front, back, other) # Type d'​image (Front, back, other)
 typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}') typeImage=$(ffprobe -i  "​${i}"​ -hide_banner -v quiet -select_streams ${id} -show_entries stream_tags=comment -of csv=s="​|"​ | awk -F [\|] '​{print $2}')
 + 
 if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  typeImage="​3"​  typeImage="​3"​
 + 
 elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  typeImage="​4"​  typeImage="​4"​
 + 
 elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then
  typeImage="​8"​  typeImage="​8"​
- + 
 elif [[ "​${typeImage}"​ == "​Other"​ ]]; then elif [[ "​${typeImage}"​ == "​Other"​ ]]; then
  typeImage="​0"​   typeImage="​0"​
- + 
 else else
  typeImage="​3"​  typeImage="​3"​
 + 
 fi fi
 + 
 # Sauvegarde données exsistantes du fichier source # Sauvegarde données exsistantes du fichier source
 vorbiscomment --list --raw "​${dirOut}/​out.${conteneur}"​ > "​${dossierTmp}/​fileSaveOgg.txt"​ vorbiscomment --list --raw "​${dirOut}/​out.${conteneur}"​ > "​${dossierTmp}/​fileSaveOgg.txt"​
 + 
 #​Suppression image exsistante #​Suppression image exsistante
 #sed -i -e '/​^metadata_block_picture/​d'​ "​${dossierTmp}/​fileSaveOgg.txt"​ #sed -i -e '/​^metadata_block_picture/​d'​ "​${dossierTmp}/​fileSaveOgg.txt"​
 + 
 # Metadata_block_picture format # Metadata_block_picture format
 #Lien: https://​xiph.org/​flac/​format.html#​metadata_block_picture #Lien: https://​xiph.org/​flac/​format.html#​metadata_block_picture
 imageMimeType=$(file -b --mime-type "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​) imageMimeType=$(file -b --mime-type "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​)
 + 
 printf "0: %.8x" "​${typeImage}"​ | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" "​${typeImage}"​ | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
 printf "0: %.8x" $(echo -n "​${imageMimeType}"​ | wc -c) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" $(echo -n "​${imageMimeType}"​ | wc -c) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
Ligne 1023: Ligne 1170:
 printf "0: %.8x" 0 | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" 0 | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
 printf "0: %.8x" $(wc -c "​${dossierTmp}/​cover.${codecVideoIn}"​ | cut --delimiter='​ ' --fields=1) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​ printf "0: %.8x" $(wc -c "​${dossierTmp}/​cover.${codecVideoIn}"​ | cut --delimiter='​ ' --fields=1) | xxd -r -g0 >> "​${dossierTmp}/​dataImage.txt"​
 + 
 #Image file #Image file
 cat "​${dossierTmp}/​cover.${codecVideoIn}"​ >> "​${dossierTmp}/​dataImage.txt"​ cat "​${dossierTmp}/​cover.${codecVideoIn}"​ >> "​${dossierTmp}/​dataImage.txt"​
 + 
 echo "​metadata_block_picture=$(base64 --wrap=0 < "​${dossierTmp}/​dataImage.txt"​)"​ >> "​${dossierTmp}/​fileSaveOgg.txt"​ echo "​metadata_block_picture=$(base64 --wrap=0 < "​${dossierTmp}/​dataImage.txt"​)"​ >> "​${dossierTmp}/​fileSaveOgg.txt"​
 + 
 #Update vorbis file comments #Update vorbis file comments
 vorbiscomment --write --raw --commentfile "​${dossierTmp}/​fileSaveOgg.txt"​ "​${dirOut}/​${fileName}.${conteneur}"​ vorbiscomment --write --raw --commentfile "​${dossierTmp}/​fileSaveOgg.txt"​ "​${dirOut}/​${fileName}.${conteneur}"​
 + 
 #Delete temp files #Delete temp files
 rm "​${dossierTmp}/​dataImage.txt"​ rm "​${dossierTmp}/​dataImage.txt"​
Ligne 1041: Ligne 1188:
 if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then if [[ "​${typeImage}"​ == "Cover (front)"​ ]]; then
  typeImage="​FRONT_COVER"​  typeImage="​FRONT_COVER"​
 + 
 elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then elif [[ "​${typeImage}"​ == "Cover (back)"​ ]]; then
  typeImage="​BACK_COVER"​  typeImage="​BACK_COVER"​
 + 
 elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then elif [[ "​${typeImage}"​ == "​Artist/​performer"​ ]]; then
  typeImage="​ARTIST"​  typeImage="​ARTIST"​
- + 
 elif [[ "​${typeImage}"​ == "​Other"​ ]]; then elif [[ "​${typeImage}"​ == "​Other"​ ]]; then
  typeImage="​OTHER"​  typeImage="​OTHER"​
 + 
 else else
  typeImage="​FRONT_COVER"​  typeImage="​FRONT_COVER"​
 + 
 fi fi
 + 
 # Ajout de l'​image au fichier audio # Ajout de l'​image au fichier audio
 eyeD3 --add-image="​${dossierTmp}/​${nameImage}.${codecVideoIn}":"​${typeImage}":"​${nameImage}"​ "​${dirOut}/​${fileName}.${conteneur}"​ eyeD3 --add-image="​${dossierTmp}/​${nameImage}.${codecVideoIn}":"​${typeImage}":"​${nameImage}"​ "​${dirOut}/​${fileName}.${conteneur}"​
Ligne 1063: Ligne 1210:
 { {
 if [[ "​${typeImage}"​ == "Cover \(back\)"​ ]]; then if [[ "​${typeImage}"​ == "Cover \(back\)"​ ]]; then
 + 
  # renommage image cover en "​cover"​  # renommage image cover en "​cover"​
  mv "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dossierTmp}/​cover.${codecVideoIn}"​  mv "​${dossierTmp}/​${nameImage}.${codecVideoIn}"​ "​${dossierTmp}/​cover.${codecVideoIn}"​
 + 
  # Ajout de l'​image au fichier audio  # Ajout de l'​image au fichier audio
  kid3-cli -c "set picture:"​${dossierTmp}/​cover.${codecVideoIn}"​ ''"​ "​${dirOut}/​${fileName}.${conteneur}"​  kid3-cli -c "set picture:"​${dossierTmp}/​cover.${codecVideoIn}"​ ''"​ "​${dirOut}/​${fileName}.${conteneur}"​
 + 
 fi fi
 } }
 + 
 #​=========================================================================================================== #​===========================================================================================================
 function MAIN() function MAIN()
Ligne 1078: Ligne 1225:
 # Chargement fichier de configurations # Chargement fichier de configurations
 . "​${fileConfig}"​ . "​${fileConfig}"​
 + 
 YADMAIN YADMAIN
 + 
 # Si aucune source sélectionnée # Si aucune source sélectionnée
 if [[ "​${status}"​ -eq "​0"​ ]] && [[ "​${fileIn}"​ == ""​ ]]; then if [[ "​${status}"​ -eq "​0"​ ]] && [[ "​${fileIn}"​ == ""​ ]]; then
  status="​4"​  status="​4"​
 fi fi
 + 
 # YADMAIN Bouton "​Quitter"​ ou "Croix fenêtre"​ # YADMAIN Bouton "​Quitter"​ ou "Croix fenêtre"​
 if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
 # YADMAIN Bouton "​Configuration par défaut"​ # YADMAIN Bouton "​Configuration par défaut"​
 elif [[ "​${status}"​ -eq "​3"​ ]]; then elif [[ "​${status}"​ -eq "​3"​ ]]; then
Ligne 1096: Ligne 1243:
  CONFIGDEFAUT  CONFIGDEFAUT
  MAIN  MAIN
 + 
 # YADMAIN Bouton "​Préférences"​ # YADMAIN Bouton "​Préférences"​
 elif [[ "​${status}"​ -eq "​2"​ ]]; then elif [[ "​${status}"​ -eq "​2"​ ]]; then
  SAVE  SAVE
  YADPREFERENCE  YADPREFERENCE
- + 
  # YADPREFERENCE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADPREFERENCE Bouton "​Quitter"​ ou "Croix fenêtre"​
  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
  # YADPREFERENCE Bouton "​Annuler"​  # YADPREFERENCE Bouton "​Annuler"​
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
- + 
  # YADPREFERENCE Bouton "​Valider"​  # YADPREFERENCE Bouton "​Valider"​
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
  SAVE  SAVE
- #STREAM 
  MAIN  MAIN
-  
  fi  fi
 + 
 # YADMAIN Bouton "​Source"​ ou aucune source sélectionnée # YADMAIN Bouton "​Source"​ ou aucune source sélectionnée
 elif [[ "​${status}"​ -eq "​4"​ ]]; then elif [[ "​${status}"​ -eq "​4"​ ]]; then
  SAVE  SAVE
  YADSOURCE  YADSOURCE
- + 
  # YADSOURCE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADSOURCE Bouton "​Quitter"​ ou "Croix fenêtre"​
  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
  # YADSOURCE Bouton "​Annuler"​  # YADSOURCE Bouton "​Annuler"​
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
- + 
 +  
 + # YADSOURCE choix "​Fichier avec analyse"​ 
 + elif [[ "​${source}"​ == "​Fichier avec analyse"​ ]]; then 
 + YADFILE 
 + 
 + # Si dossier selectionner,​ liste les fichiers contenu du dossier 
 + [[ -d "​${fileIn}"​ ]] && fileIn=$(ls "​${fileIn}"/​*) 
 +  
 + # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​ 
 + if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then 
 + rm -rf "​${dossierTmp}"​ 
 + exit 
 +  
 + # YADFILE Bouton "​Annuler"​ 
 + elif [[ "​${status}"​ -eq "​2"​ ]]; then 
 + MAIN 
 +  
 + # YADFILE Bouton "​Valider"​ 
 + elif [[ "​${status}"​ -eq "​0"​ ]]; then 
 + 
 + STREAM | YADPROGRESS 
 + 
 + IFS=$'​\n'​ 
 + TabYadStream=($(cat "​${dossierTmp}/​yadStream.txt"​)) 
 + rm "​${dossierTmp}/​yadStream.txt"​ 
 +  
 + MAIN 
 + fi 
 +
  # YADSOURCE choix "​Fichier"​  # YADSOURCE choix "​Fichier"​
  elif [[ "​${source}"​ == "​Fichier"​ ]]; then  elif [[ "​${source}"​ == "​Fichier"​ ]]; then
  YADFILE  YADFILE
- + 
 + # Si dossier selectionner,​ liste les fichiers contenu du dossier 
 + [[ -d "​${fileIn}"​ ]] && fileIn=$(ls "​${fileIn}"/​*) 
 + 
  # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​  # YADFILE Bouton "​Quitter"​ ou "Croix fenêtre"​
  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then  if [[ "​${status}"​ -eq "​1"​ ]] || [[ "​${status}"​ -eq "​252"​ ]]; then
  rm -rf "​${dossierTmp}"​  rm -rf "​${dossierTmp}"​
  exit  exit
- + 
  # YADFILE Bouton "​Annuler"​  # YADFILE Bouton "​Annuler"​
  elif [[ "​${status}"​ -eq "​2"​ ]]; then  elif [[ "​${status}"​ -eq "​2"​ ]]; then
  MAIN  MAIN
- +
  # YADFILE Bouton "​Valider"​  # YADFILE Bouton "​Valider"​
  elif [[ "​${status}"​ -eq "​0"​ ]]; then  elif [[ "​${status}"​ -eq "​0"​ ]]; then
- STREAM+ STREAM_SIMPLE | YADPROGRESS 
 + 
 + IFS=$'​\n'​ 
 + TabYadStream=($(cat "​${dossierTmp}/​yadStream.txt"​)) 
 + rm "​${dossierTmp}/​yadStream.txt"​ 
 +
  MAIN  MAIN
  fi  fi
Ligne 1155: Ligne 1337:
  elif [[ "​${source}"​ == "​DVD"​ ]]; then  elif [[ "​${source}"​ == "​DVD"​ ]]; then
  echo "​Source DVD à finir"  echo "​Source DVD à finir"
- + 
  # YADSOURCE choix "​CD"​  # YADSOURCE choix "​CD"​
  elif [[ "​${source}"​ == "​CD"​ ]]; then  elif [[ "​${source}"​ == "​CD"​ ]]; then
  echo "​Source CD à finir"  echo "​Source CD à finir"
- + 
  # YADSOURCE choix "​DDL"​  # YADSOURCE choix "​DDL"​
  elif [[ "​${source}"​ == "​DDL"​ ]]; then  elif [[ "​${source}"​ == "​DDL"​ ]]; then
  echo "​Source DDL à finir"  echo "​Source DDL à finir"
 + 
  fi  fi
  
Ligne 1169: Ligne 1351:
 elif [[ "​${status}"​ -eq "​0"​ ]]; then elif [[ "​${status}"​ -eq "​0"​ ]]; then
  SAVE  SAVE
-  + 
- # Récupération de la valeur TRUE et FALSE depuis YADMAIN et fusion avec les données du fichier stream.txt +  if [[ "​${source}"​ == "​Fichier avec analyse"​ ]]; then 
- IFS=$"​|"​ + # Récupération de la valeur TRUE et FALSE depuis YADMAIN et fusion avec les données du fichier stream.txt 
- numLine="​4"​ + IFS=$"​|"​ 
- stream=$( + numLine="​4" ​# Ligne 4 première ligne avec valeur TRUE ou FALSE 
- while read line; do + stream=$( 
- bol=$(awk 'NR == '​${numLine}'​ {printf "​%s"​ ,$1}' <<<​ "​$(printf "​%s\n"​ ${yadMain} | awk NF)"​) + while read line; do 
- printf "​${bol}${line}\n"​ + bol=$(awk 'NR == '​${numLine}'​ {printf "​%s"​ ,$1}' <<<​ "​$(printf "​%s\n"​ ${yadMain} | awk NF)"​) 
- ((numLine+=1)) + printf "​${bol}${line}\n"​ 
- done <<<​ $(cat "​${dossierTmp}/​stream.txt"​) | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}'​) + ((numLine+=1)) 
-  + done <<<​ $(cat "​${dossierTmp}/​stream.txt"​) | awk -F [\|] '{if ($1 ~ /TRUE/) {print $0}}'​) 
- SAVE + 
- FFMPEG + SAVE 
- MAIN + FFMPEG 
- + MAIN 
 + 
 + elif [[ "​${source}"​ == "​Fichier"​ ]]; then 
 + 
 + SAVE 
 + FFMPEG_SIMPLE 
 + MAIN 
 + fi
 fi fi
 } }
 #​=========================================================================================================== #​===========================================================================================================
 CONFIGURATION CONFIGURATION
 +
 +#​fileIn="/​home/​$USER/​Bureau/​0in.m4a"​ ## TEST
 +#STREAM ## TEST
 +
 MAIN MAIN
  
-</​code>​ 
  
  
 +
 +</​code>​
  

Pied de page des forums

Propulsé par FluxBB