Knihovna pro editaci značek v jazyce Python, mutagen
K úpravě tagů (metadat) multimediálních souborů, například mp3, lze použít knihovnu Python mutagen.
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.
Můžete jej nainstalovat pomocí pip.
$ pip install mutagen
Zde je příklad úpravy značky ID3.
Další informace o ID3 naleznete na následujícím odkazu. Standard byl původně vytvořen pro mp3, ale nyní se používá i pro mp4 (m4a) a další soubory, které nejsou mp3.
mutagen.easyid3
Pokud chcete pouze číst nebo zapisovat jména interpretů, názvy alb, čísla skladeb atd., můžete snadno použít modul EasyID3.
from mutagen.easyid3 import EasyID3
Chcete-li napsat název písně, postupujte takto
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Pro dosažení jednoduchého rozhraní lze upravovat pouze omezený počet značek, ale pro základní použití je to dostačující. Značky, které lze upravovat, jsou uvedeny níže.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
Je užitečné definovat funkci.
Značky se zapisují takto. Celkový počet stop (počet skladeb) je reprezentován jmenovatelem „tracknumber“. Totéž platí pro počet disků.
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()
Čtení (zobrazení) značky je následující.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Značky se odstraňují následujícím způsobem.
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()
Použijte následující způsob.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Chcete-li upravovat značky ID3 přímo, použijte modul 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()
Chcete-li zapisovat, zadejte ID značky, jak je uvedeno níže.
- názvy skladeb (
TIT2
) - Název alba (
TALB
)
ID značek jsou shrnuty v oficiální dokumentaci na následujícím odkazu, ale je obtížné pochopit, jaký druh informací představují.
Pro kontrolu shody může být jednodušší použít metodu pprint() pro zobrazení ID3 tagů existujícího souboru.