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).

#226 15-06-2019 16:15:32

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

Celle-ci ?


oui.

Hors ligne

#227 15-06-2019 16:17:09

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

enicar a écrit :

Note : j'ai modifié la définition de la variable INFO_AC3_DTS_MPEG1 dans le post #215.
L'ancienne définition ne devait pas fonctionner, mais je n'en suis pas sûr.
À vérifier.



Celle-ci ?

INFO_AC3_DTS_MPEG1=$(lsdvd_x "$i" | \
    awk '/ac3,|dts,|mpeg1,/  { x = x $4 ","}
        END { sub(/,*$/, "", x); print x }'
)




En tout cas, celle-ci fonctionne.
J'étais retourné sur la mienne, car l'amélioration me sortait :

1-SLEEPLESS_IN_SEATTLE-[Language:]+SUBVF.mkv



au lieu de:

1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv
 

#228 15-06-2019 16:20:21

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

J'étais retourné sur la mienne, car l'amélioration me sortait :


C'est laquelle qui ne fonctionnait pas ?
Et c'est laquelle qui fonctionne ?

Je m'y retrouve plus big_smile

Hors ligne

#229 15-06-2019 16:31:12

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Pourrais-tu me simplifier 3 lignes pour mon option "mkv seulement french + sub"  ? smile

Combien de streams audio

COUNT_AUDIO=$(mplayer -vo null -ao null -frames 0 -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | grep 'stream' | grep 'audio' | awk '{print $3}' | awk '{x=x+NF}END{print x}')




COUNT_AUDIO=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv"  | grep 'stream' | grep 'audio' | awk '{print $3}' | awk '{x=x+NF}END{print x}')

echo $COUNT_AUDIO

15
 




combien en français

COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | grep 'stream' | grep 'audio' | grep 'fre,' | awk '{print $3}' | awk '{x=x+NF}END{print x}')




COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv"  | grep 'stream' | grep 'audio' | grep 'fre,' | awk '{print $3}' | awk '{x=x+NF}END{print x}')

echo $COUNT_AUDIO_FR

1
 



c'est la numéro 2

ONLY_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | grep 'stream' | grep 'fre,' | grep 'audio' | awk '{print $3}' | sed 's/[^0-9]*//g' | sed 's/./& ,/g'| sed '$ s/.$//' |  tr -d '[:space:]')




ONLY_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv"  | grep 'stream' | grep 'fre,' | grep 'audio' | awk '{print $3}' | sed 's/[^0-9]*//g' | sed 's/./& ,/g'| sed '$ s/.$//' |  tr -d '[:space:]')

echo $ONLY_AUDIO_FR

2
 

Dernière modification par Anonyme (15-06-2019 16:42:15)

#230 15-06-2019 16:33:38

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

enicar a écrit :

Anonyme a écrit :

J'étais retourné sur la mienne, car l'amélioration me sortait :


C'est laquelle qui ne fonctionnait pas ?
Et c'est laquelle qui fonctionne ?

Je m'y retrouve plus big_smile




Celle-ci fonctionne. smile

INFO_AC3_DTS_MPEG1=$(lsdvd_x "$i" | \
    awk '/ac3,|dts,|mpeg1,/  { x = x $4 ","}
        END { sub(/,*$/, "", x); print x }'
)

#231 15-06-2019 16:41:41

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

Celle-ci fonctionne. smile


La dernière est la bonne, tant mieux wink

Hors ligne

#232 15-06-2019 16:45:37

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

une question. j'ai remarqué que tu mets :

|grep

 

et pas

| grep



c'est important ?

#233 15-06-2019 16:52:33

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

c'est important ?


