bud77 Posté(e) le 26 avril 2013 Partager Posté(e) le 26 avril 2013 (modifié) Hello ! J'ai mis en place videostation ce we, et après un bon paquet d'heure passé à retoucher les jaquettes et toussa, je me rend compte que j'ai beaucoup de fichier dont le nom est "pourri" Je me demandais, à tout hasard, si quelqu'un a fait un script permettant de renommer le fichier d'après les infos de la db pgsql En gros : -Prendre la liste des fichiers du répertoire en cours (ou spécifié en argument ou fichier précis), lancer une boucle sur -Pour chaque fichier, récupérer le nom dans la db (table synovideometadata) -Renommer le fichier en gardant l'extension -Mettre à jour la db pour qu'il utilise le nouveau nom (car vu que c'est par script, il ne verra pas les modifications automatiquement, contrairement a du smb/nfs/...) -Bonus : fichier de log si on veux re-re-modifier J'ai (je pense) assez de connaissance pour réaliser la moitié du script si personne n'en a, mais il me faudrait surement un pti coup de main sur la partie requête/écriture db Edit : Script finalisé : Modifié le 11 mai 2013 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
IamFire Posté(e) le 3 mai 2013 Partager Posté(e) le 3 mai 2013 Personnellement j'utilise "FileBot" pour renommer tout mes fichiers et VideoStation trouve beaucoup plus aisément les infos grâce a ça Dans l'application, n'hésite pas à aller faire un tour les paramètres 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kramlech Posté(e) le 5 mai 2013 Partager Posté(e) le 5 mai 2013 J'ai fais un script qui permet de renommer les fichiers avec le nom du film dans la DB ... Par contre, j'ai laissé tomber le modification du nouveau nom de fichier dans la DB (ça ne marchait pas, et je n'avais pas le temps de chercher ...) Alors, après le passage du script, je refais un coup d'indexation (ré indexation de tous les fichiers), et tout est nickel ... (sauf si je monte le dossier sous windows, les noms de films contenant parfois des caractères acceptés par linux, et pas par windows) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 6 mai 2013 Auteur Partager Posté(e) le 6 mai 2013 J'ai testé filebot l'année dernière ... et un vraie catastrophe, il s'est mis à renommer des trucs n'importe comment, alors que je n'avais sélectionné que quelques films @kramlech : Si tu installes une "locale" sur le syno, le problème des accents est "réglé". Tu peux partager le script que tu avais fait, que je jette un oeil (vive le pont de 5 jours ) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kramlech Posté(e) le 6 mai 2013 Partager Posté(e) le 6 mai 2013 @bud : script envoyé en MP .... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 mai 2013 Auteur Partager Posté(e) le 9 mai 2013 (modifié) Voilà où j'en suis, avec un GROS coup de main du script de Kramlech J'ai épuré au max, il n'y a pas de tests, il faut le déposer dans le répertoire contenant les fichiers, et le lancer sans arguments Il va remplacer les espaces dans les noms par des points voir plus bas Il ne me manque plus que la commande pour modifier le path dans la db J'ai la query pour le path, il me reste plus qu'à trouver la syntaxe SQL pour mettre à jour le champ su - admin -c"/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c 'select path from video_file where id=$DB_ID';" Attention, c'est une V1 basique, je compte rajouter d'autres fonctions pour la suite : -Suppression des accents dans le titre (avant envoi en db) -Possibilité de passer un répertoire précis en argument -Possibilité de définir MAJ ou test uniquement (c'est déjà dans le script de Kramlech, donc je vais surement faire un copier/coller ) -Sortie dans un fichier texte au cas où on veux garder une trace Modifié le 11 mai 2013 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kramlech Posté(e) le 9 mai 2013 Partager Posté(e) le 9 mai 2013 La mise à jour du champ se fait via l'ordre update video_file set path = $path where id=$DB_ID Petite précision : j'avais mis cet ordre dans mon script, la mise à jour se faisait bien, mais quand on allais dans Video Station, on pointait toujours sur l'ancien path... Et je n'avais pas pris le temps de rechercher si cela provenait d'autres tables à mettre à jour, ou s'il y avait une espèce de cache au niveau de la base .... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 mai 2013 Auteur Partager Posté(e) le 9 mai 2013 (modifié) Ouep, j'ai bien trouvé cette commande, mais y'a un souci lorsque je l'envoi dans la commande à lancer (à cause des simple et double quote) La commande SQL est celle-ci : UPDATE video_file SET path = '/new/path/to/file.ext' WHERE id= '$DB_ID'; (avec quote obligatoires autour du path) J'ai essayé de variabilisé, mais en vain ... J'en suis là, et je bloque. J'ai tenté de faire un nouvelle variable ayant le path entre simple quote, mais elles sautent lors de l'interprétation su - admin -c"/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c 'UPDATE video_file SET path = $NEW_PATH WHERE id= $DB_ID;'" Modifié le 9 mai 2013 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 9 mai 2013 Partager Posté(e) le 9 mai 2013 Essaie comme ceci: su - admin -c'/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = $NEW_PATH WHERE id= $DB_ID;"' 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 mai 2013 Auteur Partager Posté(e) le 9 mai 2013 Essaie comme ceci: su - admin -c'/usr/syno/pgsql/bin/psql -d video_metadata -q -A -t -c "UPDATE video_file SET path = $NEW_PATH WHERE id= $DB_ID;"' Non plus, il n'interprete plus la variable ERROR: syntax error at or near "= $" LINE 1: UPDATE video_file SET path = $NEW_PATH2 WHERE id= $DB_ID; Et si je protège pas la variable, il la voit nulle : ERROR: syntax error at or near "WHERE" LINE 1: UPDATE video_file SET path = WHERE id= ; 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 mai 2013 Auteur Partager Posté(e) le 9 mai 2013 Bon, j'ai trouvé un contournement : Je passe par un fichier sql temporaire, contenant la commande, et là, tout marche nickel Je fais encore quelques tests avant de publier une V2 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 9 mai 2013 Auteur Partager Posté(e) le 9 mai 2013 (modifié) Voici la V2, qui met à jour la DB, et qui nettoie le nom des fichiers, sans accents, en remplaçant les espaces par des "." A lancer en root, dans le dossier contenant les fichiers (arborescence plate pour l'instant) Voir v3 Modifié le 10 mai 2013 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 10 mai 2013 Auteur Partager Posté(e) le 10 mai 2013 (modifié) Voici une V3, qui est presque 100% fonctionnelle Se lance de n'importe ou, nettoie les noms de fichier, demande avant de faire une MaJ et prends en charge les sous-dossiers ... sauf si ils ont un espace dans leur nom (Manquera plus que la sortie de log quand j'aurais réglé le souci des dossiers avec espace)Pour les dossiers avec espace, tout se déroule bien jusqu'au move, mais une fois qu'il lance le fichier SQL, j'ai une erreur car il voit un espace dans la query Pourtant, la query sort bien avec des simple quote autour du path, et lorsque je lance à la main, elle fonctionne très bien ... Exemple d'erreur : -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*- Renommer /volume1/test/FTP/Films/Integrale Star Wars DVDRIP/Star Wars - Episode IV - Un nouvel espoir HQ.avi en /volume1/test/FTP/Films/Integrale Star Wars DVDRIP/Star.Wars..Episode.IV.-.Un.nouvel.espoir.1977.avi Mise a jour du fichier ? (o/n)o psql: FATAL: role "Star" does not exist Pourtant le SQL est ok : UPDATE video_file SET path = "/volume1/test/FTP/Films/Integrale Star Wars DVDRIP/Star.Wars..Episode.IV.-.Un.nouvel.espoir.1977.avi" WHERE id= 27; Modifié le 11 mai 2013 par bud77 1 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eric75 Posté(e) le 10 mai 2013 Partager Posté(e) le 10 mai 2013 je viens juste d'acheter mon premier NAS DS213 . donc vraiment noob sur ce materiel. le script m interesse mais je ne sais pas du tout comment l utiliser ? j'ai juste crée un volume sur mon 1er disque et donc rien installer . il existe un tuto pour lancer un script sur un syno ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 10 mai 2013 Auteur Partager Posté(e) le 10 mai 2013 Pas vraiment de tuto, car c'est plutôt de l'unix en général Mais avant d'en arriver au script, il va falloir que tu installes "videostation" et que tu vérifie que toutes les infos que tu as sont bonnes avant de lancer le script 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eric75 Posté(e) le 10 mai 2013 Partager Posté(e) le 10 mai 2013 d'un PC , faut utiliser putty je suppose ? j'ai deja gere un shell unix mais y a un petit moment installer videostation np, verifier que les infos sont bonnes ? quelles infos ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 10 mai 2013 Auteur Partager Posté(e) le 10 mai 2013 Oui, il faudra passer par putty pour lancer le script Les infos dont je parle, sont les "metadata" qui sont affiché dans l'interface videostation, pour chaque film que tu y a ajouté (titre, année, acteur, realisateur etc etc) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eric75 Posté(e) le 10 mai 2013 Partager Posté(e) le 10 mai 2013 je suis en pleine verification de mon premier DD (je sais pas si la verification est necessaire sans RAID mais bon ca peux faire que du bien) , donc pourrai commencer a installer videosation que demain car ca semble long la verif 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 11 mai 2013 Auteur Partager Posté(e) le 11 mai 2013 (modifié) Et voilà, script terminé en V5, vous le trouverez ici : Attention : A lancer avec le user "admin" Se lance de n'importe ou sur le syno Crée un log "rename.log" dans le répertoire ou se trouve le script Modifie le titre des fichiers pour remplacer les espaces par des points, supprime les accents, les virgule (,), point virgule ( , simple quote ('), remplace les (&) par (Et) Ajoute l'année dans le titre Gère les sous-dossiers (même ceux avec accents et espaces) Demande avant chaque modification (valider par "o" à chaque fois) Modifie la base de donnée avec le nouveau nom (si la modification a été effectuée) Modifié le 11 mai 2013 par bud77 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eric75 Posté(e) le 11 mai 2013 Partager Posté(e) le 11 mai 2013 (modifié) j'ai un soucis , j ai transfere quelques films dont certains avec accents. je peux pas les renommer par filestation car cela me repond file inexistant. filezilla ou flashfxp plante si j essai de renommer. et du coup le script les reperes pas non plus une idée ? il y a un sorte de losange qui remplace la lettre avec accent (PS: les films avec accents proviennent d'un popcorn qui est sous linux bizarre que ca passe pas sur un syno) Modifié le 11 mai 2013 par eric75 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 11 mai 2013 Auteur Partager Posté(e) le 11 mai 2013 Pour tes fichiers problématique, il y a 2 combines : tabulation et * (le 2 via putty) Tabulation : Place toi dans le répertoire contenant le fichier en question, et commence à taper les premières lettre (attention à la casse) puis appuie sur la touche "tab" Si il n'y a qu'un seul fichier correspondant à ce début, il te donnera le nom "bizarre" Tu peux alors le renommer avec un "mv" : "mv nom_pourri.avi nom_ok.avi" * C'est le même principe que la tabulation : "mv nom_pourr* nom_ok.avi" Tu remplace la fin du nom de fichier par étoile Attention, il ne faut pas que plusieurs fichiers correspondent à cette sélection, sinon, il faudra affiner avec d'autres * 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
eric75 Posté(e) le 11 mai 2013 Partager Posté(e) le 11 mai 2013 j'ai trouvé une solution , je renomme avec filezilla sur mon disque ext USB3 qui contient le disque du popcorn avant de transférer sur le syno. dommage que le syno gere pas les accents comme sur popcorn , les 2 sont sous linux . y a pas une demande de correctif a faire ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 11 mai 2013 Auteur Partager Posté(e) le 11 mai 2013 Si, çà a été mainte et mainte fois demandé,en vain. Il y a malgré tout un palliatif : installer la locale fr_fr 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Kramlech Posté(e) le 12 mai 2013 Partager Posté(e) le 12 mai 2013 Et voilà, script terminé en V5, vous le trouverez ici : Bravo, cela a l'air super .... J'ai encore des progrès à faire en scripting ..... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
bud77 Posté(e) le 12 mai 2013 Auteur Partager Posté(e) le 12 mai 2013 Merci, mais la base que tu m'as envoyé m'a appris pas mal de chose aussi, et google pour le reste J'ai fait encore une modif ce matin : suppression du caractère "oe" (le vrai, que je sais pas taper d'ailleurs) et vérification que le user qui lance est bien admin Je vais l'upload dans la soirée 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.