bud77 Posté(e) le 7 mai 2014 Partager Posté(e) le 7 mai 2014 1) "normalement" SB (enfin, le module sulbiminal) encode le fichier en UTF8 lorsqu'il est téléchargé automatiquement Pour transformer l'encodage d'un fichier, je crois qu'il y a un programme unix piconv Faudrait voir si il est dispo via ipkg, sinon, faudra le compiler à la main ... 2) Il y a des chances que le ST soit mal lu lors de la lecture du fichier Pour en être sur, il suffit de regarder un fichier que tu as merge, si entre 2 lignes de sous titre affiché, y'a pas de problème, c'est que mkvmerge gère cette partie tout seul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 7 mai 2014 Auteur Partager Posté(e) le 7 mai 2014 (modifié) 2) Il y a des chances que le ST soit mal lu lors de la lecture du fichier Pour en être sur, il suffit de regarder un fichier que tu as merge, si entre 2 lignes de sous titre affiché, y'a pas de problème, c'est que mkvmerge gère cette partie tout seul Sur une demi-douzaine de tests, pas de problèmes pour le moment. Ça, c'est cool... ;-) 1) "normalement" SB (enfin, le module sulbiminal) encode le fichier en UTF8 lorsqu'il est téléchargé automatiquement Pour transformer l'encodage d'un fichier, je crois qu'il y a un programme unix piconv Faudrait voir si il est dispo via ipkg, sinon, faudra le compiler à la main ... Ce qui me renvoit à deux solutions: 1. utiliser SB pour les .srt (et ça ça ne semble pas concluant à l'heure actuelle de mes tests) 2. unix piconv (sérieux, linux il fait pas ça en natif? ). J'ai trouvé un "php-iconv" (http://www.php.net/manual/fr/book.iconv.php) via IPKGui. Si ça peut le faire, je sens que je vais encore avoir besoin d'aide EDIT Sinon, j'ai peut-être ça: http://www.developpez.net/forums/d1051912/systemes/linux/ajouter-commande-iconv/#post6461301 Modifié le 7 mai 2014 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 7 mai 2014 Partager Posté(e) le 7 mai 2014 Plutot la 2e option, mais çà va (encore) te compliquer la tâche :/ Apparemment quelqu'un la déjà installé sur syno SINON, je viens de penser à un truc : Dans le script de merge, tente de remplacer /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME" Par /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:ANSI --language 0:fre "$SRTNAME" Je suis pas sur que le "ANSI" fonctionne, il faudra ptet trouver le nom ISO 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 7 mai 2014 Auteur Partager Posté(e) le 7 mai 2014 Plutot la 2e option, mais çà va (encore) te compliquer la tâche :/ Apparemment quelqu'un la déjà installé sur syno SINON, je viens de penser à un truc : Dans le script de merge, tente de remplacer /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME" Par /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:ANSI --language 0:fre "$SRTNAME" Je suis pas sur que le "ANSI" fonctionne, il faudra ptet trouver le nom ISO Yep, j'ai vu de sujet. J'aurais peut-être à le remonter ;-) Sinon, pour le script, je teste ça... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 7 mai 2014 Auteur Partager Posté(e) le 7 mai 2014 Alors, voilà le résultat dans Gateone: DiskStation> /scripts/fortoolnix.sh /volume1/video/test Fichier SRT trouve : "/volume1/video/test/Truc - S02.E08 - Machin.fr.srt" Video trouve "/volume1/video/test/Truc - S02.E08 - Machin.mkv" "/volume1/video/test/Truc - S02.E08 - Machin.mkv" existe deja. Renommage avec .subbed fichier de sortie "/volume1/video/test/Truc - S02.E08 - Machin.subbed.mkv" mkvmerge v4.2.0 ('No Talking') built on Feb 16 2012 18:15:17 '/volume1/video/test/Truc - S02.E08 - Machin.mkv': Using the Matroska demultiplexer. '/volume1/video/test/Truc - S02.E08 - Machin.fr.srt': Using the SRT subtitle reader. '/volume1/video/test/Truc - S02.E08 - Machin.mkv' track 1: Using the MPEG-4 part 10 (AVC) video output module. '/volume1/video/test/Truc - S02.E08 - Machin.mkv' track 2: Using the AC3 output module. '/volume1/video/test/Truc - S02.E08 - Machin.mkv' track 3: Using the text subtitle output module. Warning: Could not initialize the iconv library for the conversion from ANSI to UFT-8. Some strings will not be converted to UTF-8 and the resulting Matroska file might not comply with the Matroska specs (error: 22, Invalid argument). Warning: Could not initialize the iconv library for the conversion from UFT-8 to ANSI. Some strings cannot be converted from UTF-8 and might be displayed incorrectly (error: 22, Invalid argument). '/volume1/video/test/Truc - S02.E08 - Machin.fr.srt' track 0: Using the text subtitle output module. The file '/volume1/video/test/Truc - S02.E08 - Machin.subbed.mkv' has been opened for writing. Progress: 100% The cue entries (the index) are being written... Muxing took 52 seconds. Ajout a l index Suppression de l index Suppression de "/volume1/video/test/Truc - S02.E08 - Machin.mkv" "/volume1/video/test/Truc - S02.E08 - Machin.fr.srt" (Pas encore tenté avec l'ISO) Par contre, en plus des lignes surlignées en rouge, y a du neuf. Avant, quand j'avais un caractère accentué, il était supprimé ainsi que tout ce qui suivait dans la phrase. Maintenant, le caractère est simplement remplacé par un "carré". 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 7 mai 2014 Auteur Partager Posté(e) le 7 mai 2014 (modifié) AH AH AH AH!! RAHHHHHH! Hum... Pardon, les nerfs lâchent Sur trois tests (je vais bien sûr en faire d'autre), avec ça: /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" ... ça marche!!!!! Bon, je vais pas trop vite me réjouir mais mes recherches m'ont appris que, à priori, "iconv library" était intégré aux Synos depuis peu (ce qui explique qu'avec l'iso ça marche). Du moins, c'est ce que ma compréhension de l'Anglais m'a offert... Toutefois, J'aimerai savoir s'il est maintenant possible de rajouter à cette string une "condition". En gros, faire en sorte que le script ne procède à cette conversion (c'est bien ce qu'il fait nan?) seulement et seulement si le sub est en ANSI. Je dis ça car si jamais le sub est déjà en UTF-8, ben ça merdouille à nouveau (j'ai testé). Fiouuu... Modifié le 7 mai 2014 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 8 mai 2014 Partager Posté(e) le 8 mai 2014 Pour rajouter une condition, il faudrait faire un test sur l'encodage du fichier Mais perso, je ne connait pas du tout de commande unix permettant çà Edit : Google me dit "file -i FICHIER.SRT" Ca donnerais ANSI_SUB=$(file -i $SRTNAME |grep "utf-8"|wc -l) if $ANSI_SUB=0 then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi Par contre, chez moi, file -i tombe en erreur "segmentation fault", faudrais voir si chez toi c'est pareil Y'a aussi "enca" mais j'ai pas compris comment il marche 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2014 Auteur Partager Posté(e) le 8 mai 2014 (modifié) Pour rajouter une condition, il faudrait faire un test sur l'encodage du fichier Mais perso, je ne connait pas du tout de commande unix permettant çà Edit : Google me dit "file -i FICHIER.SRT" Ca donnerais ANSI_SUB=$(file -i $SRTNAME |grep "utf-8"|wc -l) if $ANSI_SUB=0 then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi Par contre, chez moi, file -i tombe en erreur "segmentation fault", faudrais voir si chez toi c'est pareil Y'a aussi "enca" mais j'ai pas compris comment il marche Hello! Je vais tester ça ;-) Modifié le 8 mai 2014 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2014 Auteur Partager Posté(e) le 8 mai 2014 (modifié) Donc, ce script: #!/bin/ash SHARE=video if [ -z "$1" ] then echo "Il faut preciser le repertoire a scanner" exit else CHECK_USER=$(whoami) if [ "$CHECK_USER" == "root" ] then eval find "$*" -name *.fr.srt |while read SRTNAME do echo "Fichier SRT trouve :" "$SRTNAME" VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv') if [ -f "$VIDNAME" ] then echo "Video trouve" "$VIDNAME" OUTNAME="${SRTNAME%.fr.*}".mkv if [ "$VIDNAME" == "$OUTNAME" ] then echo ""$VIDNAME" existe deja. Renommage avec .subbed" OUTNAME="${SRTNAME%.fr.*}".subbed.mkv fi echo "fichier de sortie" "$OUTNAME" # read -p 'Merge des fichiers ? (o/n)' MAJ </dev/tty # if [ "$MAJ" == "o" ] # then ANSI_SUB=$(file -i $SRTNAME |grep "utf-8"|wc -l) if $ANSI_SUB=0 then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi echo "Ajout a l index" /usr/syno/bin/synoindex -a "$OUTNAME" /bin/chmod 777 "$OUTNAME" /bin/chown admin:users "$OUTNAME" echo "Suppression de l index" /usr/syno/bin/synoindex -d "$VIDNAME" if [ -f "$OUTNAME" ] then echo Suppression de "$VIDNAME" "$SRTNAME" mv "$VIDNAME" /volume1/$SHARE/#recycle mv "$SRTNAME" /volume1/$SHARE/#recycle fi else echo "Pas de merge" fi # else # echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv" # fi done else echo "Ce script doit etre lance avec le user root" exit fi fi ... donne: DiskStation> /scripts/fortoolnix.sh /volume1/video/test Fichier SRT trouve : "/volume1/video/test/Show - S02.E08 - Episode.fr.srt" Video trouve "/volume1/video/test/Show - S02.E08 - Episode.mkv" "/volume1/video/test/Show - S02.E08 - Episode.mkv" existe deja. Renommage avec .subbed fichier de sortie "/volume1/video/test/Show - S02.E08 - Episode.subbed.mkv" Segmentation fault (core dumped) /scripts/fortoolnix.sh: line 59: 0=0: not found mkvmerge v4.2.0 ('No Talking') built on Feb 16 2012 18:15:17 Error: Invalid sub charset option. No track ID specified in '--sub-charset --language'. Ajout a l index chmod: /volume1/video/test/Show - S02.E08 - Episode.subbed.mkv: No such file or directory chown: /volume1/video/test/Show - S02.E08 - Episode.subbed.mkv: No such file or directory Suppression de l index Hum... Si le problème peut-être réglé, ça généraliserait ton script à toutes les situations, ce serait génial!! Modifié le 8 mai 2014 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 8 mai 2014 Partager Posté(e) le 8 mai 2014 Je vois que çà tombe en segmentation fault chez toi aussi, donc çà donnera toujours 0 sur le "if" Faut trouver autre chose que le "file -i" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2014 Auteur Partager Posté(e) le 8 mai 2014 Je vois que çà tombe en segmentation fault chez toi aussi, donc çà donnera toujours 0 sur le "if" Faut trouver autre chose que le "file -i" Ce qui là me dépasse complètement... Y doit y avoir un moyen... Et en passant par deux scripts? 1 qui fonctionne pour les UTF8 "natifs" (comme dans notre première réflexion) 1 autre qui fonctionne avec la conversion ANSI --> UTF8 ... et de faire en sorte que selon l'encodage du sub proposé, ce soit l'un ou l'autre des scripts qui se lance (je pars peut-être dans les nuages là)... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 8 mai 2014 Partager Posté(e) le 8 mai 2014 Tant que tu peux pas définir qui est en ut8 et qui est en ansi, çà sert à rien de faire 2 scripts 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 8 mai 2014 Partager Posté(e) le 8 mai 2014 J'ai trouvé un truc qui s’appelle "isutf8", à installer via ipkg avec "ipkg install moreutils" Dans le script çà donne : ANSI_SUB=$(/opt/bin/isutf8 $SRTNAME |grep "utf-8"|wc -l ) if [ $ANSI_SUB != "0" ] then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2014 Auteur Partager Posté(e) le 8 mai 2014 J'ai trouvé un truc qui s’appelle "isutf8", à installer via ipkg avec "ipkg install moreutils" Dans le script çà donne : ANSI_SUB=$(/opt/bin/isutf8 $SRTNAME |grep "utf-8"|wc -l ) if [ $ANSI_SUB != "0" ] then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi Re! Sorry mais c'est vrai que j'ai pris le problème à l’envers. L'enjeu est évidement de définir ce qui est ANSI de ce qui UTF8... Bref, j'ai installé "moreutills" sans pépin ;-) Donc, nouveau script: #!/bin/ash SHARE=video if [ -z "$1" ] then echo "Il faut preciser le repertoire a scanner" exit else CHECK_USER=$(whoami) if [ "$CHECK_USER" == "root" ] then eval find "$*" -name *.fr.srt |while read SRTNAME do echo "Fichier SRT trouve :" "$SRTNAME" VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv') if [ -f "$VIDNAME" ] then echo "Video trouve" "$VIDNAME" OUTNAME="${SRTNAME%.fr.*}".mkv if [ "$VIDNAME" == "$OUTNAME" ] then echo ""$VIDNAME" existe deja. Renommage avec .subbed" OUTNAME="${SRTNAME%.fr.*}".subbed.mkv fi echo "fichier de sortie" "$OUTNAME" # read -p 'Merge des fichiers ? (o/n)' MAJ </dev/tty # if [ "$MAJ" == "o" ] # then ANSI_SUB=$(/opt/bin/isutf8 $SRTNAME |grep "utf-8"|wc -l ) if [ $ANSI_SUB != "0" ] then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi echo "Ajout a l index" /usr/syno/bin/synoindex -a "$OUTNAME" /bin/chmod 777 "$OUTNAME" /bin/chown admin:users "$OUTNAME" echo "Suppression de l index" /usr/syno/bin/synoindex -d "$VIDNAME" if [ -f "$OUTNAME" ] then echo Suppression de "$VIDNAME" "$SRTNAME" mv "$VIDNAME" /volume1/$SHARE/#recycle mv "$SRTNAME" /volume1/$SHARE/#recycle fi else echo "Pas de merge" fi # else # echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv" # fi done else echo "Ce script doit etre lance avec le user root" exit fi fi ... et nouveau résultat: DiskStation> ipkg install moreutils Installing moreutils (0.47-1) to root... Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/moreutils_0.47-1_powerpc.ipk Installing perl (5.8.8-24) to root... Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/perl_5.8.8-24_powerpc.ipk Installing libdb (4.2.52-3) to root... Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/libdb_4.2.52-3_powerpc.ipk Installing gdbm (1.8.3-4) to root... Downloading http://ipkg.nslu2-linux.org/feeds/optware/syno-e500/cross/unstable/gdbm_1.8.3-4_powerpc.ipk Configuring gdbm Configuring libdb Configuring moreutils Configuring perl Successfully terminated. DiskStation> /scripts/fortoolnix.sh /volume1/video/test Fichier SRT trouve : "/volume1/video/test/show - S02.E08 - episode.fr.srt" Video trouve "/volume1/video/test/show - S02.E08 - episode.mkv" "/volume1/video/test/show - S02.E08 - episode.mkv" existe deja. Renommage avec .subbed fichier de sortie "/volume1/video/test/show - S02.E08 - episode.subbed.mkv" isutf8: /volume1/video/test/show: error 2: No such file or directory isutf8: -: error 2: No such file or directory isutf8: S02.E08: error 2: No such file or directory isutf8: -: error 2: No such file or directory isutf8: episode.fr.srt: error 2: No such file or directory mkvmerge v4.2.0 ('No Talking') built on Feb 16 2012 18:15:17 Error: Invalid sub charset option. No track ID specified in '--sub-charset --language'. Ajout a l index chmod: /volume1/video/test/show - S02.E08 - episode.subbed.mkv: No such file or directory chown: /volume1/video/test/show - S02.E08 - episode.subbed.mkv: No such file or directory Suppression de l index Ça marche chez toi? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 8 mai 2014 Partager Posté(e) le 8 mai 2014 Je me suis trompé sur la ligne ANSI_SUB=$(/opt/bin/isutf8 $SRTNAME |grep "utf-8"|wc -l ) C'est ANSI_SUB=$(/opt/bin/isutf8 "$SRTNAME" |wc -l) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2014 Auteur Partager Posté(e) le 8 mai 2014 Re! Ok, j'ai fais la rectif', nouveau résultat donc: DiskStation> /scripts/fortoolnix.sh /volume1/video/test Fichier SRT trouve : "/volume1/video/test/Show - S02.E08 - Episode.fr.srt" Video trouve "/volume1/video/test/Show - S02.E08 - Episode.mkv" "/volume1/video/test/Show - S02.E08 - Episode.mkv" existe deja. Renommage avec .subbed fichier de sortie "/volume1/video/test/Show - S02.E08 - Episode.subbed.mkv" mkvmerge v4.2.0 ('No Talking') built on Feb 16 2012 18:15:17Error: Invalid sub charset option. No track ID specified in '--sub-charset --language'. Ajout a l indexchmod: /volume1/video/test/Show - S02.E08 - Episode.subbed.mkv: No such file or directory chown: /volume1/video/test/Show - S02.E08 - Episode.subbed.mkv: No such file or directory Suppression de l index DiskStation> Y a moins d'erreurs mais un peu encore quand même... Tu as pu tester par chez toi? La dernière version de mon script (au cas où): #!/bin/ash SHARE=video if [ -z "$1" ] then echo "Il faut preciser le repertoire a scanner" exit else CHECK_USER=$(whoami) if [ "$CHECK_USER" == "root" ] then eval find "$*" -name *.fr.srt |while read SRTNAME do echo "Fichier SRT trouve :" "$SRTNAME" VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv') if [ -f "$VIDNAME" ] then echo "Video trouve" "$VIDNAME" OUTNAME="${SRTNAME%.fr.*}".mkv if [ "$VIDNAME" == "$OUTNAME" ] then echo ""$VIDNAME" existe deja. Renommage avec .subbed" OUTNAME="${SRTNAME%.fr.*}".subbed.mkv fi echo "fichier de sortie" "$OUTNAME" # read -p 'Merge des fichiers ? (o/n)' MAJ </dev/tty # if [ "$MAJ" == "o" ] # then ANSI_SUB=$(/opt/bin/isutf8 "$SRTNAME" |wc -l) if [ $ANSI_SUB != "0" ] then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" fi echo "Ajout a l index" /usr/syno/bin/synoindex -a "$OUTNAME" /bin/chmod 777 "$OUTNAME" /bin/chown admin:users "$OUTNAME" echo "Suppression de l index" /usr/syno/bin/synoindex -d "$VIDNAME" if [ -f "$OUTNAME" ] then echo Suppression de "$VIDNAME" "$SRTNAME" mv "$VIDNAME" /volume1/$SHARE/#recycle mv "$SRTNAME" /volume1/$SHARE/#recycle fi else echo "Pas de merge" fi # else # echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv" # fi done else echo "Ce script doit etre lance avec le user root" exit fi fi 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 8 mai 2014 Partager Posté(e) le 8 mai 2014 Ah oui, je me suis planté sur cette ligne, y'a un bout en trop : /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset --language 0:fre "$SRTNAME" Mettre /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME" Par contre, il faudrait rajouter un test si le fichier est bien crée avant l'ajout a l'index et les chown/chmod, et donc déplacer le bloc "if" un peu plus haut : if [ -f "$OUTNAME" ] echo "Ajout a l index" /usr/syno/bin/synoindex -a "$OUTNAME" /bin/chmod 777 "$OUTNAME" /bin/chown admin:users "$OUTNAME" echo "Suppression de l index" /usr/syno/bin/synoindex -d "$VIDNAME" then echo Suppression de "$VIDNAME" "$SRTNAME" mv "$VIDNAME" /volume1/$SHARE/#recycle mv "$SRTNAME" /volume1/$SHARE/#recycle fi else echo "Pas de merge et/ou pas de fichier cree" 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 8 mai 2014 Auteur Partager Posté(e) le 8 mai 2014 Re! Ce qui donne donc (je me permets de recoller les scripts complets à chaque fois afin d’en suivre l'évolution): #!/bin/ash SHARE=video if [ -z "$1" ] then echo "Il faut preciser le repertoire a scanner" exit else CHECK_USER=$(whoami) if [ "$CHECK_USER" == "root" ] then eval find "$*" -name *.fr.srt |while read SRTNAME do echo "Fichier SRT trouve :" "$SRTNAME" VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv') if [ -f "$VIDNAME" ] then echo "Video trouve" "$VIDNAME" OUTNAME="${SRTNAME%.fr.*}".mkv if [ "$VIDNAME" == "$OUTNAME" ] then echo ""$VIDNAME" existe deja. Renommage avec .subbed" OUTNAME="${SRTNAME%.fr.*}".subbed.mkv fi echo "fichier de sortie" "$OUTNAME" # read -p 'Merge des fichiers ? (o/n)' MAJ </dev/tty # if [ "$MAJ" == "o" ] # then ANSI_SUB=$(/opt/bin/isutf8 "$SRTNAME" |wc -l) if [ $ANSI_SUB != "0" ] then /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" "$VIDNAME" --language 0:fre "$SRTNAME" fi if [ -f "$OUTNAME" ] echo "Ajout a l index" /usr/syno/bin/synoindex -a "$OUTNAME" /bin/chmod 777 "$OUTNAME" /bin/chown admin:users "$OUTNAME" echo "Suppression de l index" /usr/syno/bin/synoindex -d "$VIDNAME" then echo Suppression de "$VIDNAME" "$SRTNAME" mv "$VIDNAME" /volume1/$SHARE/#recycle mv "$SRTNAME" /volume1/$SHARE/#recycle fi else echo "Pas de merge et/ou pas de fichier cree" fi # else # echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv" # fi done else echo "Ce script doit etre lance avec le user root" exit fi fi Je teste et reviens!! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 9 mai 2014 Auteur Partager Posté(e) le 9 mai 2014 Back again! ;-) Et jusque là, j'ai envie de dire: ÉNOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOORME!!!!! Que ce soit du ANSI ou de l'UTF-8, le merge se fait sans faire sauter les accents et procure un résultat sans problème! C'est cool car ça généralise ton script à toutes les situations! Rah!!! Pfiou... Ta patience et tes talents bud forcent le respect, félicitations, vraiment J'espère ne pas tomber sur de nouveaux problèmes mais je crois que là on est bon!! J'ose toutefois demander un petit bonus mais étant de l'ordre du détail, si ça te gonfle (et si c'est hard), on oublie. Vala: 1. j'ai retenté de muxer un fichier avec accent dans son nom. Bon, je confirme, pas possible (tant pis). Toutefois, mkvmerge n'a pas seulement refusé le merge, il m'a aussi supprimé les fichiers. En gros, si je lance par erreur le muxe d'un fichier avec accent, quitte à ne pas le faire, est-ce qu'au moins mkvmerge peut conserver les fichiers? 2. serait-il compliqué d'ajouter quelques options au script? A savoir: - mettre "Français" sur le nom de la piste du .srt - notifier cette piste comme "par défaut" - supprimer tous les autres sub qui sont déjà inclus dans le mkv. J'ai fais une capture: Bon, je suis conscient d'être vraiment tatillon là alors encore une fois, pas de souci si c'est gonflant. En tout cas, encore merciiiiiiiiiiiiiiiiii!!!!!!!!!!!!!! 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 mai 2014 Partager Posté(e) le 9 mai 2014 1) normalement y'a un test sur la présence du fichier de sortie, si il existe, çà supprime les fichiers. Si il existe pas, il supprime pas 2) Le script est censé mettre FRE sur la piste Par défaut, après avoir testé, çà sert à rien Pour supprimer les autres sub rajoute un "-S" juste derrière les 2 "$VIDNAME". Mais y'a pas de réel intérêt 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 9 mai 2014 Auteur Partager Posté(e) le 9 mai 2014 Re ;-) Concernant la suppression des fichiers quand ils ont un accent: DiskStation> /scripts/fortoolnix.sh /volume1/video/testFichier SRT trouve : "/volume1/video/test/Show - S02.E08 - épisode.fr.srt"Video trouve "/volume1/video/test/Show - S02.E08 - épisode.mkv""/volume1/video/test/Show - S02.E08 - épisode.mkv" existe deja. Renommage avec .subbedfichier de sortie "/volume1/video/test/Show - S02.E08 - épisode.subbed.mkv"mkvmerge v4.2.0 ('No Talking') built on Feb 16 2012 18:15:17Error: The name of the output file '/volume1/video/test/Show - S02.E08 - ' and of one of the input files is the same. This would cause mkvmerge to overwrite one of your input files. This is most likely not what you want.Ajout a l indexchmod: /volume1/video/test/Show - S02.E08 - épisode.subbed.mkv: No such file or directorychown: /volume1/video/test/Show - S02.E08 - épisode.subbed.mkv: No such file or directorySuppression de l indexSuppression de "/volume1/video/test/Show - S02.E08 - épisode.mkv" "/volume1/video/test/Show - S02.E08 - épisode.fr.srt Il y a un accent, tente le merge, n'y arrive pas et du coup supprime les deux fichiers originaux. Je sais que c'est à moi de faire gaffe mais ça éviterait les suppressions intempestives... Sinon: Le script met bien "FRE" après vérif'. Donc ça c'est OK. "Par défaut", c'est purement cosmétique. (On va dire OK) Quant aux 2 "$VIDNAME", tu parles desquels (j'en vois plus de 2). Et c'est pas "$SRTNAME"? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 10 mai 2014 Partager Posté(e) le 10 mai 2014 Nan, c'est ces 2 lignes /opt/bin/mkvmerge -o "$OUTNAME" -S "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" /opt/bin/mkvmerge -o "$OUTNAME" -S "$VIDNAME" --language 0:fre "$SRTNAME" En relisant le help, j'aurais tendance à mettre le -S avant $VIDNAME, mais si çà marche pas, faut le mettre après Pour la suppression des fichiers avec accent, y'a une erreur que je ne comprends pas dans la log Error: The name of the output file '/volume1/video/test/Show - S02.E08 - ' and of one of the input files is the same. This would cause mkvmerge to overwrite one of your input files. This is most likely not what you want. Normalement, çà doit pas arriver. Il dit que le fichier de sortie à le même nom que le fichier d'entrée, alors qu'il est censé avoir ".subbed" en plus pour la sortie. Du coup le test de présence du fichier est toujours bon, donc suppression Là c'est mkvmerge qui n'aime pas l'accent, çà viens pas du script en lui même Ceci ne peux arriver que pour les fichiers mkv 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 10 mai 2014 Auteur Partager Posté(e) le 10 mai 2014 (modifié) Re! Pour les "$VIDNAME" je vais tester ça, cool ;-) EDIT Je viens d’essayer, ben ça marche... Les autres sub sont supprimés donc parfait!!!! ----------------------------- Pour la suppression des fichiers, c'est étonnant car ça ne me le faisait pas avec les anciennes versions de test du script (mais je ne sais plus trop laquelle, y en a eu un paquet). Les fichiers accentués non "subbé" étaient conservés. J'ai peut-être merdé quelque part nan? #!/bin/ash SHARE=video if [ -z "$1" ] then echo "Il faut preciser le repertoire a scanner" exit else CHECK_USER=$(whoami) if [ "$CHECK_USER" == "root" ] then eval find "$*" -name *.fr.srt |while read SRTNAME do echo "Fichier SRT trouve :" "$SRTNAME" VIDNAME=$(ls "${SRTNAME%.fr.*}"*|grep -E '.avi|.mp4|.mkv') if [ -f "$VIDNAME" ] then echo "Video trouve" "$VIDNAME" OUTNAME="${SRTNAME%.fr.*}".mkv if [ "$VIDNAME" == "$OUTNAME" ] then echo ""$VIDNAME" existe deja. Renommage avec .subbed" OUTNAME="${SRTNAME%.fr.*}".subbed.mkv fi echo "fichier de sortie" "$OUTNAME" # read -p 'Merge des fichiers ? (o/n)' MAJ </dev/tty # if [ "$MAJ" == "o" ] # then ANSI_SUB=$(/opt/bin/isutf8 "$SRTNAME" |wc -l) if [ $ANSI_SUB != "0" ] then /opt/bin/mkvmerge -o "$OUTNAME" -S "$VIDNAME" --sub-charset 0:iso-8859-1 --language 0:fre "$SRTNAME" else /opt/bin/mkvmerge -o "$OUTNAME" -S "$VIDNAME" --language 0:fre "$SRTNAME" fi if [ -f "$OUTNAME" ] echo "Ajout a l index" /usr/syno/bin/synoindex -a "$OUTNAME" /bin/chmod 777 "$OUTNAME" /bin/chown admin:users "$OUTNAME" echo "Suppression de l index" /usr/syno/bin/synoindex -d "$VIDNAME" then echo Suppression de "$VIDNAME" "$SRTNAME" mv "$VIDNAME" /volume1/$SHARE/#recycle mv "$SRTNAME" /volume1/$SHARE/#recycle fi else echo "Pas de merge et/ou pas de fichier cree" fi # else # echo "Pas de fichier "$VIDNAME" trouve en .avi ou .mkv" # fi done else echo "Ce script doit etre lance avec le user root" exit fi fi Je vais refaire des tests ;-) Modifié le 10 mai 2014 par Hayholten 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Hayholten Posté(e) le 11 mai 2014 Auteur Partager Posté(e) le 11 mai 2014 Re! Bon, je confirme, les fichiers avec accents ne sont pas mergés (bon ça on le savait) ET sont supprimés (et ça c'est plus embêtant). Dans le cadre d'une automatisation, ça pose un petit souci... Le reste roule nickel!!! Et petite question annexe pour info: les sous-titres doivent bien se trouver dans le même folder que les fichiers vidéos right? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 11 mai 2014 Partager Posté(e) le 11 mai 2014 Le problème viens de mkvmerge, qui ne prends pas le bon nom en sortie (c'est uniquement pour les MKV).Je ne peux rien y faire Et oui, les sub doivent être dans le même dossier, et s'appeler pareil, et avoir ".fr.srt" en extension 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.