Bibliothèque d'édition de balises en Python, mutagen
La bibliothèque Python mutagen peut être utilisée pour modifier les balises (métadonnées) des fichiers multimédia tels que les 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.
Vous pouvez l'installer avec pip.
$ pip install mutagen
Voici un exemple d'édition d'une balise ID3.
Pour plus d'informations sur l'ID3, voir le lien suivant. La norme a été créée à l'origine pour le mp3, mais elle est désormais également appliquée au mp4 (m4a) et à d'autres fichiers non mp3.
mutagen.easyid3
Si vous souhaitez simplement lire ou écrire des noms d'artistes, des noms d'albums, des numéros de pistes, etc., il est facile d'utiliser le module EasyID3.
from mutagen.easyid3 import EasyID3
Pour écrire un titre de chanson, procédez comme suit
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Seul un nombre limité de balises peut être modifié pour obtenir une interface simple, mais c'est suffisant pour une utilisation de base. Les balises qui peuvent être modifiées sont présentées ci-dessous.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
Il est utile de définir une fonction.
Les balises s'écrivent comme suit. Le nombre total de pistes (nombre de chansons) est représenté par le dénominateur de “tracknumber”. Il en va de même pour le nombre de disques.
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 lecture de l'étiquette (affichage) est la suivante.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Les étiquettes sont retirées comme suit.
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()
Utilisez comme suit.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Pour éditer directement les balises ID3, utilisez le module 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()
Pour écrire, spécifiez l'ID de la balise comme indiqué ci-dessous.
- titres des chansons (
TIT2
) - Nom de l'album (
TALB
)
Les ID des balises sont résumés dans la documentation officielle au lien suivant, mais il est difficile de comprendre quel type d'information ils représentent.
Il peut être plus facile d'utiliser la méthode pprint() pour afficher les balises ID3 d'un fichier existant afin de vérifier la correspondance.