Jinsi ya kutumia mutagen kuhariri mp3 na vitambulisho vingine vya ID3 kwenye Python

Biashara

Maktaba ya uhariri wa lebo ya Python,mutagen

mutajeni ya maktaba ya Python inaweza kutumika kuhariri vitambulisho (metadata) vya faili za media titika kama vile 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.

Unaweza kuiweka na bomba.

$ pip install mutagen

Huu hapa ni mfano wa kuhariri lebo ya ID3.

Kwa habari zaidi kuhusu ID3, angalia kiungo kifuatacho. Kiwango kiliundwa awali kwa mp3, lakini sasa kinatumika pia kwa mp4 (m4a) na faili zingine zisizo za mp3.

mutagen.easyid3

Ikiwa ungependa tu kusoma au kuandika majina ya wasanii, majina ya albamu, nambari za wimbo, n.k., ni rahisi kutumia moduli ya EasyID3.

from mutagen.easyid3 import EasyID3

Ili kuandika kichwa cha wimbo, fanya yafuatayo

path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()

Idadi ndogo tu ya vitambulisho inaweza kuhaririwa kufikia kiolesura rahisi, lakini inatosha kwa matumizi ya kimsingi. Lebo zinazoweza kuhaririwa zinaweza kuonekana hapa chini.
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

Ni muhimu kufafanua chaguo la kukokotoa.

Vitambulisho vimeandikwa kama ifuatavyo. Jumla ya idadi ya nyimbo (idadi ya nyimbo) inawakilishwa na denominator ya ‘tracknumber’. Vile vile ni kweli kwa idadi ya diski.

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

Usomaji wa lebo (onyesho) ni kama ifuatavyo.

def show_id3_tags(file_path):
    tags = EasyID3(file_path)
    print(tags.pprint())

Lebo huondolewa kama ifuatavyo.

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

Tumia kama ifuatavyo.

set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)

mutagen.id3

Ili kuhariri vitambulisho vya ID3 moja kwa moja, tumia moduli ya 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()

Ili kuandika, bainisha kitambulisho cha lebo kama inavyoonyeshwa hapa chini.

  • majina ya nyimbo(TIT2)
  • Jina la albamu(TALB)

Vitambulisho vya lebo vimefupishwa katika hati rasmi kwenye kiungo kifuatacho, lakini ni vigumu kuelewa ni aina gani ya taarifa zinazowakilisha.

Huenda ikawa rahisi kutumia mbinu ya pprint() kuonyesha vitambulisho vya ID3 vya faili iliyopo ili kuangalia mawasiliano.