mutagen을 사용하여 Python에서 mp3 및 기타 ID3 태그를 편집하는 방법

사업

Python 태그 편집 라이브러리,mutagen

Python 라이브러리 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()

쓰려면 아래와 같이 태그 ID를 지정합니다.

  • 노래 제목(TIT2)
  • 앨범명(TALB)

태그 ID는 다음 링크의 공식 문서에 요약되어 있지만 어떤 정보를 나타내는지 이해하기 어렵습니다.

pprint() 메서드를 사용하여 일치 여부를 확인하기 위해 기존 파일의 ID3 태그를 표시하는 것이 더 쉬울 수 있습니다.