Com utilitzar mutagen per editar mp3 i altres etiquetes ID3 a Python

Negocis

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.