Biblioteca de edição de etiquetas Python, mutagen
A biblioteca Python mutagen pode ser utilizada para editar as etiquetas (metadados) de ficheiros multimédia, tais como 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.
Pode instalá-lo com pip.
$ pip install mutagen
Aqui está um exemplo de edição de uma etiqueta ID3.
Para mais informações sobre o ID3, ver o seguinte link. A norma foi originalmente criada para mp3, mas agora também é aplicada a ficheiros mp4 (m4a) e outros ficheiros não mp3.
mutagen.easyid3
Se quiser apenas ler ou escrever nomes de artistas, nomes de álbuns, números de faixas, etc., é fácil de usar o módulo EasyID3.
from mutagen.easyid3 import EasyID3
Para escrever um título de canção, faça o seguinte
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Apenas um número limitado de etiquetas pode ser editado para conseguir uma interface simples, mas é suficiente para uma utilização básica. As etiquetas que podem ser editadas podem ser vistas abaixo.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
É útil para definir uma função.
As etiquetas são escritas da seguinte forma. O número total de faixas (número de canções) é representado pelo denominador de 'número de faixa'. O mesmo é válido para o 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()
A leitura da etiqueta (display) é a seguinte.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
As etiquetas são removidas da seguinte forma.
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()
Utilizar como se segue.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Para editar directamente as etiquetas ID3, utilize o 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 escrever, especificar a identificação da etiqueta como se mostra abaixo.
- títulos de canções (
TIT2
) - Nome do álbum (
TALB
)
As etiquetas de identificação estão resumidas na documentação oficial no link seguinte, mas é difícil de compreender que tipo de informação representam.
Pode ser mais fácil utilizar o método pprint() para exibir as etiquetas ID3 de um ficheiro existente para verificar a correspondência.