Biblioteca de editare a etichetelor Python, mutagen
Biblioteca Python mutagen poate fi utilizată pentru a edita etichetele (metadatele) fișierelor multimedia, cum ar fi 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.
Îl puteți instala cu pip.
$ pip install mutagen
Iată un exemplu de editare a unei etichete ID3.
Pentru mai multe informații despre ID3, consultați următorul link. Standardul a fost creat inițial pentru mp3, dar în prezent este aplicat și la mp4 (m4a) și la alte fișiere non-mp3.
mutagen.easyid3
Dacă doriți doar să citiți sau să scrieți nume de artiști, nume de albume, numere de piese etc., este ușor să utilizați modulul EasyID3.
from mutagen.easyid3 import EasyID3
Pentru a scrie un titlu de cântec, procedați după cum urmează
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Doar un număr limitat de etichete pot fi editate pentru a obține o interfață simplă, dar este suficient pentru o utilizare de bază. Etichetele care pot fi editate pot fi văzute mai jos.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
Este util să se definească o funcție.
Etichetele sunt scrise după cum urmează. Numărul total de piese (numărul de melodii) este reprezentat de numitorul „tracknumber”. Același lucru este valabil și pentru numărul de discuri.
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()
Citirea etichetei (afișajul) este după cum urmează.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Etichetele se elimină după cum urmează.
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()
Se utilizează după cum urmează.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Pentru a edita direct etichetele ID3, utilizați modulul 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()
Pentru a scrie, specificați ID-ul etichetei, după cum se arată mai jos.
- titluri de cântece (
TIT2
) - Numele albumului (
TALB
)
ID-urile etichetelor sunt rezumate în documentația oficială la următorul link, dar este dificil de înțeles ce fel de informații reprezintă acestea.
Poate fi mai ușor să utilizați metoda pprint() pentru a afișa etichetele ID3 ale unui fișier existent pentru a verifica dacă există corespondență.