Miten mutagenia käytetään mp3- ja muiden ID3-tunnisteiden muokkaamiseen Pythonissa?

liiketoiminta

Python-tunnisteiden muokkauskirjasto, mutagen

Python-kirjastoa mutagen voidaan käyttää multimediatiedostojen, kuten mp3-tiedostojen, tunnisteiden (metatietojen) muokkaamiseen.

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.

Voit asentaa sen pipillä.

$ pip install mutagen

Tässä on esimerkki ID3-tunnisteen muokkaamisesta.

Lisätietoja ID3:sta on seuraavassa linkissä. Standardi luotiin alun perin mp3:lle, mutta sitä sovelletaan nyt myös mp4-tiedostoihin (m4a) ja muihin kuin mp3-tiedostoihin.

mutagen.easyid3

Jos haluat vain lukea tai kirjoittaa artistien nimiä, albumin nimiä, kappaleiden numeroita jne., EasyID3-moduulin käyttö on helppoa.

from mutagen.easyid3 import EasyID3

Kirjoita kappaleen nimi seuraavasti

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

Yksinkertaisen käyttöliittymän aikaansaamiseksi voidaan muokata vain rajallinen määrä tunnisteita, mutta se riittää peruskäyttöön. Muokattavissa olevat tunnisteet näkyvät alla.
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

On hyödyllistä määritellä funktio.

Tunnisteet kirjoitetaan seuraavasti. Raitojen kokonaismäärä (kappaleiden lukumäärä) esitetään nimittäjässä 'tracknumber'. Sama pätee myös levyjen lukumäärään.

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

Tunnisteen lukema (näyttö) on seuraava.

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

Tunnisteet poistetaan seuraavasti.

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

Käytä seuraavasti.

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

mutagen.id3

Jos haluat muokata ID3-tageja suoraan, käytä ID3-moduulia.

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

Kirjoittamista varten määritä tunnisteen tunnus alla esitetyllä tavalla.

  • kappaleiden nimet (TIT2)
  • Albumin nimi (TALB)

Tunnisteiden tunnukset on esitetty tiivistetysti virallisessa dokumentaatiossa seuraavassa linkissä, mutta on vaikea ymmärtää, millaista tietoa ne edustavat.

Saattaa olla helpompaa käyttää pprint()-metodia näyttämään olemassa olevan tiedoston ID3-tunnisteet vastaavuuden tarkistamiseksi.

Copied title and URL