نحوه استفاده از موتاژن برای ویرایش mp3 و سایر تگ های ID3 در پایتون

کسب و کار

کتابخانه ویرایش تگ پایتون,mutagen

جهش‌زای کتابخانه پایتون را می‌توان برای ویرایش برچسب‌ها (فراداده) فایل‌های چندرسانه‌ای مانند 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.

با pip میتونید نصب کنید

$ pip install mutagen

در اینجا نمونه ای از ویرایش تگ ID3 آورده شده است.

برای اطلاعات بیشتر در مورد ID3 به لینک زیر مراجعه کنید. این استاندارد ابتدا برای mp3 ایجاد شد، اما اکنون برای فایل‌های mp4 (m4a) و سایر فایل‌های غیرmp3 نیز اعمال می‌شود.

mutagen.easyid3

اگر فقط می خواهید نام هنرمندان، نام آلبوم ها، شماره آهنگ ها و غیره را بخوانید یا بنویسید، استفاده از ماژول EasyID3 آسان است.

from mutagen.easyid3 import EasyID3

برای نوشتن عنوان آهنگ به صورت زیر عمل کنید

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

فقط تعداد محدودی از برچسب ها را می توان برای دستیابی به یک رابط ساده ویرایش کرد، اما برای استفاده اساسی کافی است. تگ های قابل ویرایش در زیر قابل مشاهده است.
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

تعریف یک تابع مفید است.

برچسب ها به صورت زیر نوشته می شوند. تعداد کل آهنگ ها (تعداد آهنگ ها) با مخرج «تعداد آهنگ» نشان داده می شود. در مورد تعداد دیسک ها هم همینطور است.

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

بازخوانی برچسب (نمایش) به شرح زیر است.

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

برچسب ها به شرح زیر حذف می شوند.

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

به صورت زیر استفاده کنید.

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

mutagen.id3

برای ویرایش مستقیم تگ های ID3، از ماژول 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()

برای نوشتن، شناسه تگ را مطابق شکل زیر مشخص کنید.

  • عنوان آهنگ(TIT2)
  • نام آلبوم(TALB)

شناسه‌های برچسب در اسناد رسمی در لینک زیر خلاصه شده‌اند، اما درک اینکه چه نوع اطلاعاتی را نشان می‌دهند دشوار است.

ممکن است استفاده از روش pprint() برای نمایش تگ های ID3 یک فایل موجود برای بررسی مطابقت آسان تر باشد.

Copied title and URL