Knižnica na úpravu značiek v jazyku Python, mutagen
Na úpravu značiek (metadát) multimediálnych súborov, napríklad mp3, možno použiť knižnicu 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 ho nainštalovať pomocou pip.
$ pip install mutagen
Tu je príklad úpravy značky ID3.
Viac informácií o ID3 nájdete na tomto odkaze. Tento štandard bol pôvodne vytvorený pre mp3, ale v súčasnosti sa používa aj pre mp4 (m4a) a iné súbory, ktoré nie sú mp3.
mutagen.easyid3
Ak chcete len čítať alebo zapisovať mená interpretov, názvy albumov, čísla skladieb atď., môžete jednoducho použiť modul EasyID3.
from mutagen.easyid3 import EasyID3
Ak chcete napísať názov piesne, postupujte takto
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Na dosiahnutie jednoduchého rozhrania je možné upravovať len obmedzený počet značiek, ale na základné použitie to postačuje. Značky, ktoré možno upravovať, sú uvedené nižšie.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žitočné definovať funkciu.
Značky sú zapísané takto. Celkový počet stôp (počet skladieb) je reprezentovaný menovateľom „tracknumber“. To isté platí pre počet diskov.
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()
Čítanie (zobrazenie) značky je nasledovné.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Značky sa odstránia takto.
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žívajte takto.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Ak chcete priamo upravovať značky ID3, použite 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()
Ak chcete zapisovať, zadajte ID značky, ako je uvedené nižšie.
- názvy skladieb (
TIT2
) - Názov albumu (
TALB
)
Identifikátory značiek sú zhrnuté v oficiálnej dokumentácii na nasledujúcom odkaze, ale je ťažké pochopiť, aký druh informácií predstavujú.
Môže byť jednoduchšie použiť metódu pprint() na zobrazenie ID3 tagov existujúceho súboru na kontrolu zhody.