2009-01-03 27 views
25

He estado usando mutagen para leer y escribir etiquetas MP3, pero quiero ser capaz de incrustar la carátula del álbum directamente en el archivo.¿Cómo incrusta la carátula del álbum en un MP3 usando Python?

+1

¿no es esa una muy mala idea? ¿No aumentarás tus tamaños de mp3 al insertar la misma imagen muchas veces en todos los mp3 de un solo álbum? La carátula del álbum debe pertenecer a la carpeta donde se encuentra el álbum. – nosklo

+2

@nosklo hay reproductores de mp3 que muestran solo imágenes incrustadas y no el que se encuentra en la carpeta – sdu

+0

@nosklo He descubierto que mis archivos mp3 son tan grandes que una pequeña miniatura no hace mucha diferencia. Calculé que mi tamaño promedio era de 6 MB, permití que mis miniaturas fueran de hasta 60 KB, por lo que solo agregan el 1% al tamaño del archivo. Con JPEG que resulta ser suficiente. –

Respuesta

3

Parece que tiene que agregar un tipo especial de marco al MP3. Ver el sitio en ID3 tags

también el tutorial para mutágeno implica que se puede añadir etiquetas ID3 en mutágeno see

12

He utilizado el módulo de eyeD3 hacer esta cosa exacta.

def update_id3(mp3_file_name, artwork_file_name, artist, item_title):  
    #edit the ID3 tag to add the title, artist, artwork, date, and genre 
    tag = eyeD3.Tag() 
    tag.link(mp3_file_name) 
    tag.setVersion([2,3,0]) 
    tag.addImage(0x08, artwork_file_name) 
    tag.setArtist(artist) 
    tag.setDate(localtime().tm_year) 
    tag.setTitle(item_title) 
    tag.setGenre("Trance") 
    tag.update() 
+0

A partir de v0.7, el uso es así: 'audiofile = eyed43.load (file_name)' y 'audiofile.tag.artist = artist', etc. Ver: http://eyed3.nicfit.net/ –

+0

Este blog hace un buen trabajo al explicar la implementación de eyed3 usando la API actualizada y la última. http://tuxpool.blogspot.in/2013/02/how-to-store-images-in-mp3-files-using.html –

35

Aquí es cómo agregar example.png como portada del álbum en example.mp3 con mutágeno:

from mutagen.mp3 import MP3 
from mutagen.id3 import ID3, APIC, error 

audio = MP3('example.mp3', ID3=ID3) 

# add ID3 tag if it doesn't exist 
try: 
    audio.add_tags() 
except error: 
    pass 

audio.tags.add(
    APIC(
     encoding=3, # 3 is for utf-8 
     mime='image/png', # image/jpeg or image/png 
     type=3, # 3 is for the cover image 
     desc=u'Cover', 
     data=open('example.png').read() 
    ) 
) 
audio.save() 
+2

Esto no funciona; Sigo el código anterior y obtengo "TypeError: se requiere un entero" – Tensigh

+1

Para mí tampoco, obtengo: 'TypeError: 'str' object no puede interpretarse como un entero'. Rastreo completo y fuente aquí: https://gist.github.com/brutus/69c51cd706a6cf5d1594 – Brutus

+1

Me pareció necesario usar 'v2_version = 3' en' save' para que las nuevas etiquetas puedan ser leídas por Windows 7, y yo simplificó este código al leer directamente en un objeto 'ID3'. De lo contrario, esta respuesta fue perfecta, ninguno de los errores informados por otros. –

0

Una buena herramienta pequeña CLI, que me ha ayudado mucho con la comprobación de lo que hice mientras que el desarrollo ID3 cosas son mid3v2 que es la versión mutagen de id3v2. Viene incluido con la biblioteca de mutantes de Python. La fuente de esta pequeña herramienta también me dio muchas respuestas sobre cómo usar mutagen.

1

Possible solution

¿Estás tratando de incrustar imágenes en una gran cantidad de archivos? Si es así, encontré un script (ver el enlace) que pasa por un conjunto de directorios, busca imágenes y las incrusta en archivos MP3. Esto fue útil para mí cuando realmente quería tener algo que ver en CoverFlow en mi (ahora difunto) iPhone.

+0

El enlace muerto. – raincrash

Cuestiones relacionadas