Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 17/06/2011, à 20:30

metalux

Script pour renommer MP3 à partir du tag

Bonsoir,
Je souhaite faire un script qui permet de renommer des MP3 à partir de leurs tags. J'ai cherché mais je n'ai trouvé que des applications graphiques et rien en ligne de commande. Y a t-il un outil qui permet de renommer de la manière suivante: N°piste-Titre.mp3.
Sous Windows j'avais réalisé un script batch avec MP3Tagger( voir ici).
Je n'ai jamais fait de script shell, aussi un coup de main serait bienvenu smile.
Au passage, si il n'y a pas d'outil pour faire ceci, l'application ci-dessus est en java et doit pouvoir s'installer sur Ubuntu mais je ne sais pas comment. Merci de votre aide.

Hors ligne

#2 Le 18/06/2011, à 02:03

aduxas

Re : Script pour renommer MP3 à partir du tag

Est-ce que ce post-ci va dans la bonne direction?

Hors ligne

#3 Le 18/06/2011, à 06:50

metalux

Re : Script pour renommer MP3 à partir du tag

Merci aduxas mais ce post semble indiquer le contraire de ce que je veux faire.
Je souhaite extraire le tag "titre" pour renommer le mp3 alors que dans le cas du post indiqué, c'est l'inverse. Il récupère le titre pour l'insérer dans le tag apparemment. Je vais quand même voir de ce côté si id3 permet de faire ce que je souhaite.

Hors ligne

#4 Le 18/06/2011, à 11:00

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

