[SCRIPT] renommer fichiers à partir d'une liste par mots clés

renommer fichiers à partir d'une liste par mots clés [SCRIPT] - Logiciels - Windows & Software

Marsh Posté le 09-05-2023 à 15:59:15    

Salut,
 
je cherche à renuméroter une série de vidéos en fonction d'un fichier TXT qui contiendrait la liste des titres de fichiers.
 
Plus concrètement, il s'agit des vidéos C'est Pas Sorcier récupérées de Youtube.
(donc source légale je suppose ; si le sujet est borderline je peux éditer ma demande  [:polionamen] )
 
Le souci est que les numéros d'épisodes des vidéos ne correspond pas aux numéros indiqués sur TVDB ou TheMovidDB.
 
Comme il y a plusieurs centaines d'épisodes, je cherche un moyen de modifier automatiquement par script le numéro d'épisode des fichiers vidéos, à partir de la liste des épisodes que je récupèrerai de TVDB (par exemple) dans un fichier TXT.
 
Pour aider un peu, les fichiers vidéos avec les numéros d'épisodes erronés disposent du titre de l'épisode dans le nom du fichier, selon un format régulier:

Citation :

C'est pas sorcier - E001 - Un titre d'épisode
C'est pas sorcier - E002 - Autre titre d'épisode
C'est pas sorcier - E003 - Un titre différent d'épisode
C'est pas sorcier - E004 - Encore un titre
...


 
Il doit donc y avoir moyen de faire un script qui :
- lise le nom de chaque fichier video un par un
- extrait le titre du fichier (à partir du 27-ième caractère par exemple)
- scanne le fichier TXT contenant la liste des épisodes avec un ou plusieurs mots-clés issus du titre extrait
- extraie le numéro d'épisode correspondant, du fichier TXT
- écrive le numéro de l'épisode dans le titre du fichier vidéo
 
Bien que non informaticien de formation, je suis un peu familier des scripts BASH, c'est pourquoi je suppose que ma proposition ci-dessus doit être réalisable.
Mais en version WINDOWS, je n'ai aucune idée de comment traiter ça...  :sweat:  
(script DOS ? BAT ? quels mots-clés ? etc...)
 
Toute proposition/suggestion est donc la bienvenue.  :D


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 09-05-2023 à 15:59:15   

Reply

Marsh Posté le 11-05-2023 à 15:14:20    

Avec Powershell il doit y avoir moyen mais ce sera du chipotage.
Sinon Excel peut aider aussi pour créer les bons noms de fichiers : tu crées une liste des vidéos (avec leur nom actuel) au format csv que tu importes dans Excel et avec une formule tu recrées une liste avec les bons noms que tu exportes en csv. Mais il faut encore renommer les vidéos sur base de cette nouvelle liste.

Reply

Marsh Posté le 11-05-2023 à 15:38:48    

hokutonofred a écrit :

Je cherche à renuméroter une série de vidéos en fonction d'un fichier TXT qui contiendrait la liste des titres de fichiers.
 
Plus concrètement, il s'agit des vidéos C'est Pas Sorcier récupérées de Youtube.
(donc source légale je suppose ; si le sujet est borderline je peux éditer ma demande  [:polionamen] )


Ça relève de la copie privée¹, ce n’est donc pas illégal tant que tu ne les repartages pas ailleurs.
 
¹ Et tu fais bien de les sauvegarder, puisqu’il faut considérer les services des GAFAM comme des « poubelles à retardement » qui peuvent tout gicler du jour au lendemain sans avoir de comptes à rendre à quiconque. Au moins, on saura qu’il en restera une copie quand (et non pas si) ce jour arrivera.
 

hokutonofred a écrit :

Comme il y a plusieurs centaines d'épisodes, je cherche un moyen de modifier automatiquement par script le numéro d'épisode des fichiers vidéos, à partir de la liste des épisodes que je récupèrerai de TVDB (par exemple) dans un fichier TXT.
 
[…]
 
Toute proposition/suggestion est donc la bienvenue.  :D


Probablement un script à base d’expression régulières, mais je connais rien à ces dernières.

Reply

Marsh Posté le 11-05-2023 à 20:49:15    

tu demandes à chatgpt de faire ça c'est typiquement le genre de truc pour lui ça :D

Reply

Marsh Posté le 12-05-2023 à 01:40:15    

Je@nb a écrit :

tu demandes à chatgpt de faire ça c'est typiquement le genre de truc pour lui ça :D


Le générateur de baratin qui invente des choses fausses (et te soutire tes infos persos au passage) ? [:shlavos]

Reply

Marsh Posté le 12-05-2023 à 07:51:48    

Non

Reply

Marsh Posté le 12-05-2023 à 10:51:19    

arnuche a écrit :

Avec Powershell il doit y avoir moyen mais ce sera du chipotage.
Sinon Excel peut aider aussi pour créer les bons noms de fichiers : tu crées une liste des vidéos (avec leur nom actuel) au format csv que tu importes dans Excel et avec une formule tu recrées une liste avec les bons noms que tu exportes en csv. Mais il faut encore renommer les vidéos sur base de cette nouvelle liste.


Je ne connais rien à Powershell, et via EXCEL il y aurait le renommage à faire manuellement...
(sur 500 fichiers !)
 
Mais merci d'avoir proposé quelque chose.  :jap:  
 

Trit' a écrit :


