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 08/11/2010, à 22:07

tyzef

[Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

Bonjour,
j'ai besoin de faire un script capable d'extraire les tags ID3 de fichiers mp3, ogg, flac, mp4. Hélas je ne trouve pas comment extraire ces métadonnées. Du coup, je ne suis pas contre un coup de main.
Merci aux contibuteurs.

PS: j'aimerais autant que ce soit du shell.

Dernière modification par tyzef (Le 13/11/2010, à 01:34)


Nous sommes la réalité et c'est pourquoi nous entendons la changer!
----------LUG Bordeaux : Giroll - http://www.giroll.org -----------

Hors ligne

#2 Le 09/11/2010, à 05:39

greg73

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

Bonjour,

Regarde id3v2. C'est un petit utilitaire en ligne de commande pour lister/editer les tags ID3.

Hors ligne

#3 Le 09/11/2010, à 14:24

samfuzz

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

ou avec ffmpeg, ffprobe

ffmpeg -i nomdefichier
ffprobe -show_format -convert_tags nomdefichier

avantage : supporte ogg, flac, mp3, m4a, mpc ..........

Dernière modification par samfuzz (Le 09/11/2010, à 16:20)

Hors ligne

#4 Le 09/11/2010, à 16:19

tyzef

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

Merci ... je testerais ça ce soir ou ce week end.


Nous sommes la réalité et c'est pourquoi nous entendons la changer!
----------LUG Bordeaux : Giroll - http://www.giroll.org -----------

Hors ligne

#5 Le 10/11/2010, à 02:59

samfuzz

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

je viens de tomber sur ça,
un tagger en ligne de commande et qui bien sur peut lire les tags (utilise taglib, donc devrait reconnaitre pas mal de format)
https://github.com/alip/envtag

Hors ligne

#6 Le 10/11/2010, à 03:29

samfuzz

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

encore moi (ben oui ça m'intéresse) : ---> taginfo peut-etre le plus simple dans un script
trouvé grace à ce sujet  http://forum.ubuntu-fr.org/viewtopic.php?pid=967401
http://freshmeat.net/projects/taginfo

testé, et c'est ok avec les mp3, ogg, flac, m4a, mpc, wma

exemple

./taginfo 01.flac
FILE="01.flac"
ALBUM="albumTEST"
TRACK="1"
ARTIST="test"
TITLE="flac"
GENRE="mflac1"
YEAR="1999"
COMMENT="Track 1"
LENGTH="303"
BITRATE="838"
SAMPLERATE="44100"
CHANNELS="2"

Hors ligne

#7 Le 13/11/2010, à 01:30

tyzef

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

Bon alors j'ai testé tout ça et un peu plus du coup... Ma préférence a été pour mp3info qui permet très facilement d'extraire les tags indépendamment.
Cependant, maintenant j'ai un autre problème (je sors d'ailleurs du sujet).
J'ai des fichiers contenant des espaces et ça fout la merde dans mon script... J'ai pensé échapper les caractères espace mais là l'anti-slash est lu tel quel par mp3info dans le script (pas directement en ligne de commande).

Je peux peut-être fournir le script en entier pour que vous voyez si je peux récupérer mon nom de fichier avec un anti-slash considéré comme caractère d'échappement.

#!/bin/bash

# Synopsis :
# Parcours du répertoire de musique
# pour chaque fichier flac, mp3, ogg
# -> extraire les tags
# -> si tous les tags sont renseignés
# --> ajout dans le fichier collection_complete (nom de fichier complet, tags[art., album, titre, année, piste])
# -> Sinon ajout dans fichier coll incomplete

# Historique
# Date            Version        Auteur        Commentaire
# 11/11/2010    1.0            Tyzef        Création

#Fin du programme
function finProg {
    fin=$1
    args=$*
    if [ $fin -gt 0 ]; then
        echo "Fin du programme avec erreur."
        if [ $# -gt 1 ]; then
            echo "$args"
        fi
        exit $fin
    else
        echo "Analyse terminée normalement."
        exit 0
    fi
}

# Contrôles
function controles {
    echo "Choix du répertoire de musique  : $repMusic" 
    if [ ! -d $repMusic ]; then
        echo "$repMusic n'est pas un répertoire."
        finProg 2
    fi
    
    if [ ! -d $repAnalyse ]; then
        echo "$repAnalyse n'est pas un répertoire"
        finProg 2
    fi
    
    if [ -f $ficFull ]; then
        echo "Suppression du fichier 'complet' précédent"
        rm -f $ficFull
    fi
    
    if [ -f $ficUnFull ]; then
        echo "Suppression du fichier 'incomplet' précédent"
        rm -f $ficUnFull
    fi
    
    if [ -f $ficList ]; then
        echo "Suppression de la liste des fichiers précédente"
        rm -f $ficList
    fi
    
    touch $ficUnFull
    touch $ficList
    touch $ficFull
}
echo "------------- Musicalyze -------------"

if [ $# -gt 0 ]; then    
    if [ -d $1 ]; then
        repMusic=$1
    else
        repMusic=$REP_MUSIC
    fi
else 
    repMusic=$REP_MUSIC
fi
prog=$0
repAnalyse=`dirname $prog`
ficList=$repAnalyse/allMusicFiles.lst
ficFull=$repAnalyse/collection_complete.csv
ficUnFull=$repAnalyse/collection_incomplete.csv



controles

# Création de la liste de fichier
echo "... Génération de la liste des Fichiers"
for ext in ".mp3" ".flac" ".ogg"; do
    find $repMusic -print | grep $ext  >> $ficList 
    retour=$?
    if [ $retour -gt 1 ]; then 
        finProg $retour "PB avec Find"
    fi
done

# remplacement des espaces
sed 's/ /\\ /g' $ficList > $ficList.tmp
mv $ficList.tmp $ficList

echo "... Extraction des infos"
while read fic; do
     #echo $fic
    if [[ ! -f ${fic} ]]; then
        echo $fic
        finProg 2 "Le fichier $fic n'existe pas"
    fi
    artiste=`mp3info -p %a "${fic}"`
        mretour=$?
    album=`mp3info -p %l "${fic}"`
        mretour=`expr $? + $mretour`
    titre=`mp3info -p %t "${fic}"`
        mretour=`expr $? + $mretour`
    piste=`mp3info -p %n "${fic}"`
        mretour=`expr $? + $mretour`
    if [[ $mretour -gt 0 ]]; then
        finProg $mretour "PB avec mp3info sur le fichier $fic"
    fi
    #echo "$artiste/$album/$piste - $titre"
    
    if [[ $artiste != "" && $album != "" && $titre != "" && $piste != "" ]]; then
        echo "$artiste;$album;$piste;$titre;$fic" >> $ficFull
    else
        echo "$artiste;$album;$piste;$titre;$fic" >> $ficUnFull
    fi
    
    if [[ $mretour -gt 0 ]]; then
        finProg $mretour "PB avec mp3info sur le fichier $fic"
    fi
done < $ficList


finProg 0

Merci pour vos éventuels commentaires.

Dernière modification par tyzef (Le 13/11/2010, à 18:30)


Nous sommes la réalité et c'est pourquoi nous entendons la changer!
----------LUG Bordeaux : Giroll - http://www.giroll.org -----------

Hors ligne

#8 Le 13/11/2010, à 18:30

tyzef

Re : [Résolu] [Shell] Extraction des tags ID3 des mp3 et autres formats

Bon c'est bon j'ai trouvé ... il manquait des guillemets autour de ma variable ... ça marche maintenant ...
(je met à jour le script dans le messages précédents si quelqu'un veut le reprendre.)

Merci pour vos collaborations sur le sujet principal.


Nous sommes la réalité et c'est pourquoi nous entendons la changer!
----------LUG Bordeaux : Giroll - http://www.giroll.org -----------

Hors ligne