#1 Le 08/11/2011, à 10:22
- neferites
[Résolu] Récupérer l'avancement de mkvmerge
Bonjour à tous et à toutes,
Je suis en train de me faire un petit script pour classer mes séries, et les muxer.
Cependant, afin de le rendre un peu plus user friendly, je souhaite afficher une notification avec l'état d'avancement du muxage.
Pour cela, j'utilise notify-sent, mais afin de faire ma barre d'avancement, il faudrait que je puisse récupérer la valeur écrite dans le shell par mkvmerge. Or, je ne sais pas comment m'y prendre.
La fonction grep, ou une redirection dans un fichier n'est effective que lorsque que l'état d'avancement est à 100% ...
Si quelqu'un sait comment me dépanner, je suis preneur
Merci beaucoup
Dernière modification par neferites (Le 09/11/2011, à 12:46)
Hors ligne
#2 Le 08/11/2011, à 11:48
- neferites
Re : [Résolu] Récupérer l'avancement de mkvmerge
J'ai une partie de ma réponse, car si je fais un :
mkvmerge -o "mon_fichier_de_sortie" "mon_mkv" "mon_srt" &> "un fichier texte"
J'obtiens l'affichage dans le fichier, à l’exception de l'avancement
Je baisse pas les bras
Hors ligne
#3 Le 08/11/2011, à 12:51
- gerarmentor
Re : [Résolu] Récupérer l'avancement de mkvmerge
Bonjour,
L'avancement s'affiche sur la même ligne en utilisant le retour chariot.
Si tu veux qu'il s'affiche sur des lignes différentes, tu peux modifier ainsi la sortie :
mkvmerge | tr '\r' '\n'
J'utilise plus volontiers "gawk" que grep pour ce genre de travail. Il est possible lui spécifier directement que le séparateur est " \r", ainsi pas besoin de remplacement :
mkvmerge -o vidéo.mkv vidéo srt | gawk -vRS='\r' '/^Avancement/'
Hors ligne
#4 Le 08/11/2011, à 13:14
- neferites
Re : [Résolu] Récupérer l'avancement de mkvmerge
Bonjour,
Merci pour la réponse.
Cependant, cela ne correspond pas tout à fait à mon attente.
En effet, l'affichage est maintenant sur plusieurs lignes, mais, je ne peux toujours pas le récupérer en temps réel pour par exemple le stocker dans une variable AV, afin de l'utiliser dans notify-send en faisant :
notify-send "Muxage en cours" -i notification-audio-volume-high -h int:value:AV -h string:synchronous:volume
Merci
Hors ligne
#5 Le 08/11/2011, à 13:49
- gerarmentor
Re : [Résolu] Récupérer l'avancement de mkvmerge
Je t'ai également donné un moyen de récupérer l'avancement en temps réel avec gawk, je ne vais pas non plus te faire ton script en entier
Je ne connais pas notify-send (même pas installé), mais tu devrais pouvoir te débrouiller.
Hors ligne
#6 Le 08/11/2011, à 14:10
- gerarmentor
Re : [Résolu] Récupérer l'avancement de mkvmerge
Voici un moyen testé avec zenity et sa barre de progression, si ça peut t'aider :
mkvmerge -o vidéo.mkv vidéo srt | gawk -vRS='\r' '/^Avancement/ {print $NF; fflush()}' | zenity --progress
Hors ligne
#7 Le 08/11/2011, à 16:57
- neferites
Re : [Résolu] Récupérer l'avancement de mkvmerge
Merci beaucoup.
Je ne maitrise absolument pas sed et awk, et non, je demandais juste un coup de main, pas que l'on me fasse mon script
Merci à toi d'avoir pris le temps de me répondre !
Hors ligne
#8 Le 10/11/2011, à 21:07
- Hizoka
Re : [Résolu] Récupérer l'avancement de mkvmerge
Voila ce que j'utilise perso :
while read -d $'\r' ligne
do
pourcentage=${ligne##* } pourcentage=${pourcentage%?}
echo "le pourcentage est de : ${pourcentage}"
done < <(mkvmerge blabla bla 2>&1)
ca fait partie d'un logiciel (voir ma signature)
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne