Bonjour,
Je souhaite renommer 1500 fichiers.
Ces fichiers son nommer ainsi : Artiste - Nom De La Chanson.mp3 ou Artiste artiste - Nom De La Chanson.mp3
Est ce qu’il est possible d’écrire un script permettant de les renommer ainsi : Artiste Artiste - Nom de la chanson.mp3 ?
j’aurais fais ça en python moi (en perl c’est sûrement 100x plus court, mais je connais pas)
1ere étape, récupérer la liste des fichiers à renommer (le module os de python à tout ce qu’il faut)
Ensuite, pour chaque nom de fichier dans ta liste:
** 2eme étape, pour chaque fichier, séparer la partie artiste de la partie nom de la chanson, ajouter une majuscule à la première lettre du nom de l’artiste, le dupliquer
** 3eme étape, renommer le fichier avec le nouveau nom.
je popurrais te le faire, mais ça me prendrait un peu de temps car je suis débutant en python, tu peux t’y mettre si tu es motivé (quelques base en programmation peuvent s’avérer utile, si tu n’en as aucune, c’est peut-être pas la meilleur idée, à moins que tu sois vraiment motivé), et je pourrai toujours t’aiguiller et te corriger.
Je connais pas le python mais je connais un tout petit peu le perl.
Je vais voir dans ce sens…
J’avance mais j’ai un problème de regex.
Artiste et artiste - Titre atitre.mp3
Artiste artiste - Titre atitre.mp3
Comment faire pour que le a du artiste soit en majuscule uniquement si artiste à une longueur supérieur à 2 ?
Est-il possible d’écrire des tags id3 avec perl ?
#~*~ UTF-8 ~*~
from os import *
liste_titres = listdir(".")
for titre in liste_titres :
#recherche de la sequence " - " qui separe l'artiste du titre
a=titre.find(" - ")
artiste=titre[:a]
chanson=titre[a+3:]
#recherche du caractere (espace) qui separe (eventuellement) les deux occurences de artiste
b=artiste.find(" ")
if b>0 :
artiste=artiste[:b]
nomfichier=artiste+" "+artiste+" - "+chanson
print nomfichier
Je pense que c’est faisable avec les regexp et find …
Edit : il manque à faire le rename à la place du print à la fin :
rename(titre , nomfichier)
Mais j’ai cela :
#!/usr/bin/perl -w
use strict;
my @elements = glob("/media/gros_docs/0-9/*.mp3");
my $elements;
foreach $elements(@elements) {
$elements = lc($elements);
$elements = ucfirst($elements);
$elements =~ s/ feat / & /; $elements =~ s/ feat. / & /;
$elements =~ s/ feat./ & /; $elements =~ s/ ft / & /;
# ajouter une majuscule artiste composer de deux mots
$elements =~ s/- a{1}/- A/; $elements =~ s/- b{1}/- B/;
$elements =~ s/- c{1}/- C/; $elements =~ s/- d{1}/- D/;
$elements =~ s/- e{1}/- E/; $elements =~ s/- f{1}/- F/;
$elements =~ s/- g{1}/- G/; $elements =~ s/- h{1}/- H/;
$elements =~ s/- i{1}/- I/; $elements =~ s/- j{1}/- J/;
$elements =~ s/- k{1}/- K/; $elements =~ s/- l{1}/- L/;
$elements =~ s/- m{1}/- M/; $elements =~ s/- n{1}/- N/;
$elements =~ s/- o{1}/- O/; $elements =~ s/- p{1}/- P/;
$elements =~ s/- q{1}/- Q/; $elements =~ s/- r{1}/- R/;
$elements =~ s/- s{1}/- S/; $elements =~ s/- t{1}/- T/;
$elements =~ s/- u{1}/- U/; $elements =~ s/- v{1}/- V/;
$elements =~ s/- w{1}/- W/; $elements =~ s/- x{1}/- X/;
$elements =~ s/- y{1}/- Y/; $elements =~ s/- z{1}/- Z/;
print "$elements\n";
}
v_atekor : ton bout de code en python renvoie des trucs bizarres
Ah, possible … Il est basé sur la présence ou non d’espaces, donc si il y en a en plus ou en moins ça ne marche pas (ça peut s’arranger)
En parcourant la chaine de caractère artiste et vérifier si elle est composée de deux fois la même séquence, à la casse près.
Le problème là encore est qu’il faut que ce soir les mêmes séquences. les majuscules minuscules ne sont pas un problème, mais un fichier nommé comme ceci :
Prenom Nom P.Nom - nom du titre.mp3
pose problème
Edit : essaie de copier une dixaines de titres, histoire de voir les cas qui se présentent
Tous mes fichiers sont nommé de la sorte :
Auteur Auteur - Nom De La Chanson.mp3
Auteur Feat Auteur - Nom De La Chanson.mp3
Le problème de ton bout de code :
fichier d’entrée : Fatal Picard - L’amour à la française.mp3
fichier de sortie : Fatal Fatal - L’amour à la française.mp3
#~*~ UTF-8 ~*~
from os import *
from string import capitalize
liste_titres = listdir(".")
for titre in liste_titres :
#recherche de la sequence " - " qui separe l'artiste du titre
a=titre.find(" - ")
artiste=titre[:a]
chanson=titre[a+3:]
#recherche du caractere (espace) qui separe (eventuellement) les deux occurences de artiste
lComposants=artiste.split(" ")
l=len(lComposants)
doublon=True
for i in range(l/2):
if capitalize(lComposants[i])!=capitalize(lComposants[i+l/2]):
doublon=False
if doublon :
lUtile=range(l/2)
else:
lUtile=range(l)
artiste=""
for i in lUtile:
artiste=artiste+" "+lComposants[i]
nomfichier=artiste+" "+artiste+" - "+chanson
print nomfichier
-> C’est bon ?
Fichier d’entrée : Fatal Picard - L’amour à la française.mp3
Fichier de sortie : Fatal Picard Fatal Picard - L’amour à la française.mp3
Fichier d’entrée : Opus - Live Is Life.mp3
Fichier de sortie : - Live Is Life.mp3
Ok, je corrige. (Je m’en doutais )
#~*~ UTF-8 ~*~
from os import *
from string import capitalize
liste_titres = listdir(".")
for titre in liste_titres :
#recherche de la sequence " - " qui separe l'artiste du titre
a=titre.find(" - ")
artiste=titre[:a]
chanson=titre[a+3:]
#recherche du caractere (espace) qui separe (eventuellement) les deux occurences de artiste
lComposants=artiste.split(" ")
l=len(lComposants)
doublon=True
if l%2==0 :
for i in range(l/2):
if capitalize(lComposants[i])!=capitalize(lComposants[i+l/2]):
doublon=False
else :
doublon=False
if doublon :
lUtile=range(l/2)
else:
lUtile=range(l)
artiste=""
for i in lUtile:
artiste=artiste+" "+lComposants[i]
nomfichier=artiste+" "+artiste+" - "+chanson
print nomfichier
Mieux?
Presque ^^
Fichier d’entrée : Olivia Ruiz - La Femme Chocolat.mp3
Fichier de sortie : Olivia Ruiz Olivia Ruiz - La Femme Chocolat.mp3
Fichier d’entrée : Opus - Live Is Life.mp3
Fichier de sortie : Opus Opus - Live Is Life.mp3
nomfichier=artiste+" "+artiste+" - "+chanson
a remplacer par :
nomfichier=artiste+" - "+chanson
et c’est ok :
Fichier d’entrée : Olivia Ruiz - La Femme Chocolat.mp3
Fichier de sortie : Olivia Ruiz - La Femme Chocolat.mp3
Fichier d’entrée : Opus - Live Is Life.mp3
Fichier de sortie : Opus - Live Is Life.mp3
Et tu voudrais quoi ? (parce que c’est ce que j’avais compris defaire)
Le but :
Entrée : Artiste Artiste - Titre De La Chanson
Sortie : Artiste Artiste - Titre de la Chanson
Ici "ive Is Life" et "a Femme Chocolat" ne sont pas mis en minuscule.