Kako uporabiti mutagen za urejanje mp3 in drugih oznak ID3 v Pythonu

Posel

Knjižnica za urejanje oznak Python, mutagen

Knjižnico Python mutagen lahko uporabite za urejanje oznak (metapodatkov) večpredstavnostnih datotek, kot je 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.

Namestite ga lahko s pipom.

$ pip install mutagen

Tukaj je primer urejanja oznake ID3.

Več informacij o ID3 najdete na naslednji povezavi. Standard je bil prvotno ustvarjen za mp3, zdaj pa se uporablja tudi za mp4 (m4a) in druge datoteke, ki niso mp3.

mutagen.easyid3

Če želite le prebrati ali zapisati imena izvajalcev, imena albumov, številke skladb itd., lahko preprosto uporabite modul EasyID3.

from mutagen.easyid3 import EasyID3

Če želite napisati naslov pesmi, naredite naslednje.

path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()

Zaradi preprostega vmesnika je mogoče urejati le omejeno število oznak, vendar to zadostuje za osnovno uporabo. Oznake, ki jih je mogoče urejati, so prikazane spodaj.
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

Koristno je opredeliti funkcijo.

Oznake so zapisane na naslednji način. Skupno število skladb (število skladb) predstavlja imenovalec “tracknumber”. Enako velja za število plošč.

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()

Odčitavanje oznake (prikaz) je naslednje.

def show_id3_tags(file_path):
    tags = EasyID3(file_path)
    print(tags.pprint())

Oznake so odstranjene na naslednji način.

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()

Uporabljajte na naslednji način.

set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)

mutagen.id3

Za neposredno urejanje oznak ID3 uporabite modul 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()

Če želite pisati, določite ID oznake, kot je prikazano spodaj.

  • naslovi pesmi (TIT2)
  • Ime albuma (TALB)

Identifikatorji oznak so povzeti v uradni dokumentaciji na naslednji povezavi, vendar je težko razumeti, kakšne informacije predstavljajo.

Morda bo lažje uporabiti metodo pprint() za prikaz oznak ID3 obstoječe datoteke in preveriti, ali se ujemajo.

Copied title and URL