Библиотека за редактиране на етикети на Python, mutagen
Библиотеката на Python mutagen може да се използва за редактиране на таговете (метаданните) на мултимедийни файлове, например 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.
Можете да го инсталирате с pip.
$ pip install mutagen
Ето един пример за редактиране на таг ID3.
За повече информация относно ID3 вижте следната връзка. Първоначално стандартът е създаден за mp3, но вече се прилага и за mp4 (m4a) и други файлове, които не са mp3.
mutagen.easyid3
Ако искате само да четете или записвате имена на изпълнители, имена на албуми, номера на песни и т.н., е лесно да използвате модула EasyID3.
from mutagen.easyid3 import EasyID3
За да напишете заглавие на песен, направете следното
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Само ограничен брой тагове могат да бъдат редактирани, за да се постигне прост интерфейс, но той е достатъчен за основна употреба. Таговете, които могат да се редактират, са показани по-долу.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
Полезно е да се дефинира функция.
Таговете се изписват, както следва. Общият брой на песните (брой песни) се представя в знаменателя на „tracknumber“. Същото важи и за броя на дисковете.
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()
Показанията на етикета (дисплея) са следните.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Таговете се премахват, както следва.
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()
Използвайте, както следва.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
За директно редактиране на таговете ID3 използвайте модула 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()
За да запишете, посочете идентификатора на тага, както е показано по-долу.
- заглавия на песни (
TIT2
) - Име на албума (
TALB
)
Идентификаторите на таговете са обобщени в официалната документация на следния линк, но е трудно да се разбере какъв вид информация представляват те.
Може да е по-лесно да използвате метода pprint(), за да покажете ID3 таговете на съществуващ файл и да проверите за съответствие.