Probablement un script à base d’expression régulières, mais je connais rien à ces dernières.


 
Oui sous LINUX je pense être capable de faire 90% du truc à base de grep/sed/awk (peut être un peu de galère pour obtenir une correspondance fiable entre les noms de fichiers extraits et les titres d'épisodes du fichier TXT).
Mais en script Windows je n'ai aucune idée des mots-clés (ni du format de script : BAT ? DOS ? autre ?)
 

Je@nb a écrit :

tu demandes à chatgpt de faire ça c'est typiquement le genre de truc pour lui ça :D


Sans déconner dans la voiture ce matin, c'est ce que je me suis dit.  :D
Je m'en suis jamais servi, ça serait une occasion de tester.
 
Je tenterai le coup prochainement et viendrait donner ici le résultat, ça peut être fun.  :lol:


Message édité par hokutonofred le 12-05-2023 à 10:57:32

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 12-05-2023 à 12:27:12    

si tu veux le faire sous windows je ferai du powershell ou du python

Reply

Marsh Posté le 12-05-2023 à 15:00:38    

Python je vois ce que c'est mais je serait incapable d'ecrire un script.
 
Powershell je ne connaissais pas, mais on dirait une MAJ graphique de cmd non ?
Autant dire qu'à par les commande dir et cp je pars de loin...   :whistle:


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 12-05-2023 à 15:40:46    

hokutonofred a écrit :

Python je vois ce que c'est mais je serait incapable d'ecrire un script.
 
Powershell je ne connaissais pas, mais on dirait une MAJ graphique de cmd non ?
Autant dire qu'à par les commande dir et cp je pars de loin...   :whistle:


Non : PowerShell est un environnement shell complet basé sur .Net Framework, avec ses propres commandes qui sont différentes de celles de l’Invite de commandes héritées de Windows NT 3.1 et MS-DOS. Et s’il a effectivement des alias issus de CMD pour certaines commandes basiques (pour afficher la liste des fichiers d’un dossier, « dir » fonctionne, ainsi que « ls », mais la commande PS canonique est « Get-ChildItem »), son maniement est en réalité tout à fait différent et permet des choses que l’Invite de commandes ne peut pas à elle seule.

Reply

Marsh Posté le 12-05-2023 à 15:40:46   

Reply

Marsh Posté le 12-05-2023 à 19:10:07    

arnuche a écrit :

.....
Sinon Excel peut aider aussi pour créer les bons noms de fichiers : tu crées une liste des vidéos (avec leur nom actuel) au format csv que tu importes dans Excel et avec une formule tu recrées une liste avec les bons noms que tu exportes en csv. Mais il faut encore renommer les vidéos sur base de cette nouvelle liste.

 

Pour créer la liste des vidéos  avec les noms des fichiers actuels il y a plus simple:
Sélectionner dans l'explorateur tout ou partie des fichiers et avec le menu contextuel clic droit  "copier en tant que chemin d'accès".
En tête d'une colonne Excel sélectionnée faire "coller".
La colonne contient alors les noms des fichiers précédés de leur chemin. (facilement supprimable selon besoin avec la commande remplacer tout)
A partir de là on peut faire tout ce qu'on veut avec, par exemple générer une colonne voisine avec la fonction "hypertexte" qui permettra d'ouvrir la vidéo directement depuis Excel.
D'autres colonnes pourront être crées pour aller dans le sens de tes numérotations.
Mais, à partir de cet état, on peut se demander l’intérêt de renommer les fichiers eux mêmes alors qu'on peut garnir les colonnes avec des informations pertinentes qui te conviennent.
Si tu partages ces fichiers sur un réseau local tu peux aussi remplacer les chemins d'origine par des chemins vers le(s) dossiers partagés sous la forme \\serveur\dossier\nom du fichier.
J'ai fait ça pour plus de 600 films enregistrés TNT (par mes soins) avec lien créés vers wikipedia quasi automatiquement.
Un filtre automatique est aussi disponible pour sélectionner un sous ensemble (enfin, bref, c'est Excel)


Message édité par yf38 le 13-05-2023 à 07:42:28
Reply

Marsh Posté le 12-05-2023 à 21:24:27    

Merci pour la proposition, qui mérite d'être creusée.

 

Par contre concernant la lecture des fichiers, c'est pour une utilisation dans KODI.
(d'où mon souhait de retrouver la numérotation de TVDB, qui est exploité par ma configuration de KODI)

 

Du coup je ne suis pas sûr que les référencements sous EXCEL soient compatibles avec KODI, non ?


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 12-05-2023 à 21:27:27    

Non, useless

 

edit: tu as un exemple d'épisodes où ça correspond pas ?

Message cité 1 fois
Message édité par Je@nb le 12-05-2023 à 21:30:21
Reply

Marsh Posté le 13-05-2023 à 09:58:24    

Pour un essai à partir de ton exemple de numérotation régulière j'ai fait un petit fichier Excel avec 4 colonnes.
Une ligne de titre, une ligne pour filtre automatique, une colonne A vide.
Une colonne C avec les noms à la mode TVDB (inventé des numéros)
Une colonne E avec les noms de fichiers collés comme j'avais indiqué dans le post précédent.
Une colonne B avec la formule =DROITE(C3;NBCAR(C3)-27)
Une colonne D avec la formule =DROITE(E3;NBCAR(E3)-27)
En triant par ordre alphabétique chaque paire (BC puis DE) selon le nom expurgé  en ne sélectionnant que les deux bonnes avant le tri, on se retrouve avec les colonnes de nom expurgés sur la même ligne et aussi le nom de fichier et le nom DBTV.
La formule lien_hypertexte permet de créer un lien vers le fichier pour lancer la vidéo avec le lecteur par défaut, ce qui n'impose pas kodi.
S'il est possible d'ouvrir la description de la video dans TVDB dans un navigateur par un lien issu du nom de fichier TVDB, lien_hypertexte peut le faire.
(ça me plairait de le savoir).
Bon, tu peux préférer KODI et ses addons etc. mais si tu veux creuser l'autre solution j'ai fait un petit pas...
Avant tri:
https://zupimages.net/up/23/19/oakv.png
Après le tri
https://zupimages.net/up/23/19/zd2s.png

 

Cette discussion part du principe que les noms sont les mêmes à une numérotation près, et là j'ai un doute.
Il y a au moins le cas de certains caractères spéciaux interdits dans les noms de fichiers ( le : en particulier) qui imposent des suppléments de filtrage dans les traitements.

Message cité 1 fois
Message édité par yf38 le 13-05-2023 à 11:25:00
Reply

Marsh Posté le 13-05-2023 à 15:09:28    

Je@nb a écrit :

Non, useless
 
edit: tu as un exemple d'épisodes où ça correspond pas ?


 
 
Alors voici les premiers fichiers (sans les extensions mp4) :
 

Citation :


C'est pas sorcier E001 Le son en concert
C'est pas sorcier E002 Les plus gros navires du monde
C'est pas sorcier E003 Sur le plancher des vaches
C'est pas sorcier E004 Les tours infernales
C'est pas sorcier E005 Une affaire qui roule : l'automobile
C'est pas sorcier E006 Ma poubelle vaut de l'or
C'est pas sorcier E007 Silence, on coule ! : les sous-marins
C'est pas sorcier E008 L'hôpital de la tête aux pieds
C'est pas sorcier E009 L'électricité : quand les branchés disjonctent
C'est pas sorcier E010 Au feu les pompiers !


 
 
Et voici ce que mentionne TVDB (quand je cherche ici avec des mots clés) :
 

Citation :

S01E508  Le son en concert  
S01E134  Les plus gros navires du monde  
S01E285  Sur le plancher des vaches  
S01E51  Les tours infernales  
S01E135  Une affaire qui roule  
S01E163  Ma poubelle vaut de l'or  
S01E512  Silence, on coule ! Les sous-marins.  
S01E497  L'hôpital de la tête au pied  
S01E509  Électricité : quand les branchés disjonctent  
S01E520  Au feu, les pompiers !


Message édité par hokutonofred le 13-05-2023 à 15:09:45

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 13-05-2023 à 15:14:01    

yf38 a écrit :

Pour un essai à partir de ton exemple de numérotation régulière j'ai fait un petit fichier Excel avec 4 colonnes.
Une ligne de titre, une ligne pour filtre automatique, une colonne A vide.
Une colonne C avec les noms à la mode TVDB (inventé des numéros)
Une colonne E avec les noms de fichiers collés comme j'avais indiqué dans le post précédent.
Une colonne B avec la formule =DROITE(C3;NBCAR(C3)-27)
Une colonne D avec la formule =DROITE(E3;NBCAR(E3)-27)
En triant par ordre alphabétique chaque paire (BC puis DE) selon le nom expurgé  en ne sélectionnant que les deux bonnes avant le tri, on se retrouve avec les colonnes de nom expurgés sur la même ligne et aussi le nom de fichier et le nom DBTV.
La formule lien_hypertexte permet de créer un lien vers le fichier pour lancer la vidéo avec le lecteur par défaut, ce qui n'impose pas kodi.
S'il est possible d'ouvrir la description de la video dans TVDB dans un navigateur par un lien issu du nom de fichier TVDB, lien_hypertexte peut le faire.
(ça me plairait de le savoir).
Bon, tu peux préférer KODI et ses addons etc. mais si tu veux creuser l'autre solution j'ai fait un petit pas...
Avant tri:
https://zupimages.net/up/23/19/oakv.png
Après le tri
https://zupimages.net/up/23/19/zd2s.png
 
Cette discussion part du principe que les noms sont les mêmes à une numérotation près, et là j'ai un doute.
Il y a au moins le cas de certains caractères spéciaux interdits dans les noms de fichiers ( le : en particulier) qui imposent des suppléments de filtrage dans les traitements.


 
Merci pour ce bel exemple.
Effectivement il faudrait une correspondance à base de certains mots-clés et non pas du titre entier.
 
En script BASH je pense qu'avec awk il y aurait moyen de ne sélectionner que les 2ème et 3ème mots après "C'est pas sorcier Exxx "
(pas le 1er mot, qui risque d'être souvent "un" "le" les" "ma" qui sont trop génériques pour garantir une bonne identification/correspondance de titre)
 
Je ne connais pas PowerShell, mais ça propose peut être l'équivalent de awk/sed etc... ?


Message édité par hokutonofred le 13-05-2023 à 15:14:36

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 13-05-2023 à 17:17:07    

Merci pour ton lien
https://thetvdb.com/series/its-not- [...] absolute/1
En sélectionnant (Firefox) toute la partie utile à l'écran et en copiant (encore ! ) le résultat directement dans un fichier Excel vide j'arrive à un fichier contenant les numéros dans une colonne et le nom sous forme de lien (qui fonctionne) vers la fiche TVBD de l'épisode.
Pour ça il faut supprimer les colonnes de droite inutiles, puis supprimer la fusion des cellules fusionnées, puis supprimer  toutes les lignes vides.
Tout ça peut se faire assez facilement globalement
Il reste un peu plus de 600 lignes utilisables.
Si j'avais tout ou partie  des fichiers vidéo correspondants, avec des noms approximativement identiques, il faudrait les coller dans une colonne.
Resterait à trouver un équivalent de ma manip de tri pour aligner les noms TVBD et les noms de fichiers, puis inclure le numéro TVDB dans le nom de fichier.
Pas évident avec des noms pas toujours identiques, encore que le tri alphabétique peut fonctionner avec un peu de chance.
Mais après il faudrait renommer les fichiers eux mêmes, on a pas encore gagné.
Le début des 600 et plus de lignes:
https://zupimages.net/up/23/19/z4dd.png

 

edit: en créant une colonne qui envoie sur YouTube pour chercher le titre qu'on a eu par TVDB on a un résultat qui dépend de l'existence de la vidéo sur YouTube.
S'il existe, ou très voisin, il s'affiche en tête des propositions et on peut cliquer dessus pour le lancer.
s'il n'existe pas on a une série de proposition pertinentes avec les mots du titre.
C'est relativement exploitable si on se contente d'un Accès aux vidéos sur YouTube et pas avec des fichiers locaux.
Les exemples que tu as donnés sont présents sur YouTube avec un titre identique ou voisin de celui de TVDB.
Pour cette méthode les numéros aussi bien de TVDB que ceux de la liste que tu as donnés (fichiers) ne servent pas à grand chose.


Message édité par yf38 le 14-05-2023 à 07:45:35
Reply

Marsh Posté le 14-05-2023 à 03:08:54    

J'ai lu plusieurs fois le message d'ouverture et... j'ai pas bien compris.
 
Tu as quoi exactement ? Tu veux quoi exactement ? Ce que j'ai compris (le peu), c'est que tu as un répertoire de CPS avec les vidéos YT, et tu as un fichier texte avec un épisode par ligne avec la numérotation CPS de YT. Tu es allé sur TVDB (quel intérêt ?) et tu as remarqué que la numérotation des épisodes n'est pas la même que celle de YT. Et tu souhaites remplacer dans le nom du fichier YT la numérotation YT par celle de TVDB.
 
Corrige-moi si j'ai faux :)

Reply

Marsh Posté le 14-05-2023 à 07:22:01    

J'ai compris la même chose que toi, mais la vraie raison n'est pas clairement exprimée.
TVDB fournit un résumé et quelques metadonnées sur l'épisode.
L'utilisation de KODI avec un addon pour aller scrapper la fiche dans TVDB doit y être pour quelque chose.
La numérotation des fichiers me semble liée aux téléchargements.
Faut-il à KODI le numéro TVBD dans le nom du fichier pour aller chercher directement la fiche ?
Si on part des fichiers pour obtenir la fiche exploitée par KODI c'est peut-être la raison.
Avec ma manip Excel du post précédent je suis parti dans l'autre sens.
J'ai récupéré tous les CPS (600 et plus) de TVBD avec leurs liens vers la fiche et généré un lien vers la recherche YouTube des mots du titre.
Manifestement tous les épisodes ne sont pas sur YouTube, et certains ont des noms un peu différents.
S'il utilisait cette méthode il n'y aurait même pas besoin de télécharger les fichiers, YouTube suffirait, mais ça impose d'être connecté.
Et il faut Excel ou LibreOffice Calc.
Il va nous expliquer.
edit: francisé metadata...


Message édité par yf38 le 14-05-2023 à 10:08:50
Reply

Marsh Posté le 14-05-2023 à 08:03:59    

La demande est claire : pouvoir renommer les fichiers téléchargés a la bonne syntaxe pour que Kodi les reconnaissent correctement et les indexent avec les métadonnées de tvdb

Reply

Marsh Posté le 14-05-2023 à 09:07:33    

C'est vrai que je n'ai pas mentionné la lecture des vidéos avec KODI, dans mon message initial.

 

L'information apparaît plus tard dans le fil de discussion.

 

Il n'y a pas de souci de téléchargement : je dispose déjà des épisodes.

 

Je souhaite "juste" les renommer/renuméroter pour qu'ils correspondent à ce qui est mentionné dans TVDB, la base de données que j'utilise dans KODI.

 

Afin que lorsque les enfants lanceront par exemple la lecture de l'épisode La science et le patrimoine (1er épisode sur TVDB, qui serait affiché dans KODI) ils ne se retrouvent pas avec Le son en concert (fichier nommé EP001 dans le dossier des fichiers).


Message édité par hokutonofred le 14-05-2023 à 09:41:21

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 14-05-2023 à 11:02:59    

J'ai poursuivi les essais avec ton exemple et je peux obtenir la colonne pour avoir les nouveaux noms de fichiers modifiés selon l'objectif.
Mais il y a le problème des noms de fichiers qui sont differents entre TVDB et les tiens.
Pour ceux qui sont OK on obtient le numéro TVDB  pour les autre #NA.
Par exemple L'Electricté..... n'a pas le L' dans TVDB, etc.

 

Un traitement final manuel s'impose pour finir par obtenir deux colonnes avec le nom de fichier actuel et le nouveau nom.
En principe les deux points dans la colonne nom initial ne devraient pas exister si tu obtient ces noms par "copier en tant que chemin d'accès", je les ai modifiés ici car ton exemple les contenait (supprimer le : et un blanc ou seulement le : selon le nom initial).
Ajouter un blanc dans certains cas à la fin du nom obtenu par TVDB et les modifier au besoin (L'électricité par exemple)
Ces changements n'affectent pas les liens vers les fiches, seul leur titre.
On obtient :
https://zupimages.net/up/23/19/dz9j.png

 

Reste (si c'est le résultat voulu) à trouver l'outil pour renommer en utilisant les deux colonnes résultat.
Le fichier est disponible quand et si tu le veux.


Message édité par yf38 le 14-05-2023 à 18:35:07
Reply

Marsh Posté le 14-05-2023 à 20:04:42    

Oui je suis intéressé par ton fichier EXCEL.
C'est toujours intéressant d'apprendre des astuces sur différents outils. :)
 
Par contre moi dans l'explorateur de Windows 10, si je sélectionne des fichiers puis fais un clic-droit je n'ai pas d'option pour "copier en tant que chemin d'accès".
Uniquement les classiques "couper" ou "copier".

 
Ah je vois que c'est accessible dans le menu "Accueil" de l'explorateur.
 
EDIT : dans la 4ème colonne, est ce qu'il y aurait moyen d'ajouter un "0" pour tous les épisodes inférieurs à 100 ?
C'est à dire que les numérotation de type S01E51 deviennent S01E051.


Message édité par hokutonofred le 14-05-2023 à 20:07:29

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 14-05-2023 à 20:29:58    

Ce serait plus joli je vais voir, et pour le fichier je pense pouvoir le mettre sur cjoint en format xlsx (voire xls) et te passer le lien.
edit la modif est faite pour que les numérotation de type S01E51 deviennent S01E051.
Le fichier est récupérable en cliquant:
https://www.cjoint.com/c/MEotkzCvhWV
Valable pendant 4 jours
à demain  :hello:

Message cité 1 fois
Message édité par yf38 le 14-05-2023 à 21:16:20
Reply

Marsh Posté le 14-05-2023 à 22:26:28    

J'ai fais mumuse ce soir pour scripter ça en powershell :
https://gist.github.com/jbpaux/afa1 [...] 58e75c4d44
Récupère le CSV des épisodes de thetvdb et le script
Configure ligne 2 l'emplacement du dossier des épisodes.
 
Par défaut il va pas les renommer, juste faire semblant. Si tu veux qu'il les renomme vraiment tu enlèves sur la ligne Rename-Item à la fin le -WhatIf
 
C'est pas optimisé, c'est codé comme un gros dégueu mais ça marche.
J'ai repris des fonctions un peu partout pour m'aider (typiquement calculer la distance de Levenshtein entre 2 chaînes de caractères) mais c'est pas mal.
L'idée est que pour chacun de tes épisodes je calcule la distance du nom par rapport à chacun des épisodes de thetvdb et je prends celui qui est le plus similaire.
Pour optimiser déjà ça peut valoir le coup de faire cette recherche de similarité que pour les fichiers qui n'ont pas un match exact car ça c'est rapide à trouver mais bon, flemme ce soir :D j'ai déjà fait un chouilla d'optimisation en allant pas chercher plus loin si on a déjà trouvé le bon.

Reply

Marsh Posté le 15-05-2023 à 07:28:08    

yf38 a écrit :

Ce serait plus joli je vais voir, et pour le fichier je pense pouvoir le mettre sur cjoint en format xlsx (voire xls) et te passer le lien.
edit la modif est faite pour que les numérotation de type S01E51 deviennent S01E051.
Le fichier est récupérable en cliquant:
https://www.cjoint.com/c/MEotkzCvhWV
Valable pendant 4 jours
à demain  :hello:


Merci !

Je@nb a écrit :

J'ai fais mumuse ce soir pour scripter ça en powershell :
https://gist.github.com/jbpaux/afa1 [...] 58e75c4d44
Récupère le CSV des épisodes de thetvdb et le script
Configure ligne 2 l'emplacement du dossier des épisodes.
 
Par défaut il va pas les renommer, juste faire semblant. Si tu veux qu'il les renomme vraiment tu enlèves sur la ligne Rename-Item à la fin le -WhatIf
 
C'est pas optimisé, c'est codé comme un gros dégueu mais ça marche.
J'ai repris des fonctions un peu partout pour m'aider (typiquement calculer la distance de Levenshtein entre 2 chaînes de caractères) mais c'est pas mal.
L'idée est que pour chacun de tes épisodes je calcule la distance du nom par rapport à chacun des épisodes de thetvdb et je prends celui qui est le plus similaire.
Pour optimiser déjà ça peut valoir le coup de faire cette recherche de similarité que pour les fichiers qui n'ont pas un match exact car ça c'est rapide à trouver mais bon, flemme ce soir :D j'ai déjà fait un chouilla d'optimisation en allant pas chercher plus loin si on a déjà trouvé le bon.


Merci pour cette proposition également.  :jap:  
 
Je testerai ce soir car je suis au boulot aujourd'hui.
 
Question de noob : comment j'exécute/édite le scrit .js1 ?
 
En tapant son nom dans une fenêtre cmd ?
Ou bien il faut obligatoirement installer un outil type NodeJS ?
(vu dans un résultat de recherche Google)


---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 15-05-2023 à 08:31:26    

Pour la solution Excel le fichier évolue et sera disponible dans quelques jours.
La récupération de la liste de fichiers depuis TVDB donne un caractère blanc en dernier caractère du nom et un soulignement du lien mais pas pour tous.
Le soulignement est pratique pour repérer les cas sans blanc en fin de nom.
Si on supprime le soulignement (format de cellule) ça fonctionne encore mais on ne voit plus le blanc final...
Pour que la recherchev fonctionne en colonne H il faut que le blanc soit dans B et G ou aucun des deux.
Pour l'instant le plus simple est d'ajouter le blanc en B quand il n'y est pas, mais alors il est ajouté au nom de renommage.
Une évolution améliore ça si on ne veut pas de blanc final pour le renommage.
changer la formule de la colonne K par =GAUCHE(F4;17)&" "&J4&" "&GAUCHE(G4;NBCAR(G4)-1)

 

Edit: En ajoutant une macro j'ai pu faire changer les noms de fichiers sur un exemple des trois premiers fichiers:
état initial:
https://zupimages.net/up/23/20/3ygw.png
état après exécution de la macro:
https://zupimages.net/up/23/20/dmm0.png

 

lien où j'ai trouvé la macro (modifiée pour adapter):
https://fr.extendoffice.com/documen [...] er.html#a2

 

Le prochain fichier sera en .xlsm (j'aime pas les macros, mais bon, pour une fois... )
il faudra aussi traiter les extensions des fichiers.

 



Message édité par yf38 le 15-05-2023 à 10:21:51
Reply

Marsh Posté le 15-05-2023 à 12:27:05    

hokutonofred a écrit :


Merci pour cette proposition également.  :jap:  
 
Je testerai ce soir car je suis au boulot aujourd'hui.
 
Question de noob : comment j'exécute/édite le scrit .js1 ?
 
En tapant son nom dans une fenêtre cmd ?
Ou bien il faut obligatoirement installer un outil type NodeJS ?
(vu dans un résultat de recherche Google)


 
C'est ps1 pas js1 ;)
Tu peux l'ouvrir dans notepad déjà pour modifier le chemin et le whatif.
Puis pour le lancer, soit bouton droit et Exécuter (à voir j'ai pas regardé s'il prend bien les infos aux bon endroit) sinon qd tu es dans l'explorateur windows dans ton dossier où il y a le script tu tapes dans la barre d'adresse powershell.exe ça va t'ouvrir une fenêtre powershell (comme l'invité de commande mais plus intelligent :D) et tu tapes .\Rename-Episodes.ps1 pour exécuter le script.

Reply

Marsh Posté le 15-05-2023 à 12:31:23    

Je@nb a écrit :

(comme l'invité de commande mais plus intelligent :D)


L’invite, sans accent (et nom féminin au passage)… [:manust]

Reply

Marsh Posté le 15-05-2023 à 12:33:49    

on s'en branle non ?

Reply

Marsh Posté le 15-05-2023 à 15:30:49    

On arrive au bout, avec la solution Excel.
La version actuelle sait renommer effectivement les fichiers.
Leur extension peut avoir 2,3,ou 4 lettres ( .ts .mp4 .mkv .m2ts etc. )
Le fichier xlsm est disponible pour 4 jours sur cjoint:
https://www.cjoint.com/c/MEpnupkmE2V
Ce fichier avec sa macro a servi pour l'exemple suivant:
dossier initial
https://zupimages.net/up/23/20/89ng.png
dossier après renommage
https://zupimages.net/up/23/20/rofs.png
Conseil: essayer d'abord avec un petit exemple et avant d'exécuter la macro sur les vrais fichiers, et il serait mieux d'en avoir une sauvegarde.
C'est pas que les fichiers puissent être détruits mais leur nom sera changé, c'est le but, mais peut-être pas comme souhaité si un problème imprévu arrive.

 


Message édité par yf38 le 15-05-2023 à 15:41:41
Reply

Marsh Posté le 15-05-2023 à 16:08:05    

Excel a donc la possibilité de renommer des fichiers ?
Je pensais que pour la dernière étape il faudrait Powershell.

Reply

Marsh Posté le 15-05-2023 à 16:13:18    

Oui, mais avec une macro VBA que j'ai trouvée ici:
https://fr.extendoffice.com/documen [...] er.html#a2
il faut modifier le Range("A:A" ), 0) avec la colonne et le numéro de ligne (pas 0)
et Cells(xRow, "B" ) changer le B pour la colonne destinations.
Fait avec Excel 2003 (oui, 2003 sous Windows 11 à jour) plus l'upgrade de compatibilité 2007
Avec Libreoffice Calc le fichier fonctionne, mais il faudrait s'occuper de la macro qu'il ne gobe pas aussi facilement, mais ça doit se faire.
Il faut aussi baisser le niveau de sécurité des macros du fichier car de nos jours...
J'aime pas les macros.


Message édité par yf38 le 15-05-2023 à 16:55:11
Reply

Marsh Posté le 15-05-2023 à 22:58:27    

J'ai testé le script de Ja@nb sur 10 épisodes (les 5 premiers et les 5 derniers) et ça a l'air de fonctionner.  ;)  
 
Par contre dans KODI il n'y en a que 6 qui sont reconnus par le scrapper TVDB mais rien à voir avec le script je pense.
Il doit y avoir un conflit/bug entre les 3 machines de la maison qui partagent la bdd KODI stockée sur mon NAS.
 
Je ferai des tests complémentaires ce WE pour essayer de résoudre ça, mais pour moi le script est fonctionnel.
(j'essayerai juste de le modifier légèrement pour conserver la numérotation initiale dans le nom des fichiers, en sus de la nouvelle numérotation par épisode, afin de pouvoir revenir en arrière facilement dans le futur avec l'outil ReNamer, si besoin)
 
Merci Je@nb.  :jap:  
 
 
Ce WE je testerai aussi le fichier XLS mais j'ai manqué de temps ce soir.
(et demain y a Koh Lanta bordel !)
 
Merci à toi aussi yf38.  :jap:

Message cité 1 fois
Message édité par hokutonofred le 15-05-2023 à 22:59:21

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 16-05-2023 à 07:12:19    

hokutonofred a écrit :

 

Ce WE je testerai aussi le fichier XLS mais j'ai manqué de temps ce soir.
Merci à toi aussi yf38.  :jap:


Si ce n'est pas fait récupère le dernier fichier xlsm car ce WE il n'y sera plus:
https://www.cjoint.com/c/MEpnupkmE2V
Attention, l'ordre des fichiers dans le dossier et dans la colonne fichier initial Excel doit être le même sinon le traitement s'arrête au premier "non match".
C'est bon si la colonne est faite avec "copier en tant que chemin d'accès" de l'explorateur. Je n'ai pas testé le tri par taille.
Essayer de retourner à l'original en permutant les noms de colonne dans la macro ne fonctionne pas bien car l'ordre des fichiers n'est plus le même dans l'explorateur.


Message édité par yf38 le 16-05-2023 à 08:01:47
Reply

Marsh Posté le 17-05-2023 à 01:44:02    

Je dois pas être futé. J'ai créé un compte TVDB en tant que développeur pour obtenir une clé API de l'API de TVDB. Clé active, mais, je n'arrive pas à l'utiliser. J'ai émis un ticket, et évidemment, on me renvoie vers la doc que j'ai lue OU un abonnement à 12 $ par an. Pas spécialement envie, si c'est pour que je galère.
Donc, je ne peux pas expérimenter mon idée.
En gros, comme TVDB n'est pas une plateforme de DL video ou streaming video mais qu'elle possède une énorme base de données de programmes TV en tout genre, mon idée est la suivante :
créer une API entre les différents téléchargeurs de stream/DL video (JDownloader, YT-download ou son nouveau fork dont je n'ai plus le nom, ...) pour relier la vidéo téléchargée avec ses données TVDB (numéro de l'épisode, descriptif de l'épisode, etc.)
 
Une partie de l'idée en programmation orientée objet et en pseudo-code :
 

Code :
  1. CLASSE Youtube <objet>:
  2.   initialiser(cet_objet <objet>, titre <texte>, description <texte>, épisode <nombre>, fichier_vidéo <texte> ) <objet>:
  3.     cet_objet.titre = titre
  4.     [...]
  5.     cet_objet.fichier_vidéo = fichier_vidéo
  6.     cet_objet.équivalent_TVDB = NUL
  7.   attribuer_l'équivalent_TVDB(cet_objet, équivalent_TVDB <objet> ):
  8.     cet_objet.équivalent_TVDB = équivalent_TVDB
  9.   obtenir_l'équivalent_TVDB(cet_objet) <objet>:
  10.     SI cet_objet.équivalent_TVDB N'EST PAS NUL ALORS:
  11.       RETOURNER cet_objet.équivalent_TVDB
  12. CLASSE Tvdb <objet>:
  13.   initialiser(cet_objet <objet>, titre <texte>, description <texte>, épisode <nombre> ) <objet>:
  14.     cet_objet.titre = titre
  15.     [...]
  16.     cet_objet.fichier_vidéo = fichier_vidéo
  17.     cet_objet.équivalent_Youtube = NUL
  18.   attribuer_l'équivalent_Youtube(cet_objet, équivalent_Youtube) <objet>:
  19.     cet_objet.équivalent_Youtube = équivalent_Youtube
  20.   obtenir_l'équivalent_Youtube(cet_objet) <objet>:
  21.     SI cet_objet.équivalent_Youtube N'EST PAS NUL ALORS:
  22.       RETOURNER cet_objet.équivalent_Youtube
  23. science_patrimoine_yt = Youtube(
  24.   "LaScienceEtLePatrimoineE001",
  25.   "Ça parle de science et de patrimoine et ça vient de CPS de Youtube.",
  26.   001,
  27.   "C:\Vidéos\CPS\LaScienceEtLePatrimoineE001.yt" )
  28. science_patrimoine_tvdb = Tvdb(
  29.   "La science et le patrimoine S2E14",
  30.   "Ça concerne l'épisode sur le patrimoine et la science présenté par l'émission C'est Pas Sorcier !",
  31.   034)
  32. COMMENTAIRE :
  33.   J'ai pris les chiffres d'épisodes de façon arbitraire. Selon mon arbitrage et TVDB, j'indique que La Science Et Le Patrimoine est l'épisode 34 de CPS
  34. FIN COMMENTAIRE
  35. science_patrimoine_yt.attribuer_l'équivalent_TVDB(science_patrimoine_tvdb)
  36. science_patrimoine_tvdb.attribuer_l'équivalent_Youtube(science_patrimoine_yt)
  37. COMMENTAIRE :
  38.   J'ai fait correctement correspondre les objets Youtube et Tvdb équivalents.
  39. FIN COMMENTAIRE

Reply

Marsh Posté le 17-05-2023 à 07:22:14    

Un des problèmes que tu vas trouver c'est que les noms de fichiers (purgés) ne correspondent pas toujours, (50% dans mon test sur 10 fichiers ) aux titres TVDB.
Dans l'autre sens, pour rechercher un titre dans YouTube à partir de la liste des titres d'un ensemble de titres TVDB on ne tombe pas sur la vidéo parce qu'il est différent ou simplement n'existe pas sur YouTube.
Pour résoudre ça, dans mon cas, j'ai envoyé le lien vers la recherche du titre sur YouTube plutôt que le titre lui même.
S'il existe ou assez voisin il arrive en tête des propositions, suivi d'autres du même domaine.
Le fichier Excel que j'ai donné peut être utilisé pour qu'en cliquant sur un titre de la liste TVDB on ait la fiche, et en cliquant sur la cellule YouTube on tombe sur le résultat de la recherche.
On profite de l'algorithme de recherche de YT.
Bon courage.


Message édité par yf38 le 17-05-2023 à 07:26:20
Reply

Marsh Posté le 17-05-2023 à 08:33:21    

Le Cobriste 128 a écrit :

Je dois pas être futé. J'ai créé un compte TVDB en tant que développeur pour obtenir une clé API de l'API de TVDB. Clé active, mais, je n'arrive pas à l'utiliser. J'ai émis un ticket, et évidemment, on me renvoie vers la doc que j'ai lue OU un abonnement à 12 $ par an. Pas spécialement envie, si c'est pour que je galère.
Donc, je ne peux pas expérimenter mon idée.
En gros, comme TVDB n'est pas une plateforme de DL video ou streaming video mais qu'elle possède une énorme base de données de programmes TV en tout genre, mon idée est la suivante :
créer une API entre les différents téléchargeurs de stream/DL video (JDownloader, YT-download ou son nouveau fork dont je n'ai plus le nom, ...) pour relier la vidéo téléchargée avec ses données TVDB (numéro de l'épisode, descriptif de l'épisode, etc.)

 

Une partie de l'idée en programmation orientée objet et en pseudo-code :


l'API permet de récupérer les même infos que le site.
Elle est pas difficile à utiliser (/login pour échanger da clé d'api+pin contre un Access token puis utiliser les différents endpoints pour récupérer les infos /séries/xxxx/episodes par exemple)
J'ai utilisé l'API pour récupérer la liste des épisodes et générer le csv donné même si au final j'aurai fait un copier coller du site CT pareil mais je voulais jouer avec l'API (bon j'ai pas payé moi par contre haha)

Reply

Marsh Posté le 17-05-2023 à 11:34:54    

A propos de générer le CSV, y a un moyen accessible pour un noob comme moi, d'en produire un pour le site TMDB ?
 
Parce qu'en essayant de copier/coller dans une feuille EXCEL la page TMDB dédiée à C'est pas Sorcier, je vous raconte pas le carnage...  :whistle:
 
(je me suis rendu compte qu'avec le scrapper de TVDB Kodi n'identifiait que 430 épisodes environ alors qu'avec le scrapper de TMDB, les 557 épisodes dont je dispose étaient identifiés ; du coup je voudrai tester le script de Ja@nb avec TMDB)


Message édité par hokutonofred le 17-05-2023 à 11:36:54

---------------
Quand Chuck Norris te répond "Dans ton cul", vérifie...
Reply

Marsh Posté le 17-05-2023 à 14:36:00    

Rapido en PowerShell :

Code :
  1. $showid = 39611 # C'est pas sorcier
  2. $apikey = 'TACLEAPI' #API to connect
  3. function Get-Episodes($ShowId, $ApiKey) {
  4.    
  5.     $baseURL = 'https://api.themoviedb.org/3'
  6.     $headers = @{"accept" = "application/json" }
  7.     $queryParams = "?api_key=$apiKey&language=fr-FR"
  8.     $serie = Invoke-RestMethod -Uri "$baseURL/tv/$($showId)$($queryParams)" -Method GET -Headers $headers
  9.     foreach ($s in $serie.seasons) {
  10.         $saison = Invoke-RestMethod -Uri "$baseURL/tv/$showId/season/$($s.season_number)$($queryParams)" -Method GET -Headers $headers
  11.         $saison.episodes
  12.     }
  13. }
  14. Get-Episodes -ShowId $showid -ApiKey $apikey | Select season_number, episode_number, name | Export-CSV -Path 'episodestmdb.csv' -Encoding utf8 -Delimiter ";" -NoTypeInformation


 
ou en Python après avoir installé la librairie tmdbsimple qui permet de pas se faire chier avec des requêtes:
 

Code :
  1. import tmdbsimple as tmdb
  2. import csv
  3. tmdb.API_KEY = 'TACLEAPI'
  4. showId = 39611
  5. serie = tmdb.TV(id=showId).info()
  6. with open('cestpassorcier.csv', 'w', newline ='') as csvfile:
  7.     # identifying header
  8.     header = ['season_number', 'episode_number',  'name']
  9.     writer = csv.DictWriter(csvfile, delimiter=';',quotechar='"', fieldnames = header, extrasaction='ignore')
  10.     writer.writeheader()
  11.     for s in serie.seasons:
  12.         saison = tmdb.TV_Seasons(tv_id=showId,season_number=s['season_number']).info(language='fr-FR')
  13.         writer.writerows(saison['episodes'])

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed