Wie man mit Mutagen mp3- und andere ID3-Tags in Python bearbeitet

Geschäft

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.

Copied title and URL