Hvernig á að nota stökkbreytandi áhrif til að breyta mp3 og öðrum ID3 merkjum í Python

Viðskipti

Python tag ritstýringarsafn,mutagen

Hægt er að nota stökkbreytingu Python bókasafnsins til að breyta merkjum (lýsigögnum) margmiðlunarskráa eins og 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.

Þú getur sett það upp með pip.

$ pip install mutagen

Hér er dæmi um að breyta ID3 merki.

Fyrir frekari upplýsingar um ID3, sjá eftirfarandi hlekk. Staðallinn var upphaflega búinn til fyrir mp3, en er nú einnig notaður fyrir mp4 (m4a) og aðrar skrár sem ekki eru mp3.

mutagen.easyid3

Ef þú vilt bara lesa eða skrifa listamannanöfn, plötunöfn, laganúmer o.s.frv., þá er auðvelt að nota EasyID3 eininguna.

from mutagen.easyid3 import EasyID3

Gerðu eftirfarandi til að skrifa titil lags

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

Aðeins er hægt að breyta takmörkuðum fjölda merkja til að fá einfalt viðmót, en það er nóg fyrir grunnnotkun. Merkin sem hægt er að breyta má sjá hér að neðan.
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

Það er gagnlegt að skilgreina fall.

Merkin eru skrifuð sem hér segir. Heildarfjöldi laga (fjöldi laga) er táknaður með nefnara „lagsnúmers“. Sama á við um fjölda diska.

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

Merkislestur (skjár) er sem hér segir.

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

Merkin eru fjarlægð sem hér segir.

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

Notaðu sem hér segir.

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

mutagen.id3

Til að breyta ID3 merkjum beint skaltu nota ID3 eininguna.

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

Til að skrifa skaltu tilgreina merkisauðkenni eins og sýnt er hér að neðan.

  • lagaheiti(TIT2)
  • Nafn albúms(TALB)

Merkisauðkennin eru tekin saman í opinberu skjölunum á eftirfarandi hlekk, en erfitt er að skilja hvers konar upplýsingar þau tákna.

Það gæti verið auðveldara að nota pprint() aðferðina til að birta ID3 merki fyrirliggjandi skráar til að athuga hvort samsvaranir séu gerðar.

Copied title and URL