Aller au contenu

Mkv Merge - How To?


Hayholten

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 87
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans ce sujet

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? :D ).

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 :unsure:

EDIT

Sinon, j'ai peut-être ça: http://www.developpez.net/forums/d1051912/systemes/linux/ajouter-commande-iconv/#post6461301

Modifié par Hayholten
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é". :lol:

Lien vers le commentaire
Partager sur d’autres sites

AH AH AH AH!! RAHHHHHH!

Hum... Pardon, les nerfs lâchent :D

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é par Hayholten
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Hayholten
Lien vers le commentaire
Partager sur d’autres sites

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é par Hayholten
Lien vers le commentaire
Partager sur d’autres sites

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... :unsure: 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à)... B)

Lien vers le commentaire
Partager sur d’autres sites

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
Lien vers le commentaire
Partager sur d’autres sites

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?

Lien vers le commentaire
Partager sur d’autres sites

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: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
DiskStation>

Y a moins d'erreurs mais un peu encore quand même... :wacko:

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
Lien vers le commentaire
Partager sur d’autres sites

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"
Lien vers le commentaire
Partager sur d’autres sites

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!! ;)

Lien vers le commentaire
Partager sur d’autres sites

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 :rolleyes: J'espère ne pas tomber sur de nouveaux problèmes mais je crois que là on est bon!! :wub:

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:

mini_938567Capture.jpg

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!!!!!!!!!!!!!!

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

Re ;-)

Concernant la suppression des fichiers quand ils ont un accent:

DiskStation> /scripts/fortoolnix.sh /volume1/video/test
Fichier 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 .subbed
fichier de sortie "/volume1/video/test/Show - S02.E08 - épisode.subbed.mkv"
mkvmerge v4.2.0 ('No Talking') built on Feb 16 2012 18:15:17
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.
Ajout a l index
chmod: /volume1/video/test/Show - S02.E08 - épisode.subbed.mkv: No such file or directory
chown: /volume1/video/test/Show - S02.E08 - épisode.subbed.mkv: No such file or directory
Suppression de l index
Suppression 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"?

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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é par Hayholten
Lien vers le commentaire
Partager sur d’autres sites

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!!! :D

Et petite question annexe pour info: les sous-titres doivent bien se trouver dans le même folder que les fichiers vidéos right?

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.


×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.