En cherchant bien, je suis sur que tu trouveras un script qui fait le taf (c'est une demande récurente).

Par contre, si ce qui t'intéresse c'est d'apprendre le bash, et ce script serait un exercice, il faudrait déjà commencer par une doc sur le bash (il y a man bash, mais plutot indigeste).
Un bon lien: http://abs.traduc.org/abs-5.3-fr/index.html

Pour extraire les mp3, eyeD3 est pas mal (il renomme également avec les tag. Par contre, pour le numéro de piste, si le tag n'est pas indiqué, ca sera pas génial (il faudrait passer un coup de rename en plus).

desktop:~$ eyeD3 --rename="%n-%A-%t" './gainsbourg-laetitia.mp3' 

gainsbourg-laetitia.mp3    [ 1.43 MB ]
-------------------------------------------------------------------------------
Time: 01:33    MPEG1, Layer III    [ 128 kb/s @ 44100 Hz - Joint stereo ]
-------------------------------------------------------------------------------
ID3 v2.3:
title: Laetitia        artist: Serge Gainsbourg
album:         year: None
track:         
Comment: [Description: ] [Lang: ]


WXXX [Description: ]: 
Renaming file to '%n-Serge Gainsbourg-Laetitia'

En partant de là, un boucle pour récupérer les mp3 et passer cette commande pour chaque fichier.
Regarde la complétion bash, un challenge de totor t'aidera  http://forum.ubuntu-fr.org/viewtopic.php?id=418602&p=1

Maintenant, si tu ne veux pas apprendre, dis le, ce script sera très vite écrit.

Dernière modification par AnsuzPeorth (Le 18/06/2011, à 11:02)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#5 Le 18/06/2011, à 19:55

metalux

Re : Script pour renommer MP3 à partir du tag

Pour que tout soit clair, je vais expliquer ce que je souhaite. Ceci n'est qu'une partie du script dont j'ai besoin. Il s'agit d'un disque dur externe qui a planté et je me retrouve avec un dossier found000 dans lequel il y a quelques milliers de fichiers avec l'extension .chk(ce dossier a été crée sous windows). Ubuntu arrive à les lire sans problèmes mais ceux-ci sont tous mélangés(images-son-pdf, etc...). Dans un premier temps je souhaiterais que le script déplace dans un dossier uniquement les mp3(possible à partir du type mime je pense) supérieurs à une taille définie(1 Mo) et que finalement il les renomme N°piste-Titre.mp3

AnsuzPeorth a écrit :

Maintenant, si tu ne veux pas apprendre, dis le, ce script sera très vite écrit.

Je souhaite apprendre(mais je ne sais pas si j'en suis capable! sad )
Pour être franc je n'ai pas trop le temps en ce moment mais je compte m'y atteler durant cet hiver si j'ai suffisamment de disponibilité. Si pour toi c'est vite écrit, je le veux bien dans l'immédiat. Sinon je passerai manuellement en graphique par nautilus à défaut ainsi que par pyrenamer.
En attendant, merci bien pour le lien et la piste vers eyed3 big_smile

Hors ligne

#6 Le 18/06/2011, à 21:04

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Je pense qu'il faudrait tout de suite placer chaque fichiers dans des dossiers distinct. Autant le faire de suite, de toute façon, il faudra passer la commande, alors autant en profiter.
Je propose de créer un dossier pour chaque type mime rencontrer et déplacer les fichiers dedans.
Dans un deuxième temps, on s'occupera des mp3.
Fait des essais sur un petit échantillon de fichier (dans un autre dossier)

#/bin/bash
# adresse du dossier à scanner.
cd "/home/dossierrecup/found000"
for fichier in *
do
    mime=$(file -b --mime-type "${fichier}")
    dossier="${mime//\//_}"
    [[ ! -e "${dossier}" ]] && mkdir "${dossier}"
    mv "./${fichier}" "${dossier}"
done
exit

Fait déjà ça, ca prendra pas mal de temps.
Pour les mp3, ca sera du même genre, en ajoutant une commande eyeD3 si metatag.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#7 Le 18/06/2011, à 22:34

metalux

Re : Script pour renommer MP3 à partir du tag

Ouah, je suis toujours admiratif de la puissance des scripts shell (et envieux de ceux qui les réalise).
J'ai fais l'essai avec quelques fichiers et ca marche à merveille! merci infiniment.
Il faut absolument que je me documente sur le bash. Peux tu néanmoins m'expliquer le script et la syntaxe utilisée(j'ai compris à priori le début et la fin, reste à comprendre

mime=$(file -b --mime-type "${fichier}")
    dossier="${mime//\//_}"
    [[ ! -e "${dossier}" ]]

Tu crées une variable "dossier" qui prend comme nom le type mime c'est bien ça?
Et dans le cas ou on sélectionne un seul type-mime (mp3 en l'occurence dans ce cas), que faudrait t-il changer?
Dis moi si cela t'embête de m'expliquer, c'est déjà super que tu me fais un  script personnalisé! big_smile

Hors ligne

#8 Le 18/06/2011, à 22:47

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Il faut absolument que je me documente sur le bash

C'est avec le lien que je t'ai donné plus haut et l'aide de ce forum que j'ai appris tout ce que je sais (mais je ne connais pas tout non plus smile)

mime=$(file -b --mime-type "${fichier}")
mime => text/plain
dossier="${mime//\//_}"
je remplace les / par des _ pour créer un nom de dossier
[[ ! -e "${dossier}" ]] && mkdir
si le dossier n'existe pas, je le crée

Et dans le cas ou on sélectionne un seul type-mime (mp3 en l'occurence dans ce cas), que faudrait t-il changer?

Ben le truc c'est qu'une commande file sera lancer sur chaque fichier, alors autant en profiter pour les déplacer, le traitement sera un peu plus long qu'un test, mais ce sera fait comme ça, enfin, si tu compte récupérer d'autres fichiers que les mp3.
Sinon, il faudra tester le type mime. Mais dans cas, pas besoin de créer un dossier pour chaque mime.

[[ "$mime" == "audio/mpeg" ]] && mv

Dis moi si cela t'embête de m'expliquer

Tu as de la chance, je viens de finir un module pour gmediafinder, et il bug, donc j'attends la réponse du responsable smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#9 Le 18/06/2011, à 23:05

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Pour renommer d'après les tags

#/bin/bash
# adresse du dossier à scanner.
cd "/home/dossierrecup/dossierMP3"
for fichier in *
do
    mime=$(file "${fichier}")
    [[ "$(file ${fichier})" =~ "ID3" ]] && {
        eyeD3 --rename="%n-%A - %t"    
    }
done
exit

Les fichiers qui n'auront pas de tag num pistes, commenceront pas %n, un petit coup de rename pour finir et ca sera marre.
On pourrait tout faire en une seule passe, mais je pense que la commande integré --rename de eyeD3 sera plus rapide que de devoir parser le résultat, verifier et agir selon. Mais je peux me tromper smile

Donc, si tu veux agir que sur les mp3, tu fais un mix de tout ça wink

Dernière modification par AnsuzPeorth (Le 18/06/2011, à 23:07)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#10 Le 19/06/2011, à 09:27

metalux

Re : Script pour renommer MP3 à partir du tag

Merci énormément, je vais étudier tout ca et j'ai tout le nécessaire pour réaliser ce que je souhaite.

C'est avec le lien que je t'ai donné plus haut et l'aide de ce forum que j'ai appris tout ce que je sais (mais je ne connais pas tout non plus smile)

Si j'atteins n'est-ce que le dixième de ton niveau, j'en serais très heureux vu d'où je part.

Tu as de la chance, je viens de finir un module pour gmediafinder, et il bug, donc j'attends la réponse du responsable

Je vois que le projet de smo attire que des membres très actifs sur le forum(Merle m'a également répondu dans certains de mes posts) Félicitations et merci encore pour ton dévouement.

Hors ligne

#11 Le 19/06/2011, à 10:11

metalux

Re : Script pour renommer MP3 à partir du tag

Merci énormément, je vais étudier tout ca et j'ai tout le nécessaire pour réaliser ce que je souhaite.

Euh, juste une chose que j'ai oublié, il faut que je puisse ignorer les fichiers inférieurs à 1 Mo (il y en a plein qui sont des en fait des fichiers son provenant d'un jeu d'aucune utilité). Sais tu également comment faire cela?

Hors ligne

#12 Le 19/06/2011, à 11:14

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Si j'atteins n'est-ce que le dixième de ton niveau, j'en serais très heureux vu d'où je part.

On a tous débuté un jour ...

Je vois que le projet de smo attire que des membres très actifs sur le forum(Merle m'a également répondu dans certains de mes posts) Félicitations et merci encore pour ton dévouement.

Le forum est réputé pour sa réactivité, mais malheureusement, les pointures du forum partent les uns après les autres, souvent suite à des réflexions déplacé de certains membres, je pense à alainG, Totor, sputnick, etc ... c'est vraiment dommage, c'était des cadors ces gens là.
Mais bon d'autres prennent la relève, même si il sont moins actifs et/ou compétant.

Sais tu également comment faire cela?

Si tu veux apprendre la programmation, il faudra déjà apprendre à chercher par toi même plutôt que d'attendre une réponse toute cuite roll
C'est en cherchant qu'on tombe sur d'autres truc, c'est comme ça qu'on élargi ses compétences.

Sinon, la commande stat permet d'avoir la taille d'un fichier (la commande ls est exploitable, mais un peu plus galère)

Je sais tjrs comment tu va t'y prendre, plusieurs passe ou pas ? De cette décision dépendra l'emplacement de cette commande.
Sinon la commande serait de ce type:

size=$(stat -c %s '${fichier}')
[[ "$size" > 1000000 ]] && commande

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#13 Le 19/06/2011, à 14:03

metalux

Re : Script pour renommer MP3 à partir du tag

Si tu veux apprendre la programmation, il faudra déjà apprendre à chercher par toi même plutôt que d'attendre une réponse toute cuite

Entièrement d'accord. Dans un premier temps j'avais besoin d'avoir une réponse toute cuite pour faire ce que je voulais mais je souhaite quand même comprendre ce que réalise le script. En somme, ce script ne me servira pas à apprendre directement mais je souhaite quand même analyser ce qu'il fait.
Promis, je vais chercher par moi même quand je vais approfondir le sujet.

je sais tjrs comment tu va t'y prendre, plusieurs passe ou pas ? De cette décision dépendra l'emplacement de cette commande.

Là je ne comprends pas ce que tu veux dire par plusieurs passes? J'avais déjà réalisé une chose similaire en batch(fonction set) qui permettait de tester la taille avant de déplacer le fichier. En bash cela doit être similaire je suppose, non? En même temps vu que je suis auto-didacte et que le pc n'était pas présent dans le domaine scolaire quand j'y étais(j'suis déjà si vieux??? yikes) le peu que j'ai fais est plus écrit avec les pieds qu'autre chose! lol
Merci pour tout.

Hors ligne

#14 Le 19/06/2011, à 15:22

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Là je ne comprends pas ce que tu veux dire par plusieurs passes?

Ca dépends si tu récupères uniquement les mp3 de ton dossier found000, ou bien si le traitement se fera sur un dossier rempli de mp3.

n même temps vu que je suis auto-didacte et que le pc n'était pas présent dans le domaine scolaire quand j'y étais(j'suis déjà si vieux??? yikes)

Mon premier contact, le seul et unique pendant des années, c'était en 4 eme, sur des MO5 (ca coutait un mois de salaire à l'époque) .... Ca date !
arff le basic, if then goto, step & co ...Ca marchait bien lol

Dernière modification par AnsuzPeorth (Le 19/06/2011, à 15:23)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#15 Le 19/06/2011, à 16:41

metalux

Re : Script pour renommer MP3 à partir du tag

Ca dépends si tu récupères uniquement les mp3 de ton dossier found000, ou bien si le traitement se fera sur un dossier rempli de mp3.

Excuses moi mais je ne suis pas sûr de comprendre. Dans un premier temps on déplace les fichiers du dossier found000 dans un dossier audio_mpeg en fonction de leur taille puis, dans un second temps, on les renomme avec eyed3 suivi d'un coup de rename pour l'extension.
A moins que, autre cas, on déplace tous les mp3 du dossier found000 puis c'est uniquement dans ce dossier que l'on sélectionne les fichiers en fonction de la taille.Dans ce cas la commande sera effectivement placée à un endroit différent.
La 1ère solution me semble plus adaptée, sachant que tous les fichiers de petite taille ne nécessite pas de sauvegarde.
Dis moi si ma logique est correcte, et si c'est bien ça que tu dis quand tu parles de 2 passes.

Mon premier contact, le seul et unique pendant des années, c'était en 4 eme, sur des MO5

Moi c'était sur un goupil en 6ème ou 5ème je crois. Puis il y a eu les amstrad cpc464. Dommage que j'ai décroché à ce moment là (l'investissement sans doute, comme tu dis le prix était un frein). La découverte d'Ubuntu a ravivé les flammes d'une passion naissante de mon enfance. et dire que je croyais qu'il n'y avait que Windows il y a encore moins de 2 ans!
En fait les raisons avancés pour lesquelles j'écrit avec les pieds ne sont plus recevables! Oups, là tu m'a cassé cool !

Hors ligne

#16 Le 19/06/2011, à 23:17

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Bon ben t'as tout compris, te reste plus qu'a coller les morceaux smile
Post ce que tu as fait, il y aura tjrs qql'un pour corriger.


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#17 Le 20/06/2011, à 18:53

metalux

Re : Script pour renommer MP3 à partir du tag

OK.Je pars fin de semaine pour un mois, je vois ça à mon retour. Je tâcherai de poster le "collage".
Merci encore. smile

Hors ligne

#18 Le 21/06/2011, à 01:24

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Bon, après qqles test plus approfondi, si les tag sont vide, ca va merder.

Il faudra faire différent, ca sera un peu plus long, mais pas le choix ...

Une  version qui est à utiliser dans le dossier found000
Seul les fichiers audio/mpeg supérieurs à 1 Mo seront déplacés, si des tags présents, il seront taggués.

#/bin/bash
# adresse du dossier à scanner.
cd "/home/dossier/found000"
dossier_dest="./mp3Rescue"
mkdir $dossier_dest

for fichier in *.*
  do
    mime=$(file -b --mime-type "${fichier}")
    size=$(stat -c %s "./${fichier}")
    [[ "${mime}" == "audio/mpeg" ]] && [[ "$size" -gt 1000000 ]] && {
        tags=$(eyeD3 --no-color "./${fichier}")
        while read line
          do
              [[ "$line" =~ ^title ]] && {
                titre=${line#*: }
                titre=${titre%%    *}
                artist=${line##*: }
                artist=${artist%%    *}
              }
              [[ "$line" =~ ^track ]] && {
                  track="${line#*: }"
                  track="${track%%    *} - "
              }
          done <<< "${tags}"
        [[ "$track" =~ "track:" ]] || [[ "${track}" == " - " ]] && track=
        [[ "$artist" =~ "artist:" ]] || [[ -z "$artist" ]] && artist=inconnu
        [[ "$titre" =~ "title:" ]] || [[ -z "$titre" ]] && titre=inconnu
        [[ "$artist" == 'inconnu' ]] && [[ "$titre" == 'inconnu' ]] && {
            mv "./${fichier}" "$dossier_dest/${fichier%.*}.mp3"
            continue
        }
        mv "./${fichier}" "$dossier_dest/${track}${artist} - ${titre}.mp3"
    }
  done
exit

Remplacer les commandes mv par des echo pour les tests. Faire des tests en réel sur un petit nombre de fichiers avant, il faudra peut être ajouter des filtres suplémentaires.

Attention, lors de la copie, vérifier que les tabulations sont gardées, pour les substitutions bash ${track%%    *} et ${artist%%    *} et  titre=${titre%%    *}

Dernière modification par AnsuzPeorth (Le 21/06/2011, à 03:29)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#19 Le 21/06/2011, à 23:40

metalux

Re : Script pour renommer MP3 à partir du tag

Je n'ai pas pu m'empêcher de jeter un coup d'œil au script avant de partir. A quoi sert l'option --no-color de eye3d? Tu vas me dire RTFM mais j'ai rien compris à cette option!
Sinon j'ai testé sur quelques fichiers et il y a un bug dans le renommage. Dans l'exemple suivant:
title: script bash
artist: toi
piste: 1
au lieu d'être renommé "1-script bash.mp3" le titre est renommé "1-toi-script bash artist:toi.mp3"
Après, là, la syntaxe se complique nettement afin que je puisse me débrouiller sans me documenter sérieusement avant. Un coup un # parfois 2 hmm même si au premier abord j'ai, je pense, compris le fonctionnement du script. Par contre je ne vois pas pourquoi tu as crées une variable pour dossier_dest pour créer le dossier mp3rescue?

Hors ligne

#20 Le 22/06/2011, à 00:30

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

A quoi sert l'option --no-color de eye3d?

C'est pour ne pas afficher de couleur sur la sortie (ca cause des bug dans la découpe)

au lieu d'être renommé "1-script bash.mp3" le titre est renommé "1-toi-script bash artist:toi.mp3"

Arfff, tu as bien vérifier les tabulations là où elles doivent être ? Chez moi pas de soucis !
J'ai préféré utiliser principalement du bash, mais le soucis c'est que la sortie eyeD3 mixe des espaces et des tab, pas facile en bash !

Un coup un # parfois 2

C'est la substitution bash
http://abs.traduc.org/abs-5.3-fr/ch09s02.html

Par contre je ne vois pas pourquoi tu as crées une variable pour dossier_dest pour créer le dossier mp3rescue?

C'est les bonnes pratiques, éviter d'écrire en 'dur' dans le code. Mieux vaut utiliser des variables. dossier_dest est utiliser 3 fois.
D'ailleurs, j'aurais du mettre inconnu dans une variable également ...

Pour te rendre compte du truc, lance une commande eyeD3 en console, et essaie de découper la sortie comme tu veux, tu verras, galère.
awk serait une alternative, mais bon, ca demanderait plus de ressource, donc ca serait plus lent !

Dernière modification par AnsuzPeorth (Le 22/06/2011, à 00:31)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#21 Le 22/06/2011, à 19:27

metalux

Re : Script pour renommer MP3 à partir du tag

Salut Ansuz,
J'ai mis des tabulations (j'avais fais un simple copier/coller par manque de temps, pourtant tu l'avais bien précisé) et maintenant les titres sont renommés:
N°-artiste-titre.mp3
Je souhaite uniquement renommer de la façon suivante: N° titre.mp3 sans les tirets et le nom de l'artiste.
Par contre cette histoire que eyeD3 mixe des espaces/tabulations, c'est du chinois pour moi. Je réserve ça pour les longues soirées d'hiver. 

essaie de découper la sortie comme tu veux, tu verras, galère

Pour toi c'est clair mais je ne sais pas ce que veux dire "découper la sortie". Je n'ai pas encore appris le bash, aussi tu vas un peu vite pour moi. En tout cas, tu as décuplé mon envie d'apprendre. Le choix du bash est un bon choix avec Ubuntu, n'est-ce pas?
Une autre chose qui complique, c'est que je me rend compte que la manière dont j'ai l'habitude de renommer ne différencie pas les artistes.Il faudrait dans ce cas que je récupère le tag artiste pour créer un dossier du même nom et déplacer les mp3 dans leur sous-dossier respectifs. Pour ça, je verrai plus tard en essayant de me débrouiller tout seul, même si, comme je te l'ai expliqué, je n'ai pas besoin de ce script comme exercice (j'ai prévu ça pour plus tard), c'est l'occasion de débuter en modifiant petit à petit un script de base. As-tu sinon un lien sur eyeD3 en français, j'ai un peu de mal avec l'anglais et c'est un frein à bien comprendre le manuel pour les pages sans traduction.

Hors ligne

#22 Le 22/06/2011, à 21:23

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Je souhaite uniquement renommer de la façon suivante: N° titre.mp3 sans les tirets et le nom de l'artiste.

Je sais pas si c'est une bonne idée, mais soit smile
Il suffit d'enlever toutes les occurences de la variable artiste, et enlever le tiret de la variable track

Le choix du bash est un bon choix avec Ubuntu, n'est-ce pas?

Tout dépends ce que tu veux !

Si tu veux juste faire de petits sotfs, sans besoin de gros calcul, bash est pas mal. Surtout que c'est le language de la console, donc c'est plutot pratique.

Si tu compte faire plus gros, plus rapide, avec besoin de maintenir facilement ton code, je dirais python (qui est presque plus simple que bash !).

Attention, ce n'est que mon avis smile


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#23 Le 23/06/2011, à 22:22

metalux

Re : Script pour renommer MP3 à partir du tag

Tant mieux, ce sont les 2 langages qui ont retenus mon attention. Je vais commencer par le bash, ça ne peut être que profitable à me familiariser un peu plus avec la console. Sinon j'ai viré les occurrences de la variable artiste et le tiret de la variable track et je n'obtiens pas le résultat souhaité.J'ai essayé avec quelques fichiers et ils sont soit non renommés si il n'y a pas de tag titre(normal dans ce cas), soit renommés inconnu-titre.mp3 si le titre est taggué (il y a inconnu- en trop). Voici le script modifié, regarde si j'ai bien fais:

#/bin/bash
# adresse du dossier à scanner.
cd "/home/lamour/found"
dossier_dest="./mp3Rescue"
mkdir $dossier_dest

for fichier in *.*
  do
    mime=$(file -b --mime-type "${fichier}")
    size=$(stat -c %s "./${fichier}")
    [[ "${mime}" == "audio/mpeg" ]] && [[ "$size" -gt 1000000 ]] && {
        tags=$(eyeD3 --no-color "./${fichier}")
        while read line
          do
              [[ "$line" =~ ^title ]] && {
                titre=${line#*: }
                titre=${titre%%    *}
                
                
              }
              [[ "$line" =~ ^track ]] && {
                  track="${line#*: }"
                  track="${track%%    *}  "
              }
          done <<< "${tags}"
        [[ "$track" =~ "track:" ]] || [[ "${track}" == " - " ]] && track=
        [[ "$artist" =~ "artist:" ]] || [[ -z "$artist" ]] && artist=inconnu
        [[ "$titre" =~ "title:" ]] || [[ -z "$titre" ]] && titre=inconnu
        [[ "$artist" == 'inconnu' ]] && [[ "$titre" == 'inconnu' ]] && {
            mv "./${fichier}" "$dossier_dest/${fichier%.*}.mp3"
            continue
        }
        mv "./${fichier}" "$dossier_dest/${track}${artist} - ${titre}.mp3"
    }
  done
exit

Le script ne s'exécute que dans une console, or, sur la documentation, il est indiqué: Le fait de rendre le script exécutable permet aussi de l'exécuter en double cliquant sur son icône depuis le gestionnaire de fichier.. J'ai cherché mais je n'ai pas trouvé la raison. Pour info, Nautilus est bien paramétré sur lancer les fichiers textes exécutables.

Hors ligne

#24 Le 23/06/2011, à 23:34

AnsuzPeorth

Re : Script pour renommer MP3 à partir du tag

Bjr,
Je t'avais dit d'enlever toutes les occurrences à artiste big_smile

Il faut virer la ligne:

        [[ "$artist" =~ "artist:" ]] || [[ -z "$artist" ]] && artist=inconnu

enlever :

        [[ "$artist" == 'inconnu' ]] &&

enlever la variable ${artist} dans

        mv "./${fichier}" "$dossier_dest/${track}${artist} - ${titre}.mp3"

Et pour le track, comme tu as enlevé le -, modifier son test

[[ "${track}" == " - " ]]

Le script ne s'exécute que dans une console

Ce n'est pas normal, lorsque tu dis qu'il ne s'exécute pas, les fichiers ne sont pas modifiés ou tu n'as pas de console qui s'ouvre ?
Si c'est la console, c'est normal wink

Dernière modification par AnsuzPeorth (Le 23/06/2011, à 23:35)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#25 Le 23/06/2011, à 23:58

metalux

Re : Script pour renommer MP3 à partir du tag

Ok! Expliqué comme ça, ça parait tellement évident! Pourtant j'avais retourné le problème dans tous les sens et là ca me saute à la figure!Quand je dis qu'il ne s'exécute pas, c'est qu'il ne se passe rien. En console, il est bien exécuté. Faut-il lui mettre une extension particulière? j'ai essayé sans et avec l'extension .sh. Excuses moi pour mes questions de noob roll

EDIT: finalement j'ai compris, ca serait pas plutôt #!/bin/bash au lieu de #/bin/bash au début du script? tongue

Dernière modification par metalux (Le 24/06/2011, à 00:14)

Hors ligne