Python-tunnisteiden muokkauskirjasto, mutagen
Python-kirjastoa mutagen voidaan käyttää multimediatiedostojen, kuten mp3-tiedostojen, tunnisteiden (metatietojen) muokkaamiseen.
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.
Voit asentaa sen pipillä.
$ pip install mutagen
Tässä on esimerkki ID3-tunnisteen muokkaamisesta.
Lisätietoja ID3:sta on seuraavassa linkissä. Standardi luotiin alun perin mp3:lle, mutta sitä sovelletaan nyt myös mp4-tiedostoihin (m4a) ja muihin kuin mp3-tiedostoihin.
mutagen.easyid3
Jos haluat vain lukea tai kirjoittaa artistien nimiä, albumin nimiä, kappaleiden numeroita jne., EasyID3-moduulin käyttö on helppoa.
from mutagen.easyid3 import EasyID3
Kirjoita kappaleen nimi seuraavasti
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Yksinkertaisen käyttöliittymän aikaansaamiseksi voidaan muokata vain rajallinen määrä tunnisteita, mutta se riittää peruskäyttöön. Muokattavissa olevat tunnisteet näkyvät alla.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
On hyödyllistä määritellä funktio.
Tunnisteet kirjoitetaan seuraavasti. Raitojen kokonaismäärä (kappaleiden lukumäärä) esitetään nimittäjässä 'tracknumber'. Sama pätee myös levyjen lukumäärään.
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()
Tunnisteen lukema (näyttö) on seuraava.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
Tunnisteet poistetaan seuraavasti.
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()
Käytä seuraavasti.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Jos haluat muokata ID3-tageja suoraan, käytä ID3-moduulia.
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()
Kirjoittamista varten määritä tunnisteen tunnus alla esitetyllä tavalla.
- kappaleiden nimet (
TIT2
) - Albumin nimi (
TALB
)
Tunnisteiden tunnukset on esitetty tiivistetysti virallisessa dokumentaatiossa seuraavassa linkissä, mutta on vaikea ymmärtää, millaista tietoa ne edustavat.
Saattaa olla helpompaa käyttää pprint()-metodia näyttämään olemassa olevan tiedoston ID3-tunnisteet vastaavuuden tarkistamiseksi.