Cara menggunakan mutagen untuk mengedit mp3 dan tag ID3 lain dalam Python

Perniagaan

Pustaka penyuntingan tag Python,mutagen

Pustaka Python mutagen boleh digunakan untuk mengedit tag (metadata) fail multimedia seperti 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.

Anda boleh memasangnya dengan pip.

$ pip install mutagen

Berikut ialah contoh mengedit tag ID3.

Untuk maklumat lanjut tentang ID3, lihat pautan berikut. Standard pada asalnya dicipta untuk mp3, tetapi kini turut digunakan pada mp4 (m4a) dan fail bukan mp3 yang lain.

mutagen.easyid3

Jika anda hanya mahu membaca atau menulis nama artis, nama album, nombor lagu, dsb., mudah untuk menggunakan modul EasyID3.

from mutagen.easyid3 import EasyID3

Untuk menulis tajuk lagu, lakukan perkara berikut

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

Hanya bilangan tag yang terhad boleh diedit untuk mencapai antara muka yang mudah, tetapi ia mencukupi untuk kegunaan asas. Tag yang boleh diedit boleh dilihat di bawah.
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

Ia berguna untuk menentukan fungsi.

Tag ditulis seperti berikut. Jumlah bilangan lagu (bilangan lagu) diwakili oleh penyebut ‘nombor trek’. Perkara yang sama berlaku untuk bilangan cakera.

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

Pembacaan tag (paparan) adalah seperti berikut.

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

Tag dikeluarkan seperti berikut.

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

Gunakan seperti berikut.

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

mutagen.id3

Untuk mengedit teg ID3 secara langsung, gunakan 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()

Untuk menulis, nyatakan ID teg seperti yang ditunjukkan di bawah.

  • tajuk lagu(TIT2)
  • nama album(TALB)

ID teg diringkaskan dalam dokumentasi rasmi pada pautan berikut, tetapi sukar untuk memahami jenis maklumat yang diwakilinya.

Ia mungkin lebih mudah untuk menggunakan kaedah pprint() untuk memaparkan teg ID3 bagi fail sedia ada untuk menyemak surat-menyurat.