کتابخانه ویرایش تگ پایتون,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 یک فایل موجود برای بررسی مطابقت آسان تر باشد.