bud77 Posté(e) le 19 mai 2013 Auteur Posté(e) le 19 mai 2013 Voilà, j'ai appliqué le script sur ma filmographie complète, et j'ai peaufiné le script dans une V7, totalement fonctionnelle Hésitez pas si vous voyer des bugs/erreurs 0 Citer
Kramlech Posté(e) le 19 mai 2013 Posté(e) le 19 mai 2013 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 .... 0 Citer
bud77 Posté(e) le 19 mai 2013 Auteur Posté(e) le 19 mai 2013 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 0 Citer
Kramlech Posté(e) le 19 mai 2013 Posté(e) le 19 mai 2013 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 ... 0 Citer
bud77 Posté(e) le 19 mai 2013 Auteur Posté(e) le 19 mai 2013 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) 0 Citer
Kramlech Posté(e) le 20 mai 2013 Posté(e) le 20 mai 2013 As-tu tenté ceci avec un dossier contenant un espace ? Il y a effectivement un problème avec les espaces .... 0 Citer
Kramlech Posté(e) le 20 mai 2013 Posté(e) le 20 mai 2013 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" 0 Citer
bud77 Posté(e) le 20 mai 2013 Auteur Posté(e) le 20 mai 2013 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 Je post çà de suite ! 0 Citer
bud77 Posté(e) le 29 mai 2013 Auteur Posté(e) le 29 mai 2013 (modifié) 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é le 29 mai 2013 par bud77 0 Citer
marseillai Posté(e) le 30 mai 2013 Posté(e) le 30 mai 2013 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. 1 Citer
bud77 Posté(e) le 30 mai 2013 Auteur Posté(e) le 30 mai 2013 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 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é ? 0 Citer
marseillai Posté(e) le 30 mai 2013 Posté(e) le 30 mai 2013 Sinon, pour les séries, je ne les ai pas inclus car sickbeard le fait beaucoup mieux 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. 1 Citer
bud77 Posté(e) le 30 mai 2013 Auteur Posté(e) le 30 mai 2013 Sickbeard permet de DL les séries (newsgroup/torrent) mais même sans DL il permet de gérer sa bibliothèque Pour la freebox, si tu trouves le typo générant le pb, je peux adapter le script 0 Citer
archib Posté(e) le 4 juillet 2013 Posté(e) le 4 juillet 2013 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 0 Citer
bud77 Posté(e) le 4 juillet 2013 Auteur Posté(e) le 4 juillet 2013 En général, on évite de déposer quoi que ce soit à la racine 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) 0 Citer
archib Posté(e) le 4 juillet 2013 Posté(e) le 4 juillet 2013 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 0 Citer
bud77 Posté(e) le 4 juillet 2013 Auteur Posté(e) le 4 juillet 2013 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 0 Citer
archib Posté(e) le 5 juillet 2013 Posté(e) le 5 juillet 2013 bonjour du matin bud77, je t'avais prévenu que j'étais une quiche , et bien cela ce confirme ! sous putty: Partage> ./renommer.sh Partage> Permission denied ou j'ai merdé !!!! merci de ton aide et de ta patience 0 Citer
bud77 Posté(e) le 5 juillet 2013 Auteur Posté(e) le 5 juillet 2013 Nan, t'es pas forcément une quiche, c'est juste que le programme n'a pas les droits d'exécution Met toi dans le dossier, et tape "chmod +x renommer.sh" 0 Citer
archib Posté(e) le 5 juillet 2013 Posté(e) le 5 juillet 2013 Merci le sript marche super bien. Bud77 Merci encore pour ton aide A+ 0 Citer
Kramlech Posté(e) le 25 août 2013 Posté(e) le 25 août 2013 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 ... 0 Citer
bud77 Posté(e) le 25 août 2013 Auteur Posté(e) le 25 août 2013 (modifié) 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é le 25 août 2013 par bud77 0 Citer
Kramlech Posté(e) le 25 août 2013 Posté(e) le 25 août 2013 Alors ça, c'est de l'efficacité !!!! Bravo et merci ... 0 Citer
bud77 Posté(e) le 25 août 2013 Auteur Posté(e) le 25 août 2013 J'avais cerné et résolu le pb y'a 2 mois à peu près, je voulais le tester avant de diffuser, et j'ai oublié la diffusion au final 0 Citer
lagaffe Posté(e) le 26 août 2013 Posté(e) le 26 août 2013 @Bud77, j'ai voulu télécharger le fichier ce matin pour tester, mais j'ai un message qui m'indique que le fichier n'est pas disponible, tu pourrais vérifier s'il te plait ? Merci d'avance 0 Citer
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.