Python tag bewerkingsbibliotheek, mutagen
De Python bibliotheek mutagen kan worden gebruikt om de tags (metadata) van multimedia bestanden zoals mp3 te bewerken.
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.
Je kunt het installeren met pip.
$ pip install mutagen
Hier is een voorbeeld van het bewerken van een ID3 tag.
Voor meer informatie over ID3, zie de volgende link. De standaard werd oorspronkelijk gecreëerd voor mp3, maar wordt nu ook toegepast op mp4 (m4a) en andere non-mp3 bestanden.
mutagen.easyid3
Als u alleen artiestnamen, albumnamen, tracknummers, enz. wilt lezen of schrijven, is het gemakkelijk om de EasyID3 module te gebruiken.
from mutagen.easyid3 import EasyID3
Om een songtitel te schrijven, doe je het volgende
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Slechts een beperkt aantal tags kan worden bewerkt om een eenvoudige interface te verkrijgen, maar het is voldoende voor basisgebruik. De tags die kunnen worden bewerkt zijn hieronder te zien.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
Het is nuttig om een functie te definiëren.
De tags worden als volgt geschreven. Het totaal aantal tracks (aantal liedjes) wordt weergegeven door de noemer van “tracknummer”. Hetzelfde geldt voor het aantal disks.
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()
De tag uitlezing (display) is als volgt.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
De tags worden als volgt verwijderd.
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()
Gebruik als volgt.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Om ID3 tags direct te bewerken, gebruik de ID3 module.
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()
Om te schrijven, specificeer de tag ID zoals hieronder getoond.
- titels van liedjes (
TIT2
) - Naam van het album (
TALB
)
De tag ID's zijn samengevat in de officiële documentatie op de volgende link, maar het is moeilijk te begrijpen wat voor informatie ze vertegenwoordigen.
Het kan eenvoudiger zijn om de pprint() methode te gebruiken om de ID3 tags van een bestaand bestand weer te geven om te controleren of het overeenkomt.