[..] Renommage de fichier

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

[..] Renommage de fichier

#1

Message par cortx »

Bonjour;

Je suis en train de créer un script me permettant de renommer mes fichiers en épurant et en formatant son nom.
Mon script vise particulièrement les fichiers de série TV qui sont souvent bourré d'information dont je n'ai pas envie.
Avec ce script je souhaite passer de "nom_de_ma_serie.S01E01.blablabla.720p.xxxxx-yyy.avi" à "nom_de_ma_serie - S01E01.avi"

Voici l'état actuel du script.
► Afficher le texte
Actuellement je suis bloqué sur la partie suivante: Mise en variable du nom de la serie
C'est plus un problème de logique que de codage pour le moment. Je ne vois pas comment extraire une chaine de caractère de longueur variable.
La seule chose qui est connu c'est que c'est "Tous les caractères se trouvant avant le numéro de la série/episode"
Ce numéro de série/episode est souvent défini par SxxExx.
Je pensais donc utiliser un nouveau StringSplit sauf que je suis bloqué étant donné que la série peux etre S0x ou S1x
Et filtrer sur le caractère S est vraiment trop large.

Est ce que quelqu'un à une idée pour solutionner ce souci ?
Est ce que l'un de vous connait une fonction permettant de découper une chaine de caractère avec plus d'option que ce qui est proposé de base ?

Une fois le nom de la série mis en variable ainsi que le numéro de serie/episode, je pourrais ré-écrire complètement le nom via la commande FileMove et tous le reste sera supprimé.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#2

Message par mikell »

Hum
Je me suis déjà trouvé confronté au problème de devoir faire un petit code pour renommer d'un coup les 25 épisodes d'une série nommés par exemple : "[team]_mes.vacances.01_vostfr_[uploader](1280x720){h264}{mp3}[03578952].mp4", le code devant fonctionner pour tous les formats possibles de titres (ce qui impose de devoir mettre certains paramètres en manuel dans la gui)
C'est pas très optimisé mai si ça t'intéresse ...
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Renommage de fichier

#3

Message par cortx »

Bonjour;

Merci pour ce 'petit' bout de code.
Je ne saisi pas trop la chaine de caractère RegExp mais ça marche hormis un truc.
Si je ne met que RegExp voici ce que va donner:
film.vacance.japon.2.[FRENCH+SUB] [Bluray 720p].mkv ---> film.vacance.japon.2..mkv
film vacance - 2013 [BDRIP-1080p-VF-AVC-AAC-TT].mkv ---> film vacance - 2013.mkv
Dans le premier cas, les . ne sont pas supprimé, et si je lui dit qu'il doit transformer les . en espace alors là il ne veux rien faire du tout.
Dans le second il reste la chaine ' - 2013' car elle n'est pas entre crochet.

