วิธีใช้ mutagen เพื่อแก้ไข mp3 และแท็ก ID3 อื่น ๆ ใน Python

ธุรกิจ

ไลบรารีแก้ไขแท็ก Python,mutagen

สามารถใช้ 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

เป็นประโยชน์ในการกำหนดฟังก์ชัน

แท็กถูกเขียนดังนี้ จำนวนแทร็กทั้งหมด (จำนวนเพลง) จะแสดงโดยตัวหารของ “หมายเลขแทร็ก” เช่นเดียวกับจำนวนแผ่นดิสก์

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

ในการเขียน ให้ระบุ tag ID ตามที่แสดงด้านล่าง

  • ชื่อเพลง(TIT2)
  • ชื่ออัลบั้ม(TALB)

รหัสแท็กมีการสรุปไว้ในเอกสารอย่างเป็นทางการที่ลิงก์ต่อไปนี้ แต่เป็นการยากที่จะเข้าใจว่าเป็นข้อมูลประเภทใด

ใช้วิธี pprint() เพื่อแสดงแท็ก ID3 ของไฟล์ที่มีอยู่ได้ง่ายขึ้นเพื่อตรวจสอบการติดต่อ