Python-Bibliothek zur Tag-Bearbeitung, mutagen
Die Python-Bibliothek mutagen kann verwendet werden, um die Tags (Metadaten) von Multimediadateien wie mp3 zu bearbeiten.
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.
Sie können es mit pip installieren.
$ pip install mutagen
Hier ist ein Beispiel für die Bearbeitung eines ID3-Tags.
Weitere Informationen über ID3 finden Sie unter dem folgenden Link. Der Standard wurde ursprünglich für mp3 entwickelt, wird aber inzwischen auch auf mp4 (m4a) und andere Nicht-mp3-Dateien angewendet.
mutagen.easyid3
Wenn Sie nur Künstlernamen, Albumnamen, Titelnummern usw. lesen oder schreiben wollen, können Sie das EasyID3-Modul verwenden.
from mutagen.easyid3 import EasyID3
Um einen Songtitel zu schreiben, gehen Sie wie folgt vor
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Es kann nur eine begrenzte Anzahl von Tags bearbeitet werden, um eine einfache Schnittstelle zu erhalten, die jedoch für die grundlegende Verwendung ausreichend ist. Die Tags, die bearbeitet werden können, sind unten zu sehen.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 ist sinnvoll, eine Funktion zu definieren.
Die Tags werden wie folgt geschrieben. Die Gesamtzahl der Tracks (Anzahl der Songs) wird durch den Nenner von “tracknumber” dargestellt. Dasselbe gilt für die Anzahl der Discs.
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()
Die Anzeige des Tags ist wie folgt.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Die Tags werden wie folgt entfernt.
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()
Verwenden Sie wie folgt.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Um ID3-Tags direkt zu bearbeiten, verwenden Sie das ID3-Modul.
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()
Zum Schreiben geben Sie die Tag-ID wie unten gezeigt an.
- Songtitel (
TIT2
) - Name des Albums (
TALB
)
Die Tag-IDs sind in der offiziellen Dokumentation unter dem folgenden Link zusammengefasst, aber es ist schwierig zu verstehen, welche Art von Informationen sie darstellen.
Es kann einfacher sein, die Methode pprint() zu verwenden, um die ID3-Tags einer vorhandenen Datei anzuzeigen und auf Übereinstimmung zu prüfen.