Biblioteca d’edició d’etiquetes Python,mutagen
El mutagen de la biblioteca Python es pot utilitzar per editar les etiquetes (metadades) de fitxers multimèdia com ara 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.
Podeu instal·lar-lo amb pip.
$ pip install mutagen
Aquí teniu un exemple d’edició d’una etiqueta ID3.
Per obtenir més informació sobre ID3, consulteu el següent enllaç. L’estàndard es va crear originalment per a mp3, però ara també s’aplica a fitxers mp4 (m4a) i altres fitxers que no són mp3.
mutagen.easyid3
Si només voleu llegir o escriure noms d’artistes, noms d’àlbums, números de pistes, etc., és fàcil utilitzar el mòdul EasyID3.
from mutagen.easyid3 import EasyID3
Per escriure el títol d’una cançó, feu el següent
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Només es pot editar un nombre limitat d’etiquetes per aconseguir una interfície senzilla, però és suficient per a un ús bàsic. Les etiquetes que es poden editar es poden veure a continuació.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
És útil definir una funció.
Les etiquetes s’escriuen de la següent manera. El nombre total de cançons (nombre de cançons) està representat pel denominador de ‘número de pista’. El mateix passa amb el nombre de discos.
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()
La lectura de l’etiqueta (visualització) és la següent.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Les etiquetes s’eliminen de la següent manera.
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()
Utilitzeu-lo de la següent manera.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Per editar les etiquetes ID3 directament, utilitzeu el mòdul 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()
Per escriure, especifiqueu l’identificador de l’etiqueta tal com es mostra a continuació.
- títols de cançons(
TIT2
) - Nom de l’àlbum(
TALB
)
Els identificadors d’etiquetes es resumeixen a la documentació oficial del següent enllaç, però és difícil entendre quin tipus d’informació representen.
Pot ser més fàcil utilitzar el mètode pprint() per mostrar les etiquetes ID3 d’un fitxer existent per comprovar la correspondència.