Πώς να χρησιμοποιήσετε το 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

Είναι χρήσιμο να ορίσετε μια συνάρτηση.

Οι ετικέτες γράφονται ως εξής. Ο συνολικός αριθμός των κομματιών (αριθμός τραγουδιών) αντιπροσωπεύεται από τον παρονομαστή του «tracknumber». Το ίδιο ισχύει και για τον αριθμό των δίσκων.

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

Για να γράψετε, καθορίστε το αναγνωριστικό ετικέτας όπως φαίνεται παρακάτω.

  • τίτλοι τραγουδιών (TIT2)
  • Όνομα άλμπουμ (TALB)

Τα αναγνωριστικά ετικέτας συνοψίζονται στην επίσημη τεκμηρίωση στον ακόλουθο σύνδεσμο, αλλά είναι δύσκολο να καταλάβει κανείς τι είδους πληροφορίες αντιπροσωπεύουν.

Μπορεί να είναι ευκολότερο να χρησιμοποιήσετε τη μέθοδο pprint() για να εμφανίσετε τις ετικέτες ID3 ενός υπάρχοντος αρχείου για να ελέγξετε την αντιστοιχία.

Copied title and URL