119 votes

Pour accéder aux métadonnées mp3 avec Python

Quelle est la meilleure façon de récupérer les métadonnées de mp3 en python ? J’ai vu quelques cadres de là-bas, mais je suis pas sûr de savoir qui serait le meilleur à utiliser... Toutes les idées ?

104voto

Owen Points 5680

J'ai utilisé eyeD3 l'autre jour, avec beaucoup de succès. J'ai trouvé qu'il pourrait ajouter des illustrations pour le tag ID3 qui les autres modules, j'ai regardé ne pouvais pas. Vous devrez télécharger le goudron et exécuter python setup.py install à partir du dossier source.

Des exemples pertinents à partir du site web ci-dessous.

Lire le contenu d'un fichier mp3 contenant v1 ou v2 tag:

 import eyeD3
 tag = eyeD3.Tag()
 tag.link("/some/file.mp3")
 print tag.getArtist()
 print tag.getAlbum()
 print tag.getTitle()

Lecture d'un fichier mp3 (longueur de la piste, le bitrate, etc.) et d'accès: c'est la balise:

if eyeD3.isMp3File(f):
     audioFile = eyeD3.Mp3AudioFile(f)
     tag = audioFile.getTag()

Balise spécifique versions peuvent être sélectionnés:

 tag.link("/some/file.mp3", eyeD3.ID3_V2)
 tag.link("/some/file.mp3", eyeD3.ID3_V1)
 tag.link("/some/file.mp3", eyeD3.ID3_ANY_VERSION)  # The default.

Ou vous pouvez parcourir les images brutes:

 tag = eyeD3.Tag()
 tag.link("/some/file.mp3")
 for frame in tag.frames:
    print frame

Une fois qu'une balise est lié à un fichier, il peut être modifié et enregistré:

 tag.setArtist(u"Cro-Mags")
 tag.setAlbum(u"Age of Quarrel")
 tag.update()

Si l'étiquette liée en était v2 et que vous souhaitez enregistrer en tant que v1:

 tag.update(eyeD3.ID3_V1_1)

Lire dans une balise et le retirer du fichier:

 tag.link("/some/file.mp3")
 tag.remove()
 tag.update()

Ajouter un nouveau tag:

 tag = eyeD3.Tag()
 tag.link('/some/file.mp3')    # no tag in this file, link returned False
 tag.header.setVersion(eyeD3.ID3_V2_3)
 tag.setArtist('Fugazi')
 tag.update()

35voto

jkp Points 20410

J'ai déjà utilisé mutagen pour éditer des tags dans des fichiers multimédias auparavant. L'avantage de mutagen est qu'il peut gérer d'autres formats, tels que mp4, FLAC, etc. J'ai écrit plusieurs scripts avec beaucoup de succès avec cette API.

13voto

Harley Holcombe Points 34618

Ce que vous recherchez, c'est le module ID3 . C'est très simple et vous donnera exactement ce dont vous avez besoin. Il vous suffit de copier le fichier ID3.py dans le répertoire site-packages et d’effectuer les opérations suivantes:

 from ID3 import *
try:
  id3info = ID3('file.mp3')
  print id3info
  # Change the tags
  id3info['TITLE'] = "Green Eggs and Ham"
  id3info['ARTIST'] = "Dr. Seuss"
  for k, v in id3info.items():
    print k, ":", v
except InvalidTagError, message:
  print "Invalid ID3 tag:", message
 

8voto

Corey Goldberg Points 15625

vérifier celui-ci:

https://github.com/Ciantic/songdetails

Exemple d'utilisation:

 >>> import songdetails
>>> song = songdetails.scan("data/song.mp3")
>>> print song.duration
0:03:12
 

Enregistrer les modifications:

 >>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
 

6voto

PabloG Points 9308

Un exemple simple tiré du livre Dive Into Python fonctionne bien pour moi, il s’agit du lien de téléchargement; l’exemple est fileinfo.py. Je ne sais pas si c'est le meilleur, mais cela peut faire le travail de base.

Le livre entier est disponible en ligne ici .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X