Biblioteca de edición de etiquetas en Python, mutagen
La biblioteca de Python mutagen puede utilizarse para editar las etiquetas (metadatos) de los archivos multimedia como el mp3.
Mutagen is a Python module to handle audio metadata. It supports ASF, FLAC, MP4, Monkey’s Audio, MP3, Musepack, Ogg Opus, Ogg FLAC, Ogg Speex, Ogg Theora, Ogg Vorbis, True Audio, WavPack, OptimFROG, and AIFF audio files.
Puedes instalarlo con pip.
$ pip install mutagen
Este es un ejemplo de edición de una etiqueta ID3.
Para más información sobre ID3, consulte el siguiente enlace. La norma se creó originalmente para el mp3, pero ahora se aplica también al mp4 (m4a) y a otros archivos que no son mp3.
mutagen.easyid3
Si sólo quieres leer o escribir los nombres de los artistas, los nombres de los álbumes, los números de las pistas, etc., es fácil utilizar el módulo EasyID3.
from mutagen.easyid3 import EasyID3
Para escribir el título de una canción, haga lo siguiente
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Sólo se puede editar un número limitado de etiquetas para conseguir una interfaz sencilla, pero es suficiente para un uso básico. Las etiquetas que se pueden editar se pueden ver a continuación.EasyID3.valid_keys.keys()
for key in EasyID3.valid_keys.keys():
print(key)
# album
# bpm
# compilation
# composer
# copyright
# encodedby
# lyricist
# length
# media
# mood
# title
# version
# artist
# albumartist
# conductor
# arranger
# discnumber
# organization
# tracknumber
# author
# albumartistsort
# albumsort
# composersort
# artistsort
# titlesort
# isrc
# discsubtitle
# language
# genre
# date
# originaldate
# performer:*
# musicbrainz_trackid
# website
# replaygain_*_gain
# replaygain_*_peak
# musicbrainz_artistid
# musicbrainz_albumid
# musicbrainz_albumartistid
# musicbrainz_trmid
# musicip_puid
# musicip_fingerprint
# musicbrainz_albumstatus
# musicbrainz_albumtype
# releasecountry
# musicbrainz_discid
# asin
# performer
# barcode
# catalognumber
# musicbrainz_releasetrackid
# musicbrainz_releasegroupid
# musicbrainz_workid
# acoustid_fingerprint
# acoustid_id
Es útil definir una función.
Las etiquetas se escriben de la siguiente manera. El número total de pistas (número de canciones) está representado por el denominador de 'tracknumber'. Lo mismo ocurre con el número de discos.
def set_id3_tag(file_path, title=None, artist=None, albumartist=None, album=None, genre=None,
track_num=None, total_track_num=None, disc_num=None, total_disc_num=None):
tags = EasyID3(file_path)
if title:
tags['title'] = title
if artist:
tags['artist'] = artist
if albumartist:
tags['albumartist'] = albumartist
if album:
tags['album'] = album
if genre:
tags['genre'] = genre
if total_track_num:
if track_num:
tags['tracknumber'] = '{}/{}'.format(track_num, total_track_num)
else:
tags['tracknumber'] = '/{}'.format(total_track_num)
else:
if track_num:
tags['tracknumber'] = '{}'.format(track_num)
if total_disc_num:
if disc_num:
tags['discnumber'] = '{}/{}'.format(disc_num, total_disc_num)
else:
tags['discnumber'] = '/{}'.format(total_disc_num)
else:
if track_num:
tags['discnumber'] = '{}'.format(disc_num)
tags.save()
La lectura de la etiqueta (pantalla) es la siguiente.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Las etiquetas se eliminan de la siguiente manera.
def delete_id3_tag(file_path, target_tag):
tags = EasyID3(file_path)
tags.pop(target_tag, None)
tags.save()
def delete_all_id3_tag(file_path):
tags = EasyID3(file_path)
tags.delete()
tags.save()
Utilícelo de la siguiente manera.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Para editar directamente las etiquetas ID3, utilice el módulo ID3.
from mutagen.id3 import ID3, TIT2
path = 'example.mp3'
tags = ID3(path)
print(tags.pprint())
tags.add(TIT2(encoding=3, text="new_title"))
tags.save()
Para escribir, especifique el ID de la etiqueta como se muestra a continuación.
- títulos de canciones (
TIT2
) - Nombre del álbum (
TALB
)
Los ID de las etiquetas están resumidos en la documentación oficial en el siguiente enlace, pero es difícil entender qué tipo de información representan.
Puede ser más fácil utilizar el método pprint() para mostrar las etiquetas ID3 de un archivo existente para comprobar la correspondencia.