Ceci dit ma démarche de création me permet surtout de pousser un peu plus ma compréhension du codage avec des exemples concret.
Donc si toi ou d'autre avez des info sur mon code je suis preneur.
A vrai dire je commence à avoir un petit tas de cheveu sur le bureau tellement ça m'énerve de ne pas arriver à faire ce que je veux.
Je vais finir par retourner utiliser filebot (que je conseille d’ailleurs pour renommer série et film en s'appuyant sur une base de donnée) mais bon c'est pas drôle si ca ne sent pas la sueur.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#4

Message par mikell »

C'est clair que le renommage ne se fait pas en un seul clic
Par exemple pour "film.vacance.japon.2. - 2013[FRENCH+SUB] [Bluray 720p].mkv" il faut 2 clics ^^
1 - remplacer " - 2013" par rien et remplacer les points par des espaces
=> film vacance japon 2 [FRENCH+SUB] [Bluray 720p] mkv
2 - brancher le regex, laisser telle quelle la 1ère ligne d'inputs, et dans la 2ème remplacer "mkv" par ".mkv"
=> film vacance japon 2.mkv
J'ai préféré cette formule pour sa souplesse, maintenant pour ton code les réponses à tes questions sont pour la plupart écrites dans mon script
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Renommage de fichier

#5

Message par Tlem »

Bien que pour un tas de chose, un script AutoIt suffit, je me suis rendu compte qu'à la longue, faire un script pour tel cas et puis un autre pour tel autre cas, etc ... devenait à la longue assez frustrant.
Donc plutôt que de ré-inventer la roue sans cesse, j'ai opté pour quelque chose de gratuit, performant et très complet : http://www.antp.be/software/renamer/screenshots/fr
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#6

Message par mikell »

Et Thierry qui s'imagine que je ne sais pas chercher "file renamer" dans gougle :mrgreen:
Je me suis fait ce code parce qu'il correspond précisément à ce que je veux, sans installer quoi que ce soit et sans fonctionnalités superflues
Pourquoi se procurer 50 roues quand on n'a besoin que d'une seule ? :roll:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Renommage de fichier

#7

Message par Tlem »

Ma réflexion était destinée à cortx mon cher Michel ...
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#8

Message par mikell »

Mais oui certes certes mon cher Thierry :mrgreen:
Toutefois ma remarque vaut aussi pour ce que lui cherche à faire (enfin je suppose...)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Renommage de fichier

#9

Message par cortx »

Bonjour;

J'utilise Ant Renamer depuis un bon moment mais je cherchais à faire quelque chose par moi-même pour le 'challenge' de le faire par moi-même juste pour m'améliorer.
C'était pour apprendre à gérer et manier les chaines de caractères et pour en faire quelque chose d'utile que j'utilise presque quotidiennement.

Là avec Ant Renamer il faut passer par une phase d'apprentissage des différents mots à supprimer.

De mon coté le fait de sortir le nom et numéro de saison/série permettrai d'un coup d'un seul de tout supprimer quel que soit le nommage en cours, le nombre de caractères etc.

Mais merci en tout cas de vous être penché sur le problème.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#10

Message par mikell »

cortx a écrit :Est ce que l'un de vous connait une fonction permettant de découper une chaine de caractère avec plus d'option que ce qui est proposé de base ?
Oui, les expressions régulières sont faites exactement pour ça
Mais comme ton 2ème exemple n'a pas grand'chose à voir avec le 1er (les SxxExx ont disparu et les "_" sont remplacés par des ".") j'en conclus que les formats d'entrée peuvent être assez variés, ce qui condamne le StringSplit et impose du regex
Avant d'écrire un tel regex il faut d'abord définir clairement tous les cas de figure possibles (sinon l'expression ne sera pas polyvalente) et c'est ça qui n'est pas évident
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Renommage de fichier

#11

Message par cortx »

Je viens de me lever et je part bosser donc j'ai pas trop le temps de chercher, je note juste ma réflexion du moment j'y reviendrai plus tard.
Est-ce qu'avec un regex on peux 'trouver' la chaine de caractere contenant SxxEyy ? (Ça je suppose que oui)
Et à partir de là il 'suffirait' de dire, ce SxxEyy tu l'isole en variable et tout ce qu'il y a avant tu l'isole dans une seconde. (Ce qui nécéssite d'arriver à trouver un système permettant de définir un fois le SxxEyy isolé en quel position de caractère il commencais.
Il y a une fonction je crois qui permet de compter le nombre de caractère dans une chaine, je verrai si il existe la même chose un peu plus poussé pour les position.
Ce qui ne laisserai plus que le nom de et le SxxEyy pour travailler.

****

Autre réflexion.
Si on découpe toute la chaine caractère par caractère dans un tableau à raison d'un caractère par ligne de tableau.
Est-ce qu'il est possible de savoir si le caractère dans une cellule est un caractère alphabétique ou bien un numéro.
Si oui on passe en revue cellule par cellule et si on trouve un numéro, on regarde si la ligne d'avant est une lettre S
Dans ce cas on obtient une position, ce qui nous permet ensuite de reformer le texte comme on veux en tenant compte de cette position (On connait donc le nombre de caractère contenant le titre)
If cellule = 1,2,3,4,5,6,7,8,9,0 then
If cellule_précédente = S then
......

m.... suis à la bourre pourle boulot à plus mais je pense que c'est à travailler ce systeme de tableau ça me plait bien au moins dans l'idée.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Renommage de fichier

#12

Message par Tlem »

Bonjour.
Avec le système des expressions régulières, il est inutile de ce prendre la tête autant.
Si vous recherchez une chaîne du genre SxxEyy alors la chaîne vous sera retournée.

Si vous voulez renommer un truc du genre 'serie.machin.truc.S01E02.fr.tartenpion.avi' en S01E02.avi, ca va être plutôt simple, malheureusement, il faut prendre en considération divers autres paramètres.

Que va t'il se passer si vous avez :
- 'serie.machin.truc.S01E01-02.fr.tartenpion.avi'.
- 'serie.machin.truc.S01E02.fr.tartenpion.avi' et 'serie.machin.chose.S01E02.fr.tartenpion.avi'.

Le système de l'expression régulière est extrêmement puissant, mais il faut être précis et il faut prévoir les différents cas possibles avant le clash.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Renommage de fichier

#13

Message par cortx »

Le souci c'est que si j'ai 'serie.machin.truc.S01E01.fr.tartenpion.avi
Je ne veux pas le renommer en 'S01E01' mais en 'machin truc - S01E01.avi'
Il faut donc que j'arrive à récupérer la chaine de caractère se trouvant avant le S01E01 pour la traiter afin d'en retirer les élément indésirable tel que les . ou les _
Tout le reste peut être supprimé.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#14

Message par mikell »

Hum il ya des trucs que tu pourras automatiser, d'autres non
Avec ton dernier exemple

Code : Tout sélectionner

$txt = 'serie.machin.truc_S01E01.fr.tartenpion.avi'

$episode = StringRegExpReplace($txt, "(?i).+?(S\d\dE\d\d).+", "$1")
$nom = StringRegExpReplace($txt, "(.+?)" & $episode & ".+", "$1")
$nom2 = StringRegExpReplace($nom, '([_\.])', " ")
$ext = StringRegExpReplace($txt, '.+(\.\w+?)', "$1")

msgbox(0,"", $txt &@crlf& $nom2 &"- "& $episode & $ext)
Le gros problème est de virer "serie"
En effet comment faire pour 'ma.serie.machin.truc_S01E01.fr.tartenpion.avi' ?
La machine ne peut pas deviner, donc c'est pour cette opération qu'il te faudra une intervention manuelle pour lui expliquer que dans un cas il faut virer 1 mot et dans l'autre 2
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
cortx
Niveau 5
Niveau 5
Messages : 115
Enregistré le : dim. 04 mai 2008 16:10
Status : Hors ligne

Re: [..] Renommage de fichier

#15

Message par cortx »

Au pire si il n'y à que ça c'est pas trop grave.
Je n'ai d'ailleur pas souvenir d'avoir vu autre chose que le nom de la serie avant le numéro de saison.

Donc même si il garde tout avant le SxxEyy ça me va quant même.
Sunwo
Niveau 2
Niveau 2
Messages : 22
Enregistré le : ven. 28 juin 2013 16:49
Status : Hors ligne

Re: [..] Renommage de fichier

#16

Message par Sunwo »

Astuce : il existe une appli dédié à ce genre de chose : Ants Renamer.

Existe en version portable.

Une fois paramétré en 3 cliques je renomme des dossiers complets
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#17

Message par mikell »

Prière de bien lire les sujets avant d'y répondre ...
http://www.autoitscript.fr/forum/viewto ... 504#p79504
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Renommage de fichier

#18

Message par jguinch »

J'arrive un peu après la guerre, mais bon.
[quote=Mikell a écrit]Je me suis déjà trouvé confronté au problème de devoir faire un petit code pour renommer d'un coup les 25 épisodes d'une série nommés[/quote]
266 lignes de code pour renommer 25 épisodes... :lol: :lol:
Cela dit, c'est sympa.

Perso, je liste les fichiers avec dir /b > list.txt, puis j'ouvre le fichier list.txt dans Notepad++ et j'utilise les expressions régulières pour faire des remplacements, jusqu'à obtenir un batch qui renomme les fichiers... Du coup, je vais utiliser Ant Renamer...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Renommage de fichier

#19

Message par mikell »

jguinch a écrit :266 lignes de code pour renommer 25 épisodes...
Heu pas tout à fait... mon HD series-dedicated contient ~250 dossiers :mrgreen:
Et comme en matière de renommage cette unique petite gui permet de faire absolument tout, pas besoin d'un bazar tout plein de fonctionnalités que j'utiliserai jamais ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Répondre