Як використовувати 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 ​​існуючого файлу для перевірки відповідності.