Python tag szerkesztő könyvtár, mutagen
A Python könyvtár mutagen használható multimédiás fájlok (például mp3) címkéinek (metaadatainak) szerkesztésére.
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.
A pip segítségével telepítheted.
$ pip install mutagen
Íme egy példa az ID3-címke szerkesztésére.
Az ID3-ról további információkat az alábbi linken talál. A szabványt eredetileg az mp3 számára hozták létre, de ma már az mp4 (m4a) és más, nem mp3 fájlok esetében is alkalmazzák.
mutagen.easyid3
Ha csak az előadó nevét, az album nevét, a számok számát stb. szeretné beolvasni vagy kiírni, akkor az EasyID3 modul használata egyszerű.
from mutagen.easyid3 import EasyID3
A dalcím megírásához a következőket kell tennie
path = 'example.mp3'
tags = EasyID3(path)
tags['title'] = 'new_title'
tags.save()
Az egyszerű felület elérése érdekében csak korlátozott számú címke szerkeszthető, de az alapvető használathoz elegendő. A szerkeszthető címkék az alábbiakban láthatók.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
Hasznos egy függvényt definiálni.
A címkék a következőképpen íródnak. A számok teljes számát (a dalok számát) a “tracknumber” nevezője jelenti. Ugyanez igaz a lemezek számára is.
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()
A címke leolvasása (kijelzése) a következő.
def show_id3_tags(file_path):
tags = EasyID3(file_path)
print(tags.pprint())
A címkék eltávolítása a következőképpen történik.
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()
Használja az alábbiak szerint.
set_id3_tag(path, albumartist='new_artist')
delete_id3_tag(path, 'discnumber')
show_id3_tags(path)
mutagen.id3
Az ID3 címkék közvetlen szerkesztéséhez használja az ID3 modult.
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()
Az íráshoz adja meg a címke azonosítóját az alábbiak szerint.
- dalcímek (
TIT2
) - Album neve (
TALB
)
A címkék azonosítóit az alábbi linken található hivatalos dokumentáció foglalja össze, de nehéz megérteni, hogy milyen információt képviselnek.
Egyszerűbb lehet a pprint() metódus segítségével megjeleníteni egy meglévő fájl ID3-címkéit, hogy ellenőrizze a megfeleléseket.