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 →
Ceci est une ancienne révision du document !
DVD6clone peut :
Pour en savoir sur plus les outils de gestion des dépôts et paquets: les outils apt:
Nous allons éditer notre fichier /etc/apt/sources.list
3) afin d'y avoir accès.
Pour cela nous utiliserons, tout au long du tuto, l'éditeur de texte nano.
nano /etc/apt/sources.list
Puis rajoutons les lignes suivantes pour autant qu'ils ne soit pas déjà écrites :
Pour debian version Stable
# stable deb-multimedia deb http://www.deb-multimedia.org stable main non-free
Pour debian version Testing
# stable deb-multimedia deb http://www.deb-multimedia.org testing main non-free
Pour debian version Sid
# stable deb-multimedia deb http://www.deb-multimedia.org sid main non-free
Enregistrons (ctrl+o) acceptons l'enregistrement du fichier via ENTER et quittons nano (ctrl+x)
Enregistrons la clé du dépôt multimédia
apt-get install debian-keyring && gpg --keyring /usr/share/keyrings/debian-keyring.gpg -a --export 07DC563D1F41B907 |apt-key add -
Puis rafraîchissons la liste des paquets
apt-get update
Installons les dépendances nécessaire à DVD6clone.
apt-get install libdvdcss zenity lsdvd ffmpeg mplayer mencoder dvdbackup genisoimage mkvtoolnix gawk libdca0 libdvdcss2 libdvdnav4 libdvdread4 libcanberra-gtk3-module tesseract-ocr tesseract-ocr-fra tesseract-ocr-deu tesseract-ocr-eng tesseract-ocr-spa tesseract-ocr-nld tesseract-ocr-ita tesseract-ocr-por subtitleripper
Maintenant créons un fichier dans notre /home que nous appellerons “DVD6clone”
Faisons un copier/coller du script ci-dessous…
Pour finir il faut le rendre exécutable via la commande:
chmod +x /home/$USER/DVD6clone
#! /bin/bash #============================================================================================================================================ # DVD6clone-test #============================================================================================================================================ # AUTEUR: Slyfox # SIGNALER BUG : http://forum.ubuntu-fr.org/viewtopic.php?id=952101 ou slyfox@websud.ch # LICENCE: GNU General Public License v3.0 /Copieright (C) 2012 Slyfox # NAME: DVD6clone # DESCRIPTION: Lit, copie et ripe les DVD # REQUIERS: zenity lsdvd ffmpeg mplayer mencoder dvdbackup genisoimage mkvtoolnix gawk libdca0 libdvdcss2 libdvdnav4 libdvdread4 libcanberra-gtk3-module # tesseract-ocr tesseract-ocr-fra tesseract-ocr-deu tesseract-ocr-eng tesseract-ocr-spa tesseract-ocr-nld tesseract-ocr-ita # tesseract-ocr-por gstreamer0.10-plugins-ugly subtitleripper version=20140406-2 #============================================================================================================================================ # Choix lecteur DVD #============================================================================================================================================ DVDMONTE() { # Vérification si il y a un DVD dans le lecteur nbrDVDMonte=$(mount | grep -c ^"/dev/sr") echo "nbrDVDMonte=$nbrDVDMonte" # Si il y a pas de DVD dans le lecteur while [[ "$nbrDVDMonte" -eq 0 ]]; do zenity --question \ --title="DVD6clone" \ --text="Insérez un DVD dans votre lecteur et lancer le scan..." \ --ok-label="Scanner DVD" \ --cancel-label="Quitter DVD6clone" # Si Quitter DVD6clone [[ $? -eq 1 ]] && exit nbrDVDMonte=$(mount | grep -c ^"/dev/sr") done # Recherche du lecteur du DVD et du titre du DVD if [[ "$nbrDVDMonte" -eq 1 ]]; then pathDevice=$(df | awk '/^\/dev\/sr/ {print $1}') elif [[ "$nbrDVDMonte" -ge 2 ]]; then pathDevice=$(df | awk '/^\/dev\/sr/ {print $1}') pathDevice=$(zenity --list \ --radiolist \ --title="DVD6clone" \ --text="Sélectionnez un DVD" \ --ok-label="Valider choix" \ --cancel-label="Quitter DVD6clone" \ --separator=" " \ --print-column="3" \ --column "" \ --column " " \ --column " " \ $(for i in $pathDevice; do titreDVD=$(lsdvd "$i" | awk -F ": " '/^Disc Title:/ {print $2}' | tr " " "_") echo "$titreDVD $i" | awk '{print $0}' done | awk 'NR==1 {print "TRUE",$1,$2} NR!=1 {print "FALSE",$1,$2}')) [[ $? -eq 1 ]] && exit fi echo "pathDevice=$pathDevice" MENU } #============================================================================================================================================ # Vérification DVD Indentique #============================================================================================================================================ DVDIDENTIQUE() { # Vérification DVD monté if [[ $(mount | grep -c ^"/dev/sr") -eq "0" ]]; then DVDMONTE fi # Vérification si même DVD monté par comparaison du titre if [[ "$titreDVD" != $(lsdvd "$pathDevice" | awk -F ": " '/^Disc Title:/ {print $2}' | tr " " "_") ]]; then zenity --error \ --title="DVD6clone" \ --text="<big><b>ERREUR \!</b></big> <span color=\"red\">\n\nLe DVD utilisé a été remplacé par un autre ou a été ejecté... \n\nRéinitialisation du programme !</span>" DVDMONTE fi # Vérification un DVD est toujours présent dans le lecteur if [[ -z "$titreDVD" ]]; then zenity --error \ --title="DVD6clone" \ --text="<big><b>ERREUR \!</b></big> <span color=\"red\">\n\nLe DVD utilisé a été remplacé par un autre ou a été ejecté... \n\nRéinitialisation du programme !</span>" DVDMONTE fi } #============================================================================================================================================ # Vérification espace disque dur destination #============================================================================================================================================ ESPACEDESTINATION() { DVD=$(df | awk '{if ($1=="'$pathDevice'") {print $3}}') echo "DVD=$DVD" DisqueDur=$(awk '(NR!=1) {print $4}' < <(df -kP .)) echo "DisqueDur=$DisqueDur" tailleOperation=$(awk '{print $1*'$nbrOperation'}' <<< "$DVD") echo "tailleOperation=$tailleOperation" if [[ "$DisqueDur" -lt "$tailleOperation" ]]; then zenity --question \ --title="DVD6clone" \ --text "Vous disposez d'un espace du disque dur insuffisant.\nVoulez-vous continuez ?" [[ $? -eq 1 ]] && MENU fi } #============================================================================================================================================ # Scanne DVD #============================================================================================================================================ SCANDVD() { # Vérification si il y a un DVD dans le lecteur nbrDVDMonte=$(mount | grep -c ^"/dev/sr") echo "nbrDVDMonte=$nbrDVDMonte" # Si il y a pas de DVD dans le lecteur [[ "$nbrDVDMonte" -eq 0 ]] && DVDMONTE # Création dossier temporaire device=$(awk -F "/" '{print $NF}' <<< "$pathDevice") dossierTMP="/home/$USER/.dvd6clone/tmp_$device" echo "dossierTMP=$dossierTMP" [[ ! -d "$dossierTMP" ]] && mkdir -p "$dossierTMP" rm -fr "$dossierTMP"/* if [[ ! -w "$dossierTMP" ]]; then zenity --error \ --title="DVD6clone" \ --text="Veuillez vérifier vos droits.\nImpossible d'écrire dans le répertoire $dossierTMP \!" exit fi # Recherche information DVD lsdvd "$pathDevice" -as > "$dossierTMP/lsdvd.txt" # Recherche titre du DVD titreDVD=$(cat "$dossierTMP/lsdvd.txt" | awk -F ": " '/^Disc Title:/ {print $2}' | tr " " "_") echo "titreDVD=$titreDVD" # Recherche de la piste principale LongestTrack=$(cat "$dossierTMP/lsdvd.txt" | awk '/^Longest track:/ {print $3}') echo "LongestTrack=$LongestTrack" # Recherche les numéro des pistes numTitres=$(cat "$dossierTMP/lsdvd.txt" | awk '/^Title:/ {print $2}' | tr "," " ") echo "numTitres=$numTitres" # Fusion numéro titre et durée avec pistes audio et sous-titre infoDVD=$(cat "$dossierTMP/lsdvd.txt" | awk '{if ($1=="Title:") {i=$1" "$2" "$3" "$4} else if ($1=="Audio:" || $1=="Subtitle:") {print i,$1,$2,$3,$4,$5,$6,$7,$8,"Stream id:",$NF}}') # Remplacement ", : ." par un espace infoDVD=$(echo "$infoDVD" | tr "," " " | tr ":" " " | tr "." " " ) # Insertion durée en secondes et remise en forme infoDVD=$(echo "$infoDVD" | awk '{printf "%s %02d %s %02d:%02d:%02d %02d %s %d %s %s %s %s %s %s %s\n" ,$1,$2,$3,$4,$5,$6,($4*3600+$5*60+$6),$8,$9,$10,$11,$13,$14,$15,$17,$18}') # Convertion aid et sid en décimal infoDVD=$(echo "$infoDVD" | awk --non-decimal-data '{if ($6=="Audio") {printf "%s %d\n" ,$0,$NF} else if ($6=="Subtitle") {printf "%s %d\n" ,$0,($NF-32)}}') # Remplace Subtitle par sous-titre infoDVD=$(echo "$infoDVD" | awk '{if ($6=="Subtitle" && $6="Sous-titre") {print $0} else {print $0}}') # Remaniment DVDinfo pour mettre le français en première position infoDVD=$(for i in $numTitres; do echo "$infoDVD" | awk '{if ($2=='$i' && $6=="Audio" && $9=="fr") print $0}' echo "$infoDVD" | awk '{if ($2=='$i' && $6=="Audio" && $9!="fr") print $0}' echo "$infoDVD" | awk '{if ($2=='$i' && $6=="Sous-titre" && $9=="fr") print $0}' echo "$infoDVD" | awk '{if ($2=='$i' && $6=="Sous-titre" && $9!="fr") print $0}' done) echo "infoDVD=$infoDVD" } #============================================================================================================================================ # Menu #============================================================================================================================================ MENU() { SCANDVD choixMenu=$(zenity --list \ --radiolist\ --title="DVD6clone v. $version" \ --text="<b>Titre du DVD : $titreDVD \nDevice : $pathDevice</b>" \ --ok-label="Valider choix" --cancel-label="Quitter DVD6clone" \ --hide-column="2" \ --print-column="2" \ --width=800 \ --height=450 \ --column=" " \ --column=" " \ --column=" " \ "FALSE" " 1" "Visionner DVD" \ "FALSE" " 2" "Copier le DVD en entier" \ "TRUE" " 3" "Extraire un ou des titres" \ "FALSE" " 4" "Convertir un ou des sous-titres au format STR" \ "FALSE" " 5" "Éjecter le DVD" \ "FALSE" " 6" "Choix d'un autre lecteur DVD" \ "FALSE" " 7" "Voir info du DVD" \ "FALSE" " 8" "Aide et info de DVD6clone") # Si Quitter DVD6clone [[ $? -eq 1 ]] && exit # Choix case "$choixMenu" in " 1") VISIONNERDVD MENU ;; " 2") FORMATCOPIEDVD MENU ;; " 3") FORMATCOPIETITRE MENU ;; " 4") STR MENU ;; " 5") eject "$pathDevice" DVDMONTE ;; " 6") DVDMONTE ;; " 7") INFODVD MENU ;; " 8") AIDE MENU ;; *) esac } #============================================================================================================================================ # Choix titre(s) #============================================================================================================================================ ZENITYTITRE() { # Choix titre(s) à copier a=$(for i in $numTitres ; do dureeSec=$(awk '{if ($2=='$i' ){print $5}}' <<<"$infoDVD" | sort -u) duree=$(awk '{if ($2=='$i' ){print $4}}' <<<"$infoDVD" | sort -u) audio=$(awk '{if ($2=='$i' && $6=="Audio") {print $10}}' <<<"$infoDVD" | sort -u) sub=$(awk '{if ($2=='$i' && $6=="Sous-titre") {print $10}}' <<<"$infoDVD" | sort -u) if [[ $i = "$LongestTrack" ]]; then option="TRUE" else option="FALSE" fi echo "|$option|" echo "Titre: $i" echo "Durée: $duree" echo "Audio:" $audio echo "Sous-titre:" $sub echo "| $i" echo "| $duree" echo "| $dureeSec" done) OLDIFS=$IFS IFS=$'|' zenityTitres=$(zenity --list \ --checklist \ --title="DVD6clone" \ --text="<b>Choississez un ou des titres</b>\nTitre principal : $LongestTrack" \ --width=500 \ --height=800 \ --hide-column="3,4,5" \ --print-column="3,4,5" \ --column="" \ --column="" \ --column="" \ --column="" \ --column="" \ $(echo "| Tous les titres| 0 | 0 | 0 $a" )) retour="$?" IFS=$OLDIFS # Si Quitter DVD6clone [[ "$retour" -eq 1 ]] && MENU } #============================================================================================================================================ # Choix destination vidéo #============================================================================================================================================ DESTINATION_VIDEO() { # Choix nom video cheminVideo=$(zenity --file-selection \ --title="Sélectionnez le dossier de destination" \ --directory \ --filename="/home/$USER/Bureau/$titreDVD"\ --save) # Si Retour au menu [[ $? -eq 1 ]] && MENU # Suppression dossier créer par zenity "cheminVideo" rm -fr "$cheminVideo" nomVideo=$(echo "$cheminVideo" | awk -F "/" '{print $NF}') echo "nomVideo=$nomVideo" cheminDossierDVD=$(echo "$cheminVideo" | awk '{gsub(/\/'"$nomVideo"'$/,"",$0);print $0}') echo "cheminDossierDVD=$cheminDossierDVD" # Remplacement espace par "_" nomVideo=$(echo "$nomVideo" | tr " " "_") cheminVideo="$cheminDossierDVD/$nomVideo" echo "nomVideo=$nomVideo" echo "cheminVideo=$cheminVideo" # Contrôle si vidéo exsist déjà [[ -f "$dossierTMP/controle_fichier.txt" ]] && rm "$dossierTMP/controle_fichier.txt" for i in $titres; do [[ -f "$cheminDossierDVD/$nomVideo-Titre-$i.$typeVideo" ]] && echo "$cheminDossierDVD/$nomVideo-Titre-$i.$typeVideo" >> "$dossierTMP/controle_fichier.txt" done if [[ -s "$dossierTMP/controle_fichier.txt" ]]; then zenity --question \ --text="Vidéo(s) exsistante(s) :\n$(cat "$dossierTMP/controle_fichier.txt")\n\nVoulez-vous vraiment continuer et supprimer cette ou ces vidéo(s) ?" [[ $? -eq "1" ]] && DESTINATION_VIDEO fi } #============================================================================================================================================ # Visionner le DVD #============================================================================================================================================ VISIONNERDVD() { # Contrôle DVD DVDIDENTIQUE # Choix titre(s) à copier ZENITYTITRE zenityTitres=$(echo "$zenityTitres" | tr "|" " " | xargs -n 3) echo "zenityTitres=$zenityTitres" titre=$(echo "$zenityTitres" | awk '{print $1}') echo "titre=$titre" if [[ "$titre" -eq "0" ]]; then # Contrôle DVD DVDIDENTIQUE zenity --info \ --title="Mplayer contrôle" \ --text="\n <span color=\"red\">Molette de la souris</span> <span color=\"red\">Pavé directionnel\tAvance ou recule la vidéo</span> <span color=\"blue\">ESPACE\t\t\tPause (autre appui reprend la lecture)</span> <span color=\"red\">m\t\t\t\tCoupe le son (mute)</span> <span color=\"blue\">f\t\t\t\tBascule en mode plein-écran</span> <span color=\"red\">#\t\t\t\tSélection des pistes audio</span> <span color=\"blue\">v\t\t\t\tBascule l'affichage des sous-titres</span> <span color=\"red\">j\t\t\t\tSélection des sous-titres</span> <span color=\"blue\">5\t\t\t\tMenu principal</span>" & pidZenityInfoMplayer=$! # Lancement de Mplayer mplayer -dvd-device "$pathDevice" -mouse-movements dvdnav:// -sid "999" & pidMplayer=$! wait "$pidMplayer" kill "$pidZenityInfoMplayer" # Si Retour au menu [[ $? -eq 1 ]] && MENU else # Contrôle DVD DVDIDENTIQUE aid=$(zenity --list \ --radiolist \ --width=500 \ --height=800 \ --title="DVD6clone" \ --text="<b>Choississez une piste audio</b>" \ --ok-label="Valider choix" \ --cancel-label="Retour au menu" \ --separator=" " \ --hide-column="2,3,4,5,6,7,8,9,10,12,14,15" \ --print-column="16" \ --column=" " \ --column=" " \ --column="Titre" \ --column=" " \ --column="Durée" \ --column=" " \ --column="Piste" \ --column=" " \ --column=" " \ --column=" " \ --column="Langue" \ --column=" " \ --column="Format" \ --column=" " \ --column=" " \ --column="ID piste" \ $(echo "$infoDVD" | awk '{if ($2=='$titre' && $6=="Audio") {print $0}}' | awk '{if (NR==1) {print "TRUE",$0} else if (NR!=1) {print "FALSE",$0}}' | sort -k 10,10)) # Si Quitter DVD6clone [[ $? -eq 1 ]] && MENU echo "aid=$aid" # Contrôle DVD DVDIDENTIQUE sid=$(zenity --list \ --radiolist \ --width=500 \ --height=800 \ --title="DVD6clone" \ --text="<b>Choississez un sous-titre</b>" \ --ok-label="Valider choix" \ --cancel-label="Retour au menu" \ --separator=" " \ --hide-column="2,3,4,5,6,7,8,9,10,12,14,15" \ --print-column="16" \ --column=" " \ --column="Titre" \ --column=" " \ --column=" " \ --column="Durée" \ --column=" " \ --column=" " \ --column=" " \ --column=" " \ --column=" " \ --column="Langue" \ --column=" " \ --column="Format" \ --column=" " \ --column=" " \ --column="ID piste" \ $(echo "$infoDVD" | awk '{if ($2=='$titre' && $6=="Sous-titre") {print $0}}' | awk 'BEGIN {print "TRUE . . . . . . . . . Aucun . . . . 999"} {print "False",$0}' | sort -k 10,10)) # Si Quitter DVD6clone [[ $? -eq 1 ]] && MENU echo "sid=$sid" zenity --info \ --title="Mplayer contrôle" \ --text="\n <span color=\"red\">Molette de la souris</span> <span color=\"red\">Pavé directionnel\tAvance ou recule la vidéo</span> <span color=\"blue\">ESPACE\t\t\tPause (autre appui reprend la lecture)</span> <span color=\"red\">m\t\t\t\tCoupe le son (mute)</span> <span color=\"blue\">f\t\t\t\tBascule en mode plein-écran</span> <span color=\"red\">#\t\t\t\tSélection des pistes audio</span> <span color=\"blue\">v\t\t\t\tBascule l'affichage des sous-titres</span> <span color=\"red\">j\t\t\t\tSélection des sous-titres</span> <span color=\"blue\">5\t\t\t\tMenu principal</span>" & pidZenityInfoMplayer=$! # Lancement de Mplayer mplayer -dvd-device "$pathDevice" -mouse-movements dvdnav://"$titre" -aid "$aid" -sid "$sid" & pidMplayer=$! wait "$pidMplayer" kill "$pidZenityInfoMplayer" # Si Retour au menu [[ $? -eq 1 ]] && MENU fi } #============================================================================================================================================ # Choix format de sortie #============================================================================================================================================ FORMATCOPIEDVD() { choixFormat=$(zenity --list \ --radiolist\ --title="DVD6clone" \ --text="<b>Sélectionnez un format</b>" \ --ok-label="Valider choix" --cancel-label="Retour au menu" \ --hide-column="2" \ --print-column="2" \ --width=800 \ --height=450 \ --column=" " \ --column=" " \ --column=" " \ "TRUE" " 1" "Dossier (VIDEO_TS et AUDIO_TS)" \ "FALSE" " 2" "Image ISO") # Choix case "$choixFormat" in " 1") DVDBACKUP ;; " 2") ISO ;; *) esac } #============================================================================================================================================ # Copie du DVD dans dossier #============================================================================================================================================ DVDBACKUP() { # Choix nom video cheminDossierDVD=$(zenity --file-selection \ --title="Sélectionnez le dossier de destination" \ --directory \ --filename="/home/$USER/Bureau/$titreDVD"\ --save) # Si Retour au menu [[ $? -eq 1 ]] && MENU # Suppression dossier créer par zenity "cheminVideo" rm -fr "$cheminDossierDVD" nomDossierDVD=$(echo "$cheminDossierDVD" | awk -F "/" '{print $NF}') echo "nomDossierDVD=$nomDossierDVD" cheminDossierDVD=$(echo "$cheminDossierDVD" | awk '{gsub(/\/'"$nomDossierDVD"'$/,"",$0);print $0}') echo "cheminDossierDVD=$cheminDossierDVD" dossierMedia=$(df | awk '$1=="'$pathDevice'" {print $NF}') echo "dossierMedia=$dossierMedia" tailleDVD=$(du -cm "$dossierMedia" | grep "total" | awk '{printf "%d" ,$1}') echo "tailleDVD=$tailleDVD" # Vérification espace disque dur destination nbrOperation="1" ESPACEDESTINATION # Remplacement espace par "_" nomDossierDVD=$(echo "$nomDossierDVD" | tr " " "_") tempsStart="$(date '+%s')" dvdbackup -p -v -M -i "$pathDevice" -o "$cheminDossierDVD" -n "$nomDossierDVD" 2>&1 | awk -v nomDossierDVD="$nomDossierDVD" \ -v cheminDossierDVD="$cheminDossierDVD" \ -v tempsStart="$tempsStart" \ -v nbrOperation="$nbrOperation" \ -v tailleDVD="$tailleDVD" \ -v titreDVD="$titreDVD" \ -vRS='\r' \ -F [:%] '/Copie en cours Titre/ { { a=("du -cm '$cheminDossierDVD/$nomDossierDVD' | grep total | cut -f1") a|getline tailleCopier=$0 close(a) } {pourcentDvdbackup=(tailleCopier*100)/tailleDVD} {tempsActuel = strftime ("%s")}; {tailleCopierhumain = tailleDVDhumain*pourcentDvdbackup/100} ; {pourcentZenity = (pourcentDvdbackup/nbrOperation)+0.1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; if (pourcentZenity<1) {printf "\n#Copie du DVD en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Taille copiée : %d / %d Mo\\n" ,tailleCopier,tailleDVD printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "Veuillez patienter..." } else {printf "\n%d\n" ,pourcentZenity printf "\n#Copie du DVD en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Taille copiée : %d / %d Mo\\n" ,tailleCopier,tailleDVD printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity}; fflush();}' | awk '!x[$0]++;fflush();' | zenity --progress \ --title="DVD6clone" \ --width=400 \ --height=250 \ --cancel-label="Annuler et retour au menu" \ --auto-close # Si Annuler retour au menu [[ $? -eq 1 ]] && MENU mkdir "$cheminDossierDVD/$nomDossierDVD"/AUDIO_TS # Signal sononor aplay /usr/share/dvd6clone/dvd6clone_sound.wav # Message opération terminée zenity --info \ --title="DVD6clone" \ --text="<big><b>Terminé !</b></big> \n<b>Chemin copie(s)</b>\n<span color=\"blue\">"$cheminDossierDVD/$nomDossierDVD"</span>" } #============================================================================================================================================ # Copie du DVD en ISO #============================================================================================================================================ ISO() { # Choix nom video cheminDossierDVD=$(zenity --file-selection \ --title="Sélectionnez le dossier de destination" \ --directory \ --filename="/home/$USER/Bureau/$titreDVD"\ --save) # Si Retour au menu [[ $? -eq 1 ]] && MENU # Suppression dossier créer par zenity "cheminVideo" rm -fr "$cheminDossierDVD" nomDossierDVD=$(echo "$cheminDossierDVD" | awk -F "/" '{print $NF}') echo "nomDossierDVD=$nomDossierDVD" cheminDossierDVD=$(echo "$cheminDossierDVD" | awk '{gsub(/\/'"$nomDossierDVD"'$/,"",$0);print $0}') echo "cheminDossierDVD=$cheminDossierDVD" dossierMedia=$(df | awk '$1=="'$pathDevice'" {print $NF}') echo "dossierMedia=$dossierMedia" tailleDVD=$(du -cm "$dossierMedia" | grep "total" | awk '{printf "%d" ,$1}') echo "tailleDVD=$tailleDVD" # Remplacement espace par "_" nomDossierDVD=$(echo "$nomDossierDVD" | tr " " "_") # Vérification espace disque dur destination nbrOperation="2" ESPACEDESTINATION tempsStart="$(date '+%s')" { dvdbackup -p -v -M -i "$pathDevice" -o "$dossierTMP" -n "$nomDossierDVD" 2>&1 | awk -v nomDossierDVD="$nomDossierDVD" \ -v cheminDossierDVD="$cheminDossierDVD" \ -v tempsStart="$tempsStart" \ -v nbrOperation="$nbrOperation" \ -v tailleDVD="$tailleDVD" \ -v titreDVD="$titreDVD" \ -vRS='\r' \ -F [:%] '/Copie en cours Titre/ { { a=("du -cm '$dossierTMP/$nomDossierDVD' | grep total | cut -f1") a|getline tailleCopier=$0 close(a) } {pourcentDvdbackup=(tailleCopier*100)/tailleDVD} {tempsActuel = strftime ("%s")}; {tailleCopierhumain = tailleDVDhumain*pourcentDvdbackup/100} ; {pourcentZenity = (pourcentDvdbackup/nbrOperation)+0.1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; if (pourcentZenity<1) {printf "\n#Copie du DVD en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Taille copiée : %d / %d Mo\\n" ,tailleCopier,tailleDVD printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "Veuillez patienter..." } else {printf "\n%d\n" ,pourcentZenity printf "\n#Copie du DVD en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Taille copiée : %d / %d Mo\\n" ,tailleCopier,tailleDVD printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity}; fflush();}' | awk '!x[$0]++;fflush();' mkdir "$dossierTMP/$nomDossierDVD"/AUDIO_TS # Création image ISO tailleCopier=$(du -cm "$dossierTMP/$nomDossierDVD" | grep total | cut -f1) [[ "$tailleCopier" -ge "$tailleDVD" ]] && genisoimage -v -r -J -o "$cheminDossierDVD/$nomDossierDVD.iso" "$dossierTMP/$nomDossierDVD" 2>&1 | awk -v tempsStart="$tempsStart" \ -v nbrOperation="$nbrOperation" \ -v tailleDVD="$tailleDVD" \ -v titreDVD="$titreDVD" \ -vRS='\n' \ -F "." '/% done,/ { {pourcentGenisoimage = $1} ; {tempsActuel = strftime ("%s")}; {tailleCopier = tailleDVD*pourcentGenisoimage/100} ; {pourcentZenity = (pourcentGenisoimage/nbrOperation)+50} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Création image ISO du DVD...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Taille ISO créée : %d/%d\\n" ,tailleCopier,tailleDVD printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' | awk '!x[$0]++;fflush();' } | zenity --progress \ --title="DVD6clone" \ --width=400 \ --height=250 \ --cancel-label="Annuler et retour au menu" \ --auto-close # Si Annuler retour au menu [[ $? -eq 1 ]] && MENU # Signal sononor aplay /usr/share/dvd6clone/dvd6clone_sound.wav # Message opération terminée zenity --info \ --title="DVD6clone" \ --text="<big><b>Terminé !</b></big> \n<b>Chemin copie(s)</b>\n<span color=\"blue\">"$cheminDossierDVD/$nomDossierDVD.iso"</span>" } #============================================================================================================================================ # Choix format de sortie #============================================================================================================================================ FORMATCOPIETITRE() { choixFormat=$(zenity --list \ --radiolist\ --title="DVD6clone" \ --text="<b>Sélectionnez un format</b>" \ --ok-label="Valider choix" --cancel-label="Retour au menu" \ --hide-column="2" \ --print-column="2" \ --width=800 \ --height=450 \ --column=" " \ --column=" " \ --column=" " \ "TRUE" " 1" "Format VOB - Vidéo copie - Audio copie - sous-titrage copie" \ "FALSE" " 2" "Format MKV - Video copie - Audio copie - sous-titrage copie" \ "FALSE" " 3" "Format MKV - Video x264 - Audio ac3 - sous-titrage copie") # Choix case "$choixFormat" in " 1") VOB ;; " 2") MKV ;; " 3") X264 ;; *) esac } #============================================================================================================================================ # Format VOB #============================================================================================================================================ VOB() { # Contrôle DVD DVDIDENTIQUE # Choix titre(s) à copier ZENITYTITRE zenityTitres=$(echo "$zenityTitres" | tr "|" " " | xargs -n 3) echo "zenityTitres=$zenityTitres" titres=$(echo "$zenityTitres" | awk '{print $1}') echo "titres=$titres" # Si selectionné tous les titres if [[ $(echo $titres | awk '{print $1}') -eq "0" ]]; then titres="$numTitres" zenityTitres=$(echo "$infoDVD" | awk '{print $2,$4,$5}' | sort -u) fi echo "titres=$titres" echo "zenityTitres=$zenityTitres" dureeOperationTotal=$(echo "$zenityTitres" | awk '{dureeOperationTotal = dureeOperationTotal + $3} END {print dureeOperationTotal}') echo "dureeOperationTotal=$dureeOperationTotal" # Destination vidéo typeVideo="vob" DESTINATION_VIDEO # Vérification espace disque dur destination nbrOperation="2" ESPACEDESTINATION # Copie titre(s) tempsCopier="1" dureeOperationEffectue="1" tempsStart="$(date '+%s')" for i in $titres; do dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') mplayer -dvd-device "$pathDevice" -dumpstream dvdnav://$i -dumpfile "$cheminVideo-Titre-$i.vob" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -vRS='\r' \ -F [~.] \ '/%)/ {{pourcentMplayer = $2} ; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMplayer/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Ripe du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" echo "$cheminVideo-Titre-$i.vob" >> "$dossierTMP/destination.txt" done | awk '!x[$0]++;fflush();' | zenity --progress \ --title="DVD6clone" \ --width=400 \ --height=250 \ --cancel-label="Annuler et retour au menu" \ --auto-close # Si Annuler retour au menu [[ $? -eq 1 ]] && MENU # Signal sononor aplay /usr/share/dvd6clone/dvd6clone_sound.wav # Message opération terminée zenity --info \ --title="DVD6clone" \ --text="<big><b>Terminé !</b></big> \n<b>Chemin copie(s)</b>\n<span color=\"blue\">$(cat "$dossierTMP/destination.txt")</span>" } #============================================================================================================================================ # Format MKV video copie audio copie #============================================================================================================================================ MKV() { # Contrôle DVD DVDIDENTIQUE # Choix titre(s) à copier ZENITYTITRE zenityTitres=$(echo "$zenityTitres" | tr "|" " " | xargs -n 3) echo "zenityTitres=$zenityTitres" titres=$(echo "$zenityTitres" | awk '{print $1}') echo "titres=$titres" # Si selectionné tous les titres if [[ $(echo $titres | awk '{print $1}') -eq "0" ]]; then titres="$numTitres" zenityTitres=$(echo "$infoDVD" | awk '{print $2,$4,$5}' | sort -u) fi echo "titres=$titres" echo "zenityTitres=$zenityTitres" # Choix titre(s) à copier zenityAudioSub=$(zenity --list \ --checklist \ --width=600 \ --height=800 \ --title="DVD6clone" \ --text="<b>Sélectionnez le titre à copier</b>" \ --ok-label="Valider choix" \ --cancel-label="Retour au menu" \ --separator=" " \ --hide-column="2,4,6,8,9,12,14,15" \ --print-column="3,5,6,7,8,10,11,13,15,16" \ --column=" " \ --column=" " \ --column="Titre" \ --column=" " \ --column="Durée" \ --column=" " \ --column="Piste" \ --column=" " \ --column=" " \ --column=" " \ --column="Langue" \ --column=" " \ --column="Format" \ --column=" " \ --column=" " \ --column="ID piste" \ $(for i in $titres; do awk '{if ($2=='$i' && $6=="Audio" && $9=="fr") {print "TRUE",$0} else if ($2=='$i') {print "FALSE",$0}}' <<<"$infoDVD" done)) # Si Quitter DVD6clone [[ $? -eq 1 ]] && MENU zenityAudioSub=$(echo "$zenityAudioSub" | xargs -n 10) echo "zenityAudioSub=$zenityAudioSub" titres=$(echo "$zenityAudioSub" | awk '{print $1}' | sort -u) echo "titres=$titres" dureeOperationVOB=$(echo "$zenityAudioSub" | awk '{print $1,$3}' | sort -u | awk '{time = time + $2} END {printf "%d\n", time}') echo "dureeOperationVOB=$dureeOperationVOB" dureeOperationMPG=$(echo "$zenityAudioSub" | awk '{print $1,$3}' | sort -u | awk '{time = time + $2} END {printf "%d\n", time}') echo "dureeOperationMPG=$dureeOperationMPG" dureeOperationSUB=$(echo "$zenityAudioSub" | awk '{if ($4=="Sous-titre") {time = time + $3}} END {printf "%d\n", time}') echo "dureeOperationSUB=$dureeOperationSUB" dureeOperationMKV="$dureeOperationVOB" echo "dureeOperationMKV=$dureeOperationMKV" dureeOperationTotal=$(echo "$dureeOperationVOB $dureeOperationMPG $dureeOperationSUB $dureeOperationMKV" | awk '{print $1+$2+$3+$4}') echo "dureeOperationTotal=$dureeOperationTotal" # Destination vidéo typeVideo="mkv" DESTINATION_VIDEO # Vérification espace disque dur destination nbrOperation="3" ESPACEDESTINATION #Extraction chapitrage for i in $titres; do dvdxchap -t $i "$pathDevice" > "$dossierTMP/chapters-titre-$i.txt" done { # Ripe titre(s) sur disque dur tempsCopier="1" dureeOperationEffectue="1" tempsStart="$(date '+%s')" for i in $titres; do dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') mplayer -dvd-device "$pathDevice" -dumpstream dvdnav://$i -dumpfile "$dossierTMP/Titre-$i.vob" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -vRS='\r' \ -F [~.] \ '/%)/ { {pourcentMplayer = $2}; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMplayer/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Ripe du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done | awk '!x[$0]++;fflush();' # Caclul bande noir (crop) mplayer "$dossierTMP/Titre-$i.vob" -vo null -nosound -vf cropdetect > "$dossierTMP/crop-Titre-$i.txt" & pid=$! sleep 10 kill $pid crop=$(cat "$dossierTMP/crop-Titre-$i.txt" | awk -F [\(\)] '/Crop/ {print $2}' | awk 'END {print}') # Convertion format mpeg / ac3 for i in $titres; do dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') cdeVideoMap=$(ffmpeg -i "$dossierTMP/Titre-$i.vob" 2>&1 | awk -F [\ [#] '{if ($5=="Stream" && $9=="Video:") {print "-map",$7}}' | xargs -n 1000) cdeAudioMap=$(ffmpeg -i "$dossierTMP/Titre-$i.vob" 2>&1 | awk -F [\ [#] '{if ($5=="Stream" && $9=="Audio:") {print "-map",$7}}' | xargs -n 1000) ffmpeg -y -i "$dossierTMP/Titre-$i.vob" -target pal-dvd $crop $cdeVideoMap $cdeAudioMap "$dossierTMP/Titre-$i.mpg" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -vRS='\r' \ -F [:=.] \ '/^frame/ {\ {pourcentFFmpeg = (((($7*3600)+($8*60)+$9)*100)/110)} ; ; {tempsActuel = strftime ("%s")}; {tempsCopier = (($7*3600)+($8*60)+$9)} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Création vidéo MEPG du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps création du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done | awk '!x[$0]++;fflush();' # ripe sous-titre(s) dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") echo "dureeOperationEffectue=$dureeOperationEffectue" for i in $titres; do dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') sid=$(awk '$1=='$i' && $4=="Sous-titre" {print $10}' <<< "$zenityAudioSub") for sid in $sid; do mencoder "$dossierTMP/Titre-$i.vob" -nosound -ovc frameno -sid "$sid" -vobsubout "$dossierTMP/Titre-$i-sid-$sid" -vobsuboutindex 0 -o /dev/null | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -F [%\(] \ -vRS='\r' \ '/%)/ { {pourcentMencoder = $2} ; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMencoder/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Ripe du sous-titre Titre-'$i'-sid-'$sid' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du sous-titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done done | awk '!x[$0]++;fflush();' # création vidéo MKV dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") for i in $titres; do cdeVideoMKV=$(mkvmerge -i "$dossierTMP/Titre-$i.vob" | awk '$3==video {printf "-d %s -A -S -T --forced-track %s:no --track-name %d:video --display-dimensions %s:1024x576 '$dossierTMP'/Titre-'$i'.mpg" ,$3,$3,$3,$3}') cdeAudioMKV=$(echo "$zenityAudioSub" | awk '$1=='$i' && $4=="Audio" {printf " -a %d -D -S -T --forced-track %d:no --track-name %d:Audio_%s '$dossierTMP'/Titre-'$i'.mpg" ,$5,$5,$5,$7}') cdeSubMKV=$(echo "$zenityAudioSub" | awk '$1=='$i' && $4=="Sous-titre" {printf "-A -D -s 0 -T --forced-track 0:no --track-name 0:Sous-titre_%s '$dossierTMP'/Titre-'$i'-sid-%d.idx " ,$7,$10}') dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') mkvmerge -o "$cheminVideo-Titre-$i.mkv" $cdeVideoMKV $cdeAudioMKV $cdeSubMKV --chapters "$dossierTMP/chapters-titre-$i.txt" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -F [\ %] \ -vRS='\r' \ '/Progression :/ { {pourcentMkvmerge = $3} ; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMkvmerge/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Création vidéo MKV du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" echo "$cheminVideo-Titre-$i.mkv" >> "$dossierTMP/destination.txt" done | awk '!x[$0]++;fflush();' } | zenity --progress \ --title="DVD6clone" \ --width=400 \ --height=250 \ --cancel-label="Annuler et retour au menu" \ --auto-close # Si Annuler retour au menu [[ $? -eq 1 ]] && MENU # Signal sononor aplay /usr/share/dvd6clone/dvd6clone_sound.wav # Message opération terminée zenity --info \ --title="DVD6clone" \ --text="<big><b>Terminé !</b></big> \n<b>Chemin copie(s)</b>\n<span color=\"blue\">$(cat "$dossierTMP/destination.txt")</span>" } #============================================================================================================================================ # Format MKV vidéo X264 audio ac3 #============================================================================================================================================ X264() { # Contrôle DVD DVDIDENTIQUE # Choix titre(s) à copier ZENITYTITRE zenityTitres=$(echo "$zenityTitres" | tr "|" " " | xargs -n 3) echo "zenityTitres=$zenityTitres" titres=$(echo "$zenityTitres" | awk '{print $1}') echo "titres=$titres" # Si selectionné tous les titres if [[ $(echo $titres | awk '{print $1}') -eq "0" ]]; then titres="$numTitres" zenityTitres=$(echo "$infoDVD" | awk '{print $2,$4,$5}' | sort -u) fi echo "titres=$titres" echo "zenityTitres=$zenityTitres" # Choix titre(s) à copier zenityAudioSub=$(zenity --list \ --checklist \ --width=600 \ --height=800 \ --title="DVD6clone" \ --text="<b>Sélectionnez le titre à copier</b>" \ --ok-label="Valider choix" \ --cancel-label="Retour au menu" \ --separator=" " \ --hide-column="2,4,6,8,9,12,14,15" \ --print-column="3,5,6,7,8,10,11,13,15,16" \ --column=" " \ --column=" " \ --column="Titre" \ --column=" " \ --column="Durée" \ --column=" " \ --column="Piste" \ --column=" " \ --column=" " \ --column=" " \ --column="Langue" \ --column=" " \ --column="Format" \ --column=" " \ --column=" " \ --column="ID piste" \ $(for i in $titres; do awk '{if ($2=='$i' && $6=="Audio" && $9=="fr") {print "TRUE",$0} else if ($2=='$i') {print "FALSE",$0}}' <<<"$infoDVD" done)) # Si Quitter DVD6clone [[ $? -eq 1 ]] && MENU zenityAudioSub=$(echo "$zenityAudioSub" | xargs -n 10) echo "zenityAudioSub=$zenityAudioSub" titres=$(echo "$zenityAudioSub" | awk '{print $1}' | sort -u) echo "titres=$titres" dureeOperationVOB=$(echo "$zenityAudioSub" | awk '{print $1,$3}' | sort -u | awk '{time = time + $2} END {printf "%d\n", time}') echo "dureeOperationVOB=$dureeOperationVOB" dureeOperationMPG=$(echo "$zenityAudioSub" | awk '{print $1,$3}' | sort -u | awk '{time = time + $2} END {printf "%d\n", time}') echo "dureeOperationMPG=$dureeOperationMPG" dureeOperationSUB=$(echo "$zenityAudioSub" | awk '{if ($4=="Sous-titre") {time = time + $3}} END {printf "%d\n", time}') echo "dureeOperationSUB=$dureeOperationSUB" dureeOperationMKV="$dureeOperationVOB" echo "dureeOperationMKV=$dureeOperationMKV" dureeOperationTotal=$(echo "$dureeOperationVOB $dureeOperationMPG $dureeOperationSUB $dureeOperationMKV" | awk '{print $1+$2+$3+$4}') echo "dureeOperationTotal=$dureeOperationTotal" # Destination vidéo typeVideo="mkv" DESTINATION_VIDEO # Vérification espace disque dur destination nbrOperation="3" ESPACEDESTINATION # Choix qualité vidéo crf=$(zenity --scale \ --title="DVD6clone" \ --text="<b>Sélectionnez la qualité de votre nouvelle vidéo</b>\n\nPetit nombre = meilleure qualité mais plus de temps de calcul\n" \ --value=20 \ --min-value=0 \ --max-value=50 \ --ok-label="Valider choix" \ --cancel-label="Retour au menu") # Si Retour au menu [[ $? -eq 1 ]] && MENU #Extraction chapitrage for i in $titres; do dvdxchap -t $i "$pathDevice" > "$dossierTMP/chapters-titre-$i.txt" done { # Ripe titre(s) sur disque dur tempsCopier="1" dureeOperationEffectue="1" tempsStart="$(date '+%s')" for i in $titres; do dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') mplayer -dvd-device "$pathDevice" -dumpstream dvdnav://$i -dumpfile "$dossierTMP/Titre-$i.vob" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -vRS='\r' \ -F [~.] \ '/%)/ { {pourcentMplayer = $2}; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMplayer/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Ripe du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done | awk '!x[$0]++;fflush();' # Caclul bande noir (crop) mplayer "$dossierTMP/Titre-$i.vob" -vo null -nosound -vf cropdetect > "$dossierTMP/crop-Titre-$i.txt" & pid=$! sleep 10 kill $pid crop=$(cat "$dossierTMP/crop-Titre-$i.txt" | awk -F [\(\)] '/Crop/ {print $2}' | awk 'END {print}') # Convertion format x264 / ac3 for i in $titres; do dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') cdeVideoMap=$(ffmpeg -i "$dossierTMP/Titre-$i.vob" 2>&1 | awk -F [\ [#] '{if ($5=="Stream" && $9=="Video:") {print "-map",$7}}' | xargs -n 1000) cdeAudioMap=$(ffmpeg -i "$dossierTMP/Titre-$i.vob" 2>&1 | awk -F [\ [#] '{if ($5=="Stream" && $9=="Audio:") {print "-map",$7}}' | xargs -n 1000) ffmpeg -y -i "$dossierTMP/Titre-$i.vob" -threads 0 $cdeVideoMap $cdeAudioMap -vcodec libx264 -preset slow -crf $crf $crop -acodec libfaac -ar 44100 -ab 128k -ac 2 "$dossierTMP/Titre-$i.mkv" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -vRS='\r' \ -F [:=.] \ '/^frame/ {\ {pourcentFFmpeg = (((($7*3600)+($8*60)+$9)*100)/110)} ; ; {tempsActuel = strftime ("%s")}; {tempsCopier = (($7*3600)+($8*60)+$9)} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Convertion vidéo et audio du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps création du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done | awk '!x[$0]++;fflush();' # ripe sous-titre(s) dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") echo "dureeOperationEffectue=$dureeOperationEffectue" for i in $titres; do dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') sid=$(awk '$1=='$i' && $4=="Sous-titre" {print $10}' <<< "$zenityAudioSub") for sid in $sid; do mencoder "$dossierTMP/Titre-$i.vob" -nosound -ovc frameno -sid "$sid" -vobsubout "$dossierTMP/Titre-$i-sid-$sid" -vobsuboutindex 0 -o /dev/null | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -F [%\(] \ -vRS='\r' \ '/%)/ { {pourcentMencoder = $2} ; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMencoder/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Ripe du sous-titre Titre-'$i'-sid-'$sid' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du sous-titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done done | awk '!x[$0]++;fflush();' # création vidéo MKV dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") for i in $titres; do cdeVideoMKV=$(mkvmerge -i "$dossierTMP/Titre-$i.vob" | awk '$3==video {printf "-d %s -A -S -T --forced-track %s:no --track-name %d:video --display-dimensions %s:1024x576 '$dossierTMP'/Titre-'$i'.mkv" ,$3,$3,$3,$3}') cdeAudioMKV=$(echo "$zenityAudioSub" | awk '$1=='$i' && $4=="Audio" {printf " -a %d -D -S -T --forced-track %d:no --track-name %d:Audio_%s '$dossierTMP'/Titre-'$i'.mkv" ,$5,$5,$5,$7}') cdeSubMKV=$(echo "$zenityAudioSub" | awk '$1=='$i' && $4=="Sous-titre" {printf "-A -D -s 0 -T --forced-track 0:no --track-name 0:Sous-titre_%s '$dossierTMP'/Titre-'$i'-sid-%d.idx " ,$7,$10}') dureeSecTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $3}') dureeHMSTitre=$(echo "$zenityTitres" | awk '/^'$i'/ {print $2}') mkvmerge -o "$cheminVideo-Titre-$i.mkv" $cdeVideoMKV $cdeAudioMKV $cdeSubMKV --chapters "$dossierTMP/chapters-titre-$i.txt" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -F [\ %] \ -vRS='\r' \ '/Progression :/ { {pourcentMkvmerge = $3} ; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMkvmerge/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Création vidéo MKV du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" echo "$cheminVideo-Titre-$i.mkv" >> "$dossierTMP/destination.txt" done | awk '!x[$0]++;fflush();' } | zenity --progress \ --title="DVD6clone" \ --width=400 \ --height=250 \ --cancel-label="Annuler et retour au menu" \ --auto-close # Si Annuler retour au menu [[ $? -eq 1 ]] && MENU # Signal sononor aplay /usr/share/dvd6clone/dvd6clone_sound.wav # Message opération terminée zenity --info \ --title="DVD6clone" \ --text="<big><b>Terminé !</b></big> \n<b>Chemin copie(s)</b>\n<span color=\"blue\">$(cat "$dossierTMP/destination.txt")</span>" } #============================================================================================================================================ # Convertion vobsub en STR #============================================================================================================================================ STR() { # Contrôle DVD DVDIDENTIQUE # Choix titre(s) à copier ZENITYTITRE zenityTitres=$(echo "$zenityTitres" | tr "|" " " | xargs -n 3) echo "zenityTitres=$zenityTitres" titres=$(echo "$zenityTitres" | awk '{print $1}') echo "titres=$titres" # Si selectionné tous les titres if [[ $(echo $titres | awk '{print $1}') -eq "0" ]]; then titres="$numTitres" zenityTitres=$(echo "$infoDVD" | awk '{print $2,$4,$5}' | sort -u) fi echo "titres=$titres" echo "zenityTitres=$zenityTitres" # Choix titre(s) à copier zenitySub=$(zenity --list \ --checklist \ --width=500 \ --height=800 \ --title="DVD6clone" \ --text="<b>Choississez un ou des sous-titres à convertir en STR</b>" \ --ok-label="Valider choix" \ --cancel-label="Retour au menu" \ --separator=" " \ --hide-column="2,4,5,6,7,8,9,10,12,13,14,15,17" \ --print-column="3,5,6,7,8,10,11,13,16,17" \ --column=" " \ --column=" " \ --column="Titre" \ --column=" " \ --column="Durée" \ --column=" " \ --column="Piste" \ --column=" " \ --column=" " \ --column=" " \ --column="Langue" \ --column=" " \ --column="Format" \ --column=" " \ --column=" " \ --column="ID piste" \ --column=" " \ $(for i in $titres; do awk '{if ($2=='$i' && $9=="fr") {print "TRUE",$0,"fra"} else if ($2=='$i' && $9=="en") {print "FALSE",$0,"eng"} else if ($2=='$i' && $9=="de") {print "FALSE",$0,"deu"} else if ($2=='$i' && $9=="es") {print "FALSE",$0,"spa"} else if ($2=='$i' && $9=="nl") {print "FALSE",$0,"nld"} else if ($2=='$i' && $9=="it") {print "FALSE",$0,"ita"} else if ($2=='$i' && $9=="pt") {print "FALSE",$0,"por"}}' <<< "$(awk '$6=="Sous-titre" {print $0}' <<< "$infoDVD")" done)) # Si Quitter DVD6clone [[ $? -eq 1 ]] && MENU zenitySub=$(echo "$zenitySub" | xargs -n 10) echo "zenitySub=$zenitySub" titres=$(echo "$zenitySub" | awk '{print $1}' | sort -u) echo "titres=$titres" dureeOperationVOB=$(echo "$zenitySub" | awk '{print $1,$3}' | sort -u | awk '{time = time + $2} END {printf "%d\n", time}') echo "dureeOperationVOB=$dureeOperationVOB" dureeOperationSTR=$(echo "$zenitySub" | awk '{if ($4=="Sous-titre") {time = time + $3}} END {printf "%d\n", time}') echo "dureeOperationSTR=$dureeOperationSTR" dureeOperationTotal=$(echo "$dureeOperationVOB $dureeOperationSUB $dureeOperationSTR" | awk '{print $1+$2+$3}') echo "dureeOperationTotal=$dureeOperationTotal" # Destination vidéo typeVideo="str" DESTINATION_VIDEO # Création dossier PGM dossierPGM="$dossierTMP/PGM" mkdir "$dossierPGM" # Vérification espace disque dur destination nbrOperation="1" ESPACEDESTINATION { # Ripe titre(s) sur disque dur tempsCopier="1" dureeOperationEffectue="1" tempsStart="$(date '+%s')" for i in $titres; do dureeSecTitre=$(echo "$zenitySub" | awk '/^'$i'/ {print $3}' | sort -u) dureeHMSTitre=$(echo "$zenitySub" | awk '/^'$i'/ {print $2}' | sort -u) mplayer -dvd-device "$pathDevice" -dumpstream dvdnav://$i -dumpfile "$dossierTMP/Titre-$i.vob" 2>&1 | awk -v titreDVD="$titreDVD" \ -v dureeSecTitre="$dureeSecTitre" \ -v dureeHMSTitre="$dureeHMSTitre" \ -v tempsStart="$tempsStart" \ -v dureeOperationEffectue="$dureeOperationEffectue" \ -v tempsCopier="$tempsCopier" \ -v dureeOperationTotal="$dureeOperationTotal" \ -vRS='\r' \ -F [~.] \ '/%)/ { {pourcentMplayer = $2} ; {tempsActuel = strftime ("%s")}; {tempsCopier = dureeSecTitre*pourcentMplayer/100} ; {pourcentZenity = (100*(tempsCopier+dureeOperationEffectue))/dureeOperationTotal} ; if (pourcentZenity<1) {pourcentZenity=1} ; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Ripe du titre '$i' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Temps ripe du titre : %02d:%02d:%02d / %s \\n\\n", int(tempsCopier/3600), int(tempsCopier/60%60), tempsCopier%60 , dureeHMSTitre printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %" , pourcentZenity ; fflush();}}' dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" done | awk '!x[$0]++;fflush();' # Opération transformation Vobsub en STR for i in $titres; do sid=$(awk '$1=='$i' && $4=="Sous-titre" {print $9}' <<< "$zenitySub") for sid in $sid; do # Création dossier extraction sous-titre mkdir "$dossierPGM/Titre-$i-sid-$sid" cd "$dossierPGM/Titre-$i-sid-$sid" # extraction soustitre tcextract -i "$dossierTMP/Titre-$i.vob" -x ps1 -a $((0x20 + $sid)) > "vobsub-Titre-$i-sid-$sid" # Extraction soustitres en images PGM subtitle2pgm -i "vobsub-Titre-$i-sid-$sid" -o "vobsub-Titre-$i-sid-$sid" -c 0,0,255,255 # Liste fichiers PGM fichierPGM=$(ls | grep ".pgm$") nbrFichiersPGM=$(ls | grep ".pgm$" | wc -l ) dureeOperationEffectue=$(cat "$dossierTMP/dureeOperationEffectue.txt") pourcentDejaEffectue=$(echo "$dureeOperationEffectue $dureeOperationTotal" | awk '{pourcentDejaEffectue = ($1*100)/$2} END {print pourcentDejaEffectue}') dureeSecTitre=$(echo "$zenitySub" | awk '/^'$i'/ {print $3}' | sort -u) for fichierPGM in $fichierPGM; do langue=$(echo "$zenitySub" | awk '$1=='$i' && $9=='$sid' {print $10}' | sort -u) tesseract "$fichierPGM" "$fichierPGM" -l "$langue" 2>&1 nbrFichiersTXT=$(ls -l | grep ".txt$" | wc -l ) echo "$nbrFichiersPGM $nbrFichiersTXT" | awk -v dureeSecTitre="$dureeSecTitre" \ -v dureeOperationTotal="$dureeOperationTotal" \ -v pourcentDejaEffectue="$pourcentDejaEffectue" \ -v tempsStart="$tempsStart" \ -v titreDVD="$titreDVD" \ '{pourcentTesseract = ($2*100/$1)}; {pourcentZenity = pourcentDejaEffectue+(pourcentTesseract/(dureeOperationTotal/dureeSecTitre))}; {tempsActuel = strftime ("%s")}; {tempsRestantSecTotal = ((tempsActuel-tempsStart)*100/pourcentZenity)-(tempsActuel-tempsStart)}; {printf "\n%d\n" ,pourcentZenity printf "\n#Scannage sous-titre Titre-'$i'-sid-'$sid' en cours...\\n\\n" printf "Nom du DVD : %s \\n" , titreDVD printf "Images scannées : %s / %s \\n\\n" ,'$nbrFichiersTXT','$nbrFichiersPGM' printf "Temps total restant estimé : %02d:%02d:%02d \\n\\n", int(tempsRestantSecTotal/3600), int(tempsRestantSecTotal/60%60), tempsRestantSecTotal%60 printf "%d %\n" , pourcentZenity ; fflush();}' done | awk '!x[$0]++;fflush();' # Création sous-titre STR langue=$(echo "$zenitySub" | awk '$1=='$i' && $9=='$sid' {print $10}' | sort -u) srttool -s -i "vobsub-Titre-$i-sid-$sid.srtx" -o "$cheminVideo-Titre-$i-sid-$sid-$langue.srt" dureeOperationEffectue=$(echo "$dureeSecTitre" "$dureeOperationEffectue" | awk '{dureeOperationEffectue = $1+$2} END {print dureeOperationEffectue}') echo "$dureeOperationEffectue" > "$dossierTMP/dureeOperationEffectue.txt" echo "$cheminVideo-Titre-$i-sid-$sid-$langue.srt" >> "$dossierTMP/destination.txt" done done } | zenity --progress \ --title="DVD6clone" \ --width=400 \ --height=250 \ --cancel-label="Annuler et retour au menu" \ --auto-close # Signal sononor aplay /usr/share/dvd6clone/dvd6clone_sound.wav # Message opération terminée zenity --info \ --title="DVD6clone" \ --width=500 \ --height=250 \ --text="<big><b>Terminé !</b></big> \n<b>Chemin copie(s)</b>\n<span color=\"blue\">$(cat "$dossierTMP/destination.txt")</span>" } #============================================================================================================================================ # Information DVD #============================================================================================================================================ INFODVD() { zenity --text-info \ --title="DVD6clone" \ --width=1200 \ --height=800 \ --filename=""$dossierTMP/lsdvd.txt"" } #============================================================================================================================================ # Aide #============================================================================================================================================ AIDE() { zenity --text-info \ --title="DVD6clone" \ --width=1200 \ --height=800 \ --filename="/usr/share/dvd6clone/DVD6clone-info.txt" } #============================================================================================================================================ # Lancement programme #============================================================================================================================================ DVDMONTE MENU
Tapons dans un terminal le chemin vers le fichier du script, par exemple si il se trouve dans notre /home.
/home/$USER/DVD6clone
ou plus simplement en faisant un double clic dessus le fichier DVD6clone
L'utilisation de DVD6clone est relativement simple pour plus d'info à son sujet consultez l'option “Aide et info de DVD6clone” dans le menu principal de DVD6clone.
Discussion sur le forum concernant DVD6clone
ppa:slyfox-free/dvd6clone remarque ce lien est HS !!!