Hogyan használjuk a mutagént az mp3 és más ID3 címkék szerkesztésére Pythonban?

Üzleti

Python tag szerkesztő könyvtár, mutagen

A Python könyvtár mutagen használható multimédiás fájlok (például mp3) címkéinek (metaadatainak) szerkesztésére.

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.

A pip segítségével telepítheted.

$ pip install mutagen

Íme egy példa az ID3-címke szerkesztésére.

Az ID3-ról további információkat az alábbi linken talál. A szabványt eredetileg az mp3 számára hozták létre, de ma már az mp4 (m4a) és más, nem mp3 fájlok esetében is alkalmazzák.

mutagen.easyid3

Ha csak az előadó nevét, az album nevét, a számok számát stb. szeretné beolvasni vagy kiírni, akkor az EasyID3 modul használata egyszerű.

from mutagen.easyid3 import EasyID3

A dalcím megírásához a következőket kell tennie

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

Az egyszerű felület elérése érdekében csak korlátozott számú címke szerkeszthető, de az alapvető használathoz elegendő. A szerkeszthető címkék az alábbiakban láthatók.
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

Hasznos egy függvényt definiálni.

A címkék a következőképpen íródnak. A számok teljes számát (a dalok számát) a “tracknumber” nevezője jelenti. Ugyanez igaz a lemezek számára is.

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

A címke leolvasása (kijelzése) a következő.

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

A címkék eltávolítása a következőképpen történik.

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

Használja az alábbiak szerint.

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

mutagen.id3

Az ID3 címkék közvetlen szerkesztéséhez használja az ID3 modult.

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

Az íráshoz adja meg a címke azonosítóját az alábbiak szerint.

  • dalcímek (TIT2)
  • Album neve (TALB)

A címkék azonosítóit az alábbi linken található hivatalos dokumentáció foglalja össze, de nehéz megérteni, hogy milyen információt képviselnek.

Egyszerűbb lehet a pprint() metódus segítségével megjeleníteni egy meglévő fájl ID3-címkéit, hogy ellenőrizze a megfeleléseket.