Cum se utilizează mutagen pentru a edita mp3 și alte etichete ID3 în Python

Afaceri

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ță.

Copied title and URL