Aller au contenu

Script : Renommer Les Films D'apr


bud77

Messages recommandés

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

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)

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 :P)

-Sortie dans un fichier texte au cas où on veux garder une trace

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

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

Lien vers le commentaire
Partager sur d’autres sites

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

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

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

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

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 ?

Lien vers le commentaire
Partager sur d’autres sites

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

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

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 *

Lien vers le commentaire
Partager sur d’autres sites

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 ?

Lien vers le commentaire
Partager sur d’autres sites

Merci, mais la base que tu m'as envoyé m'a appris pas mal de chose aussi, et google pour le reste :D

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

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.