Python’da mp3 ve diğer ID3 etiketlerini düzenlemek için mutajen nasıl kullanılır?

Python etiketi düzenleme kitaplığı,mutagen

Python kitaplığı mutajeni, mp3 gibi multimedya dosyalarının etiketlerini (meta verileri) düzenlemek için kullanılabilir.

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.

pip ile kurabilirsiniz.

$ pip install mutagen

İşte bir ID3 etiketinin düzenlenmesine bir örnek.

ID3 hakkında daha fazla bilgi için aşağıdaki bağlantıya bakın. Standart başlangıçta mp3 için oluşturuldu, ancak şimdi mp4 (m4a) ve diğer mp3 olmayan dosyalara da uygulanıyor.

mutagen.easyid3

Yalnızca sanatçı adlarını, albüm adlarını, parça numaralarını vb. okumak veya yazmak istiyorsanız, EasyID3 modülünü kullanmak kolaydır.

from mutagen.easyid3 import EasyID3

Bir şarkı adı yazmak için aşağıdakileri yapın

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

Basit bir arayüz elde etmek için yalnızca sınırlı sayıda etiket düzenlenebilir, ancak temel kullanım için yeterlidir. Düzenlenebilir etiketler aşağıda görülebilir.
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

Bir fonksiyon tanımlamak yararlıdır.

Etiketler aşağıdaki gibi yazılır. Toplam parça sayısı (şarkı sayısı), ‘parça numarası’ paydası ile temsil edilir. Aynısı disk sayısı için de geçerlidir.

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

Etiket okuması (ekran) aşağıdaki gibidir.

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

Etiketler aşağıdaki gibi kaldırılır.

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

Aşağıdaki gibi kullanın.

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

mutagen.id3

ID3 etiketlerini doğrudan düzenlemek için ID3 modülünü kullanın.

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

Yazmak için etiket kimliğini aşağıda gösterildiği gibi belirtin.

  • şarkı isimleri(TIT2)
  • Albüm adı(TALB)

Etiket kimlikleri, aşağıdaki bağlantıdaki resmi belgelerde özetlenmiştir, ancak ne tür bilgileri temsil ettiklerini anlamak zordur.

Karşılık olup olmadığını kontrol etmek için mevcut bir dosyanın ID3 etiketlerini görüntülemek için pprint() yöntemini kullanmak daha kolay olabilir.

Copied title and URL