Aller au contenu

Script : Renommer Les Films D'apr


bud77

Messages recommandés

Il y a cas de figure qui n'est pas traité : si un film est découpé en plusieurs fichiers .....

La seule idée que j'avais eu pour résoudre le problème, c'est de normaliser ce type de fichier (par exemple en mettant des extensions de type [cd1], et d'ignorer cette extension dans la comparaison).

Je peux aussi te proposer les modifications pour éviter d'avoir à lancer le script sous le user admin (généralement, on se connecte en ssh avec le user root ....).

Je l'ai testée, et ça marche bien ....

Lien vers le commentaire
Partager sur d’autres sites

Pour les films en plusieurs partie, j'y ai très longuement réfléchi, et j'en étais arrivé à une infaisabilité lors du renommage, car j'ai aucun moyen de différencier le CD1 du CD2

Du coup, j'ai juste recollé mes fichiers avec mkvmerge sur mon pc. J'ai tout mis en queue, et tout lancé avant d'aller au dodo :)

Pour lancer le script en root, j'ai tenté une bonne 50aine de façons, mais il y a un problème lors du lancement de la commande SQL:

Pour lancer en root, je dois faire un "su - admin" puis la commande à lancer entre quote

Le problème étant que je dois obligatoirement garder le chemin des fichiers entre quote, sinon la commande SQL se coupe (j'ai tenté de protéger la variable, de faire appel à une 2e variable, de passer par un fichier sql temporaire, mais rien n'a marché :/)

Il est ptet possible de se forcer le su - admin puis lancer la totalité du script (et pas juste la commande sql), c'est vrai que j'ai pas creusé ce point

Lien vers le commentaire
Partager sur d’autres sites

Voila comment j'ai remplacé les deux accés SQL :

Le premier :

su - admin -c'/usr/syno/pgsql/bin/psql -d video_metadata  -q -A -t -c "select c.id,title,path,year from movie a, video_file c where c.mapper_id=a.mapper_id ;"' | while read ENTRY

Le deuxième :

su - admin -c'/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = '$NEW_PATH2' WHERE id= '$DB_ID';"'

Et là, ça marche !!!

Tu peux me donner plus de détails sur la manière de recoller un film qui est en plusieurs parties ?

J'avais fait quelques essais, mais rine de concluant ...

Lien vers le commentaire
Partager sur d’autres sites

Voila comment j'ai remplacé les deux accés SQL :

Le premier :

su - admin -c'/usr/syno/pgsql/bin/psql -d video_metadata  -q -A -t -c "select c.id,title,path,year from movie a, video_file c where c.mapper_id=a.mapper_id ;"' | while read ENTRY

Le deuxième :

su - admin -c'/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = '$NEW_PATH2' WHERE id= '$DB_ID';"'

Et là, ça marche !!!

Tu peux me donner plus de détails sur la manière de recoller un film qui est en plusieurs parties ?

J'avais fait quelques essais, mais rine de concluant ...

Le premier appel SQL passe sans souci, mais il me semble avoir essayé cette syntaxe pour le 2e, et c'était pas concluant

As-tu tenté ceci avec un dossier contenant un espace ?

Pour mkvmerge :

Il est installable via ipkg sur syno aussi (package mkvtoolnix)

Lien vers le commentaire
Partager sur d’autres sites

Bon, j'ai trouvé la syntaxe pour prendre en compte les blancs :

ordre='/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = '$NEW_PATH2' WHERE id= '$DB_ID';"'
su - admin -c "$ordre"

Je confirme !

Du coup, j'ai modifié le script pour qu'il puisse être lancé en root ou en admin :D

Je post çà de suite !

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

J'ai modifié le script :

Ca déconnait parfois lors du lancement en root, c'est donc réglé

Suppression du caractère (`)

Le script va maintenant commencer par les fichiers les plus récents (pratique si on a que les derniers fichiers à mettre à jour)

Le script est toujours à télécharger dans la partie "téléchargement" du forum

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

Je me permets de mettre ici ma version du script.

#!/bin/ash
###########################################################################################
#............ Script pour renommer les films de Video Station.............................#
#.........................................................................................#
#............... Permet de renommer les fichiers sous le nom officiel du films............#
###########################################################################################


###########################################################################################
#                      Declaration de la fonction de renommage                            #
###########################################################################################
start_rename () {
###########################################################################################
#                   Recuperation des infos DB et mise en variable                         #
###########################################################################################
#$SUCMD '/usr/syno/pgsql/bin/psql -d video_metadata  -q -A -t -c "select 0,c.id,a.title,c.path,a.year, 0, '' from movie a, video_file c where c.mapper_id=a.mapper_id order by c.id desc;"' | while read ENTRY
#$SUCMD '/usr/syno/pgsql/bin/psql -d video_metadata  -q -A -t -c "select 1,c.id,s.title,c.path,e.season, e.episode, e.tag_line from tvshow s, tvshow_episode e, video_file c where c.mapper_id=e.mapper_id and e.tvshow_id = s.id order by c.id desc;"' | while read ENTRY
$SUCMD '/usr/syno/pgsql/bin/psql -d video_metadata  -q -A -t -c "select 0,c.id,c.path,a.title,a.year, 0 from movie a, video_file c where c.mapper_id=a.mapper_id 
union select 1,c.id,c.path,s.title,e.season,e.episode from tvshow s, tvshow_episode e, video_file c where c.mapper_id=e.mapper_id and e.tvshow_id = s.id order by id desc;"' | while read ENTRY

	do
		TYPE_VIDEO=$(echo $ENTRY|cut -f1 -s -d"|")
		DB_ID=$(echo $ENTRY|cut -f2 -s -d"|")
		CHEMIN=$(echo $ENTRY|cut -f3 -s -d"|")
		FILM=0
		
		if [ "$TYPE_VIDEO" = "$FILM" ]
			then
				#film
				TITRE=$(echo $ENTRY|cut -f4 -s -d"|")
				YEAR=$(echo $ENTRY|cut -f5 -s -d"|")
				#NEW_TITRE=$(echo $TITRE |sed 's/,//g' |sed 's/://g' |sed 's/;//g' |sed -e 's/ /./g' |sed -e 's/?//g'|sed -e 's/*/-/g').$YEAR
				NEW_TITRE=$(echo $TITRE |sed 's/,//g' |sed 's/://g' |sed 's/;//g' |sed -e 's/?//g'|sed -e 's/*/-/g').$YEAR #je ne veux pas remplacer les espaces par un . ca pose des pb avec le DLNA de la FREEBOX V5
			else
				#serie
				SERIE=$(echo $ENTRY|cut -f4 -s -d"|")
				SAISON=$(echo $ENTRY|cut -f5 -s -d"|")
				EPISODE=$(echo $ENTRY|cut -f6 -s -d"|")
				SEP_SAISON=" "
				SEP_EPISODE="x"
				NEW_TITRE="$SERIE$SEP_SAISON$SAISON$SEP_EPISODE$EPISODE"
		fi
		
				
		###########################################################################################
		#     Definition du nouveau nom (remplacement espace par des "." )et du dossier courant   #
		###########################################################################################
		DOSSIER=$(dirname "$CHEMIN")
		EXTENSION=${CHEMIN##*.}
		
		
		###########################################################################################
		#               Nettoyage du nom de fichier final : accents, "&" , "," , ":"              #
		###########################################################################################
		NEW_NAME=$(echo $NEW_TITRE.$EXTENSION |sed 's/&/Et/g' |sed -e 's/$//g' |sed "s/'/./g" |sed 's/à/a/g' |sed 's/â/a/g' |sed 's/ç/c/g' |sed 's/é/e/g' |sed 's/è/e/g' |sed 's/ê/e/g' |sed 's/ë/e/g' |sed 's/î/i/g' |sed 's/ï/i/g' |sed 's/ô/o/g' |sed 's/ö/o/g' |sed 's/œ/oe/g' |sed 's/Œ/oe/g' |sed 's/ù/u/g' |sed 's/ü/u/g' |sed 's/Â/A/g' |sed 's/Ç/C/g' |sed 's/É/E/g' |sed 's/È/E/g' |sed 's/Ê/E/g' |sed 's/Ë/E/g' |sed 's/Î/I/g' |sed 's/Ï/I/g' |sed 's/Ô/O/g' |sed 's/Ö/O/g' |sed 's/Ù/U/g' |sed 's/Ü/U/g' |sed -e 's/À/A/g' |sed -e 's/·/./g' |sed -e 's/’/./g')
		NEW_PATH=$DOSSIER/$NEW_NAME
		NEW_PATH2='$NEW_PATH'
		
		###########################################################################################
		#                      On verifie si le nom doit etre modifie                             #
		###########################################################################################
		if [ "$CHEMIN" == "$NEW_PATH" ]
			then
				echo $CHEMIN deja OK, pas de MaJ
			else
				###########################################################################################
				#                                    Demande de MaJ                                       #
				###########################################################################################
				echo -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
				echo "Renommer $CHEMIN <-- en --> $NEW_PATH"
				read -p 'Mise a jour du fichier ? (o/n)' MAJ </dev/tty
				if [ "$MAJ" == "o" ]
					then
						if [ -f "$NEW_PATH" ]
							then
								echo "Le fichier $NEW_PATH existe déja"
							else
								##########################################################################################
								#                   On renomme le fichier, puis on met a jour la DB                      #
								##########################################################################################
								mv "$CHEMIN" "$NEW_PATH"
								SQLCMD='/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = '$NEW_PATH2' WHERE id= '$DB_ID';"'
								echo $SUCMD
								echo $SQLCMD
								$SUCMD "$SQLCMD"
						fi
				fi
		fi
	done
}
###########################################################################################
#                               Check du user = admin ou root                             #
###########################################################################################

CHECK_USER=$(whoami)
case $CHECK_USER in
	admin)
		SUCMD=eval
		start_rename |tee rename.log;;
	root)
		SUCMD="su - admin -c"
		start_rename |tee rename.log;;
	*)
	echo "Ce script doit etre lance avec les user root ou admin"
	exit
esac

En gros j'ai rajouté la gestion des séries, remis les espaces dans le titre a la place des "." et mis un test pour ne pas écraser de fichiers mais simplement mettre une alerte en cas de doublon.

Tout ce que je peux dire c'est : chez moi ça marche mais faites attention.

Lien vers le commentaire
Partager sur d’autres sites

Ah, je viens de remarquer que j'ai laissé 2 lignes pour mon débug hier (vers la fin du script)

echo $SUCMD
echo $SQLCMD

A retirer pour pas polluer l'affichage

Sinon, pour les séries, je ne les ai pas inclus car sickbeard le fait beaucoup mieux :P

Pour les "." et la freeebox V5, c'est un souci qui (il me semble) a été réglé ya plus de 6 mois, es-tu sur que c'est toujours d'actualité ?

Lien vers le commentaire
Partager sur d’autres sites

Sinon, pour les séries, je ne les ai pas inclus car sickbeard le fait beaucoup mieux :P

Pour les "." et la freeebox V5, c'est un souci qui (il me semble) a été réglé ya plus de 6 mois, es-tu sur que c'est toujours d'actualité ?

Pour les séries pour ma part je n'utilise pas sickbeard pensant qu'il était réservé aux newsgroup je viens de voir que c'est faux.

Pour les "." et la freebox j'ai toujours le probléme sur certains films.

Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Bonjour a tous

Bud77 merci beaucoup pour ton script, je vais l'essayer sur ma base video mais un petit detail pour moi je viens de chercher mais je ne suis pas sur de la ligne.

pour lancer le script avec putty je fais comment ?

1 je place to,n fichier dans la racine du syno

2 je lance le script avec quelle synatxe ????

vraiment désolé d'etre aussi tache mais bon !!!

Merci pour ta reponse

Lien vers le commentaire
Partager sur d’autres sites

En général, on évite de déposer quoi que ce soit à la racine :P

Mais tu peux le déposer dans /root par exemple, puis il se lance en mettant "./" puis le nom du script

Plus besoin de syntaxe avec la dernière version, à lancer avec le user "root" ou "admin"

Attention à bien lire les avertissements (surtout pour les fichiers en plusieurs parties)

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta reponse

donc je resume :

1 connection avec putty

2 place le fichier "Videostation - renommer films.sh"

dans le root

3 tape "./Videostation - renommer films.sh"

là il va renommer les fichiers (situés dans le rep video) en fonction de la base synology video

j'ai bien compris le probleme des fichiers en plusieurs parties.

Super je lance cela demain

Merci encore a toi

Lien vers le commentaire
Partager sur d’autres sites

Le mieux, avant de le mettre sur le syno, est de retirer les espaces dans le nom, et renommer le script du genre Videostation.renommer.films.sh

Puis pour le lancer, se mettre dans le dossier ou tu l'as déposé, puis ./Videostation.renommer.films.sh

Attention, le script va te demander à chaque fichier si tu veux le renommer ou pas
Assure toi aussi d'avoir _tout_ tes films correctement renseignés dans videostation (parfois, il y a plusieurs film sous la même jacquette)
Tu pourras voir çà lorsqu'il proposera le renommage
Lien vers le commentaire
Partager sur d’autres sites

  • 1 mois après...

Je viens de constater un problème lié au script.

Je ne m'en étais pas aperçu, car jusqu'à maintenant je n'utilisais Video Station que pour classer et documenter mes films, et pas pour les regarder (je regardais mes films sur ma TV via le client DLNA de ma Freebox V5).

Mais je viens d'essayer DS VIDEA sur iPad, et je me suis rendu compte que les tentatives de visualisation échouaient (impossible de décoder la vidéo). Un essai via Video Station sur l'ordinateur : même échec.

Alors que l'accés direct au fichier (via AcePlayer sur l'iPad) permet de lire la vidéo.

Et j'ai réussi à régler le problème en relançant une indexation via le Service d'Indexage Média (et pas l'indexation de Video Station) !!!

J'avoue ne pas comprendre pourquoi Video Station repasse par l'indexation DLNA, alors qu'elle a sa propre indexation, et qu'elle connait le nom du fichier ....

Je vais donc mettre en place une petite modification dans le script :

  • Mémorisation des répertoires qui contiennent les films qui ont été renommés
  • Lancement de l'indexation pour ces répertoires ...
Lien vers le commentaire
Partager sur d’autres sites

OUUUPPPPSSS

Honte à moi, j'ai cerné ce problème y'a plusieurs semaines, et j'ai mis à jour chez moi ... mais oublié de diffuser

Je met à jour dans la partie téléchargement de suite

Edit : V10 dispo dans la partie téléchargement

Modifié par bud77
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.