Як выкарыстоўваць mutagen для рэдагавання mp3 і іншых тэгаў ID3 у Python

Бізнэс

Бібліятэка рэдагавання тэгаў python,mutagen

Мутаген бібліятэкі Python можна выкарыстоўваць для рэдагавання тэгаў (метададзеных) мультымедыйных файлаў, такіх як 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

Карысна вызначыць функцыю.

Тэгі пішуцца наступным чынам. Агульная колькасць трэкаў (колькасць песень) прадстаўлена ў назоўніку ‘tracknumber’. Тое ж самае тычыцца і колькасці дыскаў.

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