Juste une question de style. Je mets toujours une espace avant un pipe « | »
et jamais après sauf si je mets une continuation de ligne derrière (c'est à dire un « \ »),
auquel cas je mets un espace derrière pour bien séparer visuellement la continuation de la ligne.

Hors ligne

#234 15-06-2019 16:57:25

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

enicar a écrit :

Anonyme a écrit :

c'est important ?


Juste une question de style. Je mets toujours une espace avant un pipe « | »
et jamais après sauf si je mets une continuation de ligne derrière (c'est à dire un « \ »),
auquel cas je mets un espace derrière pour bien séparer visuellement la continuation de la ligne.



Merci.


Pour l'amélioration des lignes sur mon avant dernier post, je vais essayer de le faire avec grep -c
De toute façon, celle qui donne 15 streams, c'est archi faux !!! smile

#235 15-06-2019 17:06:03

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Pour info, j'ai écrit une définition de RATIO en utilisant awk
uniquement :


RATIO=$(lsdvd_x "$i" | \
        awk 'NR <= 3 && /Aspect ratio:/ {sub(/\//, ":", $11); arr[++max]=$11}
        END { sub(/.$/, "", arr[max]);
              for(i=1; i <= max; i++)
                  print arr[i]}'
)
 


Je ne suis pas sûr que ça vaille le coup.
Ça consiste à mettre le champ $11, dans le tableau arr à
l'indice NR. On utilise une variable max pour savoir
quel est l'indice maximum du tableau. Ensuite on traite le tableau
dans le bloc END. On supprime le dernier caractère du dernier élément
du tableau. Puis on affiche le tableau. Remarque que le i que
j'utilise dans la boucle for du bloc END, n'a rien à voir avec la
variable i de bash…

Je ne sais pas si faire un sub directement sur un élément d'un tableau
comme ça fonctionne… Donc autant dire que je ne sais pas si ça
fonctionne.

Maintenant, je vais tâcher de regarder les lignes du post #229.
Il faudrait que tu m'expliques quand même ce qu'elles sont censées faire.

EDIT : J'ai simplifié cette version. Et j'ai
vérifié que « sub(/.$/, "", arr[max]) » fonctionne d'après le manuel
de gawk.  Il ne reste plus qu'à tester un cas réel.

Dernière modification par enicar (15-06-2019 21:30:33)

Hors ligne

#236 15-06-2019 17:20:45

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Pour la ligne :


COUNT_AUDIO=$(mplayer -vo null -ao null -frames 0
        -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
        grep 'stream' | grep 'audio' | awk '{print $3}' | awk '{x=x+NF}END{print x}')
 


C'est facile. Il suffit de remplacer :


grep 'stream' | grep 'audio' | awk '{print $3}' | awk '{x=x+NF}END{print x}'
 


par


grep 'stream' |grep -c 'audio'
 



Voire même :


grep -c 'stream.*audio'
 



Ce qui nous donne finalement :


COUNT_AUDIO=$(mplayer -vo null -ao null -frames 0 \
        "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
     grep -c 'stream.*audio'
 



D'ailleurs je ne sais pas où tu as chopé ce truc :


awk '{print $3}' |awk '{x=x+NF}END{print x}'
 


Je trouve cela quand même un poil compliqué wink

PS: J'ai pensé encore à un autre truc, mais je ne le montre pas
car ça va finir par tout se mélanger dans ta tête, si ce n'est pas
déjà fait wink

EDIT :Suppression de l'option « -v »dans la commande mplayer.

Dernière modification par enicar (21-06-2019 16:41:55)

Hors ligne

#237 15-06-2019 17:28:58

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Pour la variable COUNT_AUDIO_FR, même traitement.
Le code :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
       -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
        grep 'stream' | grep 'audio' | grep 'fre,' | \
        awk '{print $3}' | awk '{x=x+NF}END{print x}')
 


Peut être remplacé par :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
       -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
        |grep -c 'stream.*audio.*fre')
 


À condition bien sûr que les motifs « stream », « audio » et « fre »
soient trouvés dans cet ordre.

Hors ligne

#238 15-06-2019 17:34:05

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

enicar a écrit :



PS: J'ai pensé encore à un autre truc, mais je ne le montre pas
car ça va finir par tout se mélanger dans ta tête, si ce n'est pas
déjà fait wink



coffeecup.gif coffeecup.gifcrash.gif

#239 15-06-2019 17:39:27

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

enicar a écrit :

Pour la variable COUNT_AUDIO_FR, même traitement.
Le code :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
       -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
        grep 'stream' | grep 'audio' | grep 'fre,' | \
        awk '{print $3}' | awk '{x=x+NF}END{print x}')
 


Peut être remplacé par :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
       -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
        |grep -c 'stream.*audio.*fre')
 


À condition bien sûr que les motifs « stream », « audio » et « fre »
soient trouvés dans cet ordre.



Moi j'avais ça :

COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv"  | grep -E -c 'stream/|audio/|fre,')

#240 15-06-2019 17:42:11

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Déjà j'ai une première proposition pour COUNT_AUDIO_FR.
On a :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
      -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
      grep 'stream' | grep 'audio' | grep 'fre,' | \
      awk '{print $3}' | awk '{x=x+NF}END{print x}')
 


On pourrait remplacer :


grep 'stream' | grep 'audio' | grep 'fre,' | awk '{ print $3 }'
 


par :


awk '/stream/ && /audio/ && /fre/ {print $3 }'
 



Reste le comptage. On peut le faire directement dans awk.
Au lieu du « { print $3 } », on va compter le nombre de ligne.
Et afficher ce comptage dans le bloc END. Ce qui donne au final :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
      -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv" | \
      awk '/stream/ && /audio/ && /fre/ {count=count+1}
           END { if (count) print count; else print 0 }'
)
 


Ce qui permet de faire le comptage, c'est « count=count+1 », comme tu
l'auras compris. Je n'ai pas testé mais ça devrait fonctionner.

EDIT : J'ai ajouté un test dans le bloc END de awk au cas
où il n'y a aucune correspondance.

Dernière modification par enicar (15-06-2019 17:55:06)

Hors ligne

#241 15-06-2019 17:47:41

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

Moi j'avais ça :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv"  | grep -E -c 'stream/|audio/|fre,')
 



Je t'ai expliqué post #217 pourquoi une simple alternative dans grep
ne revenait pas au même qu'une succession de grep. Tu peux relire
ce post et me demander si tu n'as pas compris.

Dernière modification par enicar (15-06-2019 21:31:56)

Hors ligne

#242 15-06-2019 17:58:48

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Bon il est temps pour moi de faire une pause.
Tiens moi au courant de tes succès, échecs et de ce que tu ne comprends pas.

Dernière modification par enicar (15-06-2019 18:13:51)

Hors ligne

#243 15-06-2019 18:17:10

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

enicar a écrit :

Anonyme a écrit :

Moi j'avais ça :


COUNT_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 -v "1-SLEEPLESS_IN_SEATTLE-[Language:en,fr,de,it,es,en,en]+SUBVF.mkv"  | grep -E -c 'stream/|audio/|fre,')
 



Je t'ai expliqué post #217 pourquoi une simple alternative dans grep
ne revenait pas au même qu'un successsion de grep. Tu peux relire
ce post et me demander si tu n'as pas compris.



il n'y a qu'un grep non ? smile

pour moi je comprend que je cherche toutes les lignes contenant "stream audio et fre" et que si il en manque un sur les trois demandé, ça ne sera pas comptabilisé. Donc trois ou sinon rien. smile
Si, c'est pas ça, là j'ai du mal tongue

Dernière modification par Anonyme (15-06-2019 18:26:07)

#244 15-06-2019 18:25:38

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

il n'y a qu'un grep non ? smile



T'es sûr d'avoir bien tout lu ?

Hors ligne

#245 15-06-2019 18:26:57

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

enicar a écrit :

Anonyme a écrit :

il n'y a qu'un grep non ? smile



T'es sûr d'avoir bien tout lu ?



J'y retoune mais je coupe AC/DC tongue

#246 15-06-2019 18:34:30

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Mince je pense voir où je m'embrouille.


au 217
Tu parles  "dans le premier cas"  et moi j'ai pris la commande "Anonyme a écrit :"

#247 15-06-2019 18:42:14

Anonyme
Invité

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

En tout cas au post 217, c'est bien le cas 2 qui me convient.

le premier cas donnera un nombre de sous-titres faux.

#248 15-06-2019 18:45:42

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Anonyme a écrit :

J'y retoune mais je coupe AC/DC tongue


Évidemment, ça demande de la concentration, AC/DC n'est pas adapté, je pense.

Anonyme a écrit :

En tout cas au post 217, c'est bien le cas 2 qui me convient.


Bien. Et tu as compris pourquoi ?

Hors ligne

#249 15-06-2019 19:22:54

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Passons à la variable ONLY_AUDIO_FR.
Nous avons :


ONLY_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
   -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | \
    grep 'stream' | grep 'fre,' | grep 'audio' | awk '{print $3}' | \
    sed 's/[^0-9]*//g' | sed 's/./& ,/g'| sed '$ s/.$//' |  tr -d '[:space:]')
 



Comme précédemment, on peut remplacer :


grep 'stream' | grep 'fre,' | grep 'audio' | awk '{print $3}'
 


Par :


awk '/stream/ && /fre/ && /audio/ { print $3 }'
 


Ce qui est quand même mieux.
Ça donnerait pour la commande :


ONLY_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
   -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | \
    awk '/stream/ && /fre/ && /audio/ { print $3 }' | \
    sed 's/[^0-9]*//g' | sed 's/./& ,/g'| sed '$ s/.$//' |  tr -d '[:space:]')
 



Reste la ligne de sed et le tr. On peut tout faire dans awk. Cependant
ça fait un peu plus de code. Voilà le résultat final :


ONLY_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
   -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | \
    awk '/stream/ && /fre/ && /audio/ { arr[NR]=$3; max = NR }
        END { for(i=1; i <= max; i++)
                if (arr[i])
                {   cur = arr[i];
                    gsub(/[^0-9]+/, "", cur);
                    gsub(/./, "& ,", cur);
                    if (i == max) sub(/.$/, "", cur);
                    gsub(/ +/, "", cur);
                    print cur
                }
            }'
)
 


Tu devras tester cette dernière version car je ne sais pas si va
fonctionner.

Remarque, ça commence à ressembler à de la programmation classique,
tu seras bientôt mûr pour python wink

En résumé, on a les correspondances suivantes :

  • « sed 's/[^0-9]*//g' » devient « gsub(/[^0-9]+/, "", cur) »

  • « sed 's/./& ,/g' » devient « gsub(/./, "& ,", cur) »

  • « sed '$ s/.$//' » devient «  if (i == max) sub(/.$/, "", cur) »

  • « tr -d '[:space:]' » devient « gsub(/ +/, "", cur) »

Dernière modification par enicar (15-06-2019 19:24:04)

Hors ligne

#250 15-06-2019 19:54:28

enicar
Membre
Lieu : pas ici
Distrib. : sid
Noyau : Linux 6.5.3
(G)UI : openbox
Inscription : 26-08-2010

Re : Script: FFMPEG : Ripper et Encoder ses DVD pour archivage (SUBFR,etc)

Je viens de trouver une petite simplification dans le programme gawk
du post #249.

Voilà ce que ça donne :


ONLY_AUDIO_FR=$(mplayer -vo null -ao null -frames 0 \
   -v "$FOLDER/$i-$TITLE-[Language:$INFO_AC3_DTS_MPEG1]+SUBVF.mkv"  | \
    awk '/stream/ && /fre/ && /audio/ { arr[++max]=$3 }
        END { for(i=1; i <= max; i++)
               {   cur = arr[i];
                   gsub(/[^0-9]+/, "", cur);
                   gsub(/./, "& ,", cur);
                   if (i == max) sub(/.$/, "", cur);
                   gsub(/ +/, "", cur);
                   print cur
               }
            }'
)
 


Avec une petite astuce, j'ai supprimé la possibilité d'avoir des trous
dans mon tableau « arr ». Ainsi, je n'ai plus besoin de tester si
l'élément de « arr de i  » existe.

Hors ligne

Pied de page des forums