libreria Python per la modifica dei tag, mutagen
La libreria Python mutagen può essere usata per modificare i tag (metadati) di file multimediali come 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.
Potete installarlo con pip.
$ pip install mutagen
Ecco un esempio di modifica di un tag ID3.
Per maggiori informazioni sull'ID3, vedi il seguente link. Lo standard è stato originariamente creato per gli mp3, ma ora viene applicato anche agli mp4 (m4a) e ad altri file non mp3.
mutagen.easyid3
Se vuoi solo leggere o scrivere nomi di artisti, nomi di album, numeri di tracce, ecc., è facile usare il modulo EasyID3.
from mutagen.easyid3 import EasyID3
Per scrivere il titolo di una canzone, fai come segue
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Solo un numero limitato di tag può essere modificato per ottenere un'interfaccia semplice, ma è sufficiente per un uso di base. I tag che possono essere modificati possono essere visti qui sotto.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
È utile definire una funzione.
I tag sono scritti come segue. Il numero totale di tracce (numero di canzoni) è rappresentato dal denominatore di 'tracknumber'. Lo stesso vale per il numero di dischi.
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 lettura del tag (display) è la seguente.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
I tag vengono rimossi come segue.
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()
Utilizzare come segue.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Per modificare direttamente i tag ID3, usate il modulo 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 scrivere, specificare l'ID del tag come mostrato di seguito.
- titoli delle canzoni (
TIT2
) - Nome dell'album (
TALB
)
Gli ID dei tag sono riassunti nella documentazione ufficiale al seguente link, ma è difficile capire che tipo di informazioni rappresentano.
Potrebbe essere più facile usare il metodo pprint() per visualizzare i tag ID3 di un file esistente per controllare la corrispondenza.