Mengakses mp3 Meta-Data dengan Python

Apa cara terbaik untuk mengambil metadata mp3 di python? I've melihat beberapa kerangka luar sana, tapi aku'm tidak yakin yang akan menjadi yang terbaik untuk digunakan.... Ada ide?

Aku digunakan eyeD3 hari lain dengan banyak keberhasilan. Saya menemukan bahwa hal itu bisa menambahkan artwork untuk ID3 tag yang modul lainnya saya melihat tidak't. Anda'akan memiliki untuk men-download tar dan mengeksekusi python setup.py install dari folder sumber.

Contoh yang relevan dari website di bawah ini.

Membaca isi dari file mp3 yang berisi baik v1 atau v2 info tag:

 import eyeD3
 tag = eyeD3.Tag()
 tag.link("/some/file.mp3")
 print tag.getArtist()
 print tag.getAlbum()
 print tag.getTitle()

Baca mp3 file (trek panjang, bitrate, dll.) dan akses ini's tag:

if eyeD3.isMp3File(f):
     audioFile = eyeD3.Mp3AudioFile(f)
     tag = audioFile.getTag()

Tag tertentu versi yang dapat dipilih:

 tag.link("/some/file.mp3", eyeD3.ID3_V2)
 tag.link("/some/file.mp3", eyeD3.ID3_V1)
 tag.link("/some/file.mp3", eyeD3.ID3_ANY_VERSION)  # The default.

Atau anda dapat iterate atas baku frame:

 tag = eyeD3.Tag()
 tag.link("/some/file.mp3")
 for frame in tag.frames:
    print frame

Setelah tag terkait untuk file ini dapat dimodifikasi dan disimpan:

 tag.setArtist(u"Cro-Mags")
 tag.setAlbum(u"Age of Quarrel")
 tag.update()

Jika tag terkait di v2 dan anda'd ingin menyimpannya sebagai v1:

 tag.update(eyeD3.ID3_V1_1)

Baca di tag dan menghapusnya dari file:

 tag.link("/some/file.mp3")
 tag.remove()
 tag.update()

Tambahkan tag baru:

 tag = eyeD3.Tag()
 tag.link('/some/file.mp3')    # no tag in this file, link returned False
 tag.header.setVersion(eyeD3.ID3_V2_3)
 tag.setArtist('Fugazi')
 tag.update()
Komentar (9)

I've digunakan mutagen untuk mengedit tag pada file media sebelumnya. Hal yang baik tentang mereka adalah bahwa hal itu dapat menangani format lain seperti mp4, FLAC dll. I've menulis beberapa script dengan banyak keberhasilan menggunakan API ini.

Komentar (3)

Masalah dengan eyed3 adalah bahwa hal itu akan membuang NotImplementedError("tidak Dapat menulis ID3 v2.2") untuk umum file MP3.

Dalam pengalaman saya, gadis kelas EasyID3 bekerja lebih andal. Contoh:

from mutagen.easyid3 import EasyID3

audio = EasyID3("example.mp3")
audio['title'] = u"Example Title"
audio['artist'] = u"Me"
audio['album'] = u"My album"
audio['composer'] = u"" # clear
audio.save()

Semua tag lainnya dapat diakses dengan cara ini dan disimpan, yang akan melayani sebagian besar tujuan. Informasi lebih lanjut dapat ditemukan di Mutagen Tutorial.

Komentar (0)

Apa yang anda're setelah adalah ID3 modul. It's sangat sederhana dan akan memberikan apa yang anda butuhkan. Hanya menyalin ID3.py file ke situs anda-paket direktori dan anda'akan dapat melakukan sesuatu seperti berikut:

from ID3 import *
try:
  id3info = ID3('file.mp3')
  print id3info
  # Change the tags
  id3info['TITLE'] = "Green Eggs and Ham"
  id3info['ARTIST'] = "Dr. Seuss"
  for k, v in id3info.items():
    print k, ":", v
except InvalidTagError, message:
  print "Invalid ID3 tag:", message
Komentar (1)

cek yang satu ini:

https://github.com/Ciantic/songdetails

Contoh penggunaan:

>>> import songdetails
>>> song = songdetails.scan("data/song.mp3")
>>> print song.duration
0:03:12

Menyimpan perubahan:

>>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
Komentar (0)

Contoh sederhana dari buku Menyelam Ke Python bekerja ok bagi saya, ini adalah link download, contoh fileinfo.py. Don't tahu apakah itu's terbaik, tetapi dapat melakukan pekerjaan dasar.

Seluruh buku ini tersedia secara online di sini.

Komentar (3)

Sekadar tambahan informasi untuk kalian:

lihatlah bagian "MP3 barang dan Metadata editor" di halaman PythonInMusic.

Komentar (0)

Aku melihat di atas jawaban dan menemukan bahwa mereka tidak baik untuk saya proyek karena masalah perizinan dengan GPL.

Dan saya menemukan ini: PyID3Lib, sementara yang tertentu python binding tanggal rilis yang lebih tua, menggunakan ID3Lib, yang itu sendiri adalah up-to-date.

Penting untuk menyebutkan bahwa keduanya LGPL, dan baik untuk pergi.

Komentar (0)

cara termudah adalah songdetails..

untuk membaca data

import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
    print song.artist

demikian pula untuk mengedit

import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
    song.artist = u"The Great Blah"
    song.save()

Don't lupa untuk menambahkan u sebelum nama sampai anda tahu bahasa cina.

anda dapat membaca dan mengedit secara massal menggunakan python modul glob

ex.

import glob
songs = glob.glob('*')   // script should be in directory of songs.
for song in songs:
    // do the above work.
Komentar (0)

Setelah mencoba langkah sederhana pip menginstal rute untuk eyeD3, pytaglib, dan ID3 modul yang direkomendasikan di sini, saya menemukan keempat ini pilihan satu-satunya untuk bekerja. Sisanya harus impor kesalahan dengan dependensi yang hilang di C++ atau sesuatu yang ajaib atau beberapa perpustakaan lain yang pip terjawab. Jadi pergi dengan yang satu ini untuk membaca dasar dari tag ID3 (semua versi):

https://pypi.python.org/pypi/tinytag/0.18.0

from tinytag import TinyTag
tag = TinyTag.get('/some/music.mp3')

Daftar atribut yang mungkin bisa anda dapatkan dengan TinyTag:

tag.album         # album as string
tag.albumartist   # album artist as string
tag.artist        # artist name as string
tag.audio_offset  # number of bytes before audio data begins
tag.bitrate       # bitrate in kBits/s
tag.disc          # disc number
tag.disc_total    # the total number of discs
tag.duration      # duration of the song in seconds
tag.filesize      # file size in bytes
tag.genre         # genre as string
tag.samplerate    # samples per second
tag.title         # title of the song
tag.track         # track number as string
tag.track_total   # total number of tracks as string
tag.year          # year or data as string

Itu kecil dan mandiri, seperti yang diiklankan.

Komentar (0)

Saya akan menyarankan mp3 tagger. Hal terbaik tentang ini adalah didistribusikan di bawah Lisensi MIT dan mendukung semua atribut yang diperlukan.

- artist;
- album;
- song;
- track;
- comment;
- year;
- genre;
- band;
- composer;
- copyright;
- url;
- publisher.

Contoh:

from mp3_tagger import MP3File

# Create MP3File instance.
mp3 = MP3File('File_Name.mp3')

# Get all tags.
tags = mp3.get_tags()
print(tags)

Mendukung set, dapatkan, update, dan delete atribut dari file mp3.

Komentar (0)

Jawaban pertama yang menggunakan eyed3 adalah usang jadi di sini adalah versi terbaru itu.

Membaca tag dari file mp3:

 import eyed3

 audiofile = eyed3.load("some/file.mp3")
 print(audiofile.tag.artist)
 print(audiofile.tag.album)
 print(audiofile.tag.album_artist)
 print(audiofile.tag.title)
 print(audiofile.tag.track_num)

Contoh dari web untuk memodifikasi kategori:

 import eyed3

 audiofile = eyed3.load("some/file.mp3")
 audiofile.tag.artist = u"Integrity"
 audiofile.tag.album = u"Humanity Is The Devil"
 audiofile.tag.album_artist = u"Integrity"
 audiofile.tag.title = u"Hollow"
 audiofile.tag.track_num = 2

Masalah yang saya temui ketika mencoba untuk menggunakan eyed3 untuk pertama kalinya harus dilakukan dengan kesalahan impor dari libmagic meskipun itu diinstal. Untuk memperbaiki hal ini menginstal magic-bin whl dari di sini

Komentar (0)

Hal ini dapat tergantung pada apa yang ingin anda lakukan selain membaca metadata. Jika hanya sekadar bitrate / nama dll. yang anda butuhkan, dan tidak ada yang lain, sesuatu yang ringan mungkin yang terbaik.

Jika anda're memanipulasi mp3 masa lalu yang PyMedia mungkin cocok.

Ada beberapa, apa pun yang anda lakukan mendapatkan, memastikan dan menguji itu pada banyak sampel media. Ada beberapa versi yang berbeda dari tag ID3 pada khususnya, jadi pastikan itu's tidak terlalu out of date.

Secara pribadi saya've digunakan kecil ini MP3Info kelas dengan keberuntungan. Itu cukup lama sekalipun.

http://www.omniscia.org/~vivake/python/MP3Info.py

Komentar (0)

Toolkit ini dapat melakukan apa yang anda butuhkan. Saya dapat't mengatakan jika itu's "terbaik", tapi benar-benar, jika memang apa yang anda butuhkan, yang's semua yang penting, kan?

HTH

Komentar (0)

Setelah beberapa penelitian awal saya pikir songdetails mungkin cocok saya gunakan kasus, tapi itu doesn't menangani .m4b file. Mutagen yang tidak. Perhatikan bahwa sementara beberapa memiliki (cukup) mengambil masalah dengan Mutagen's permukaan dari format asli kunci, yang berbeda dari satu format ke format (TIT2 untuk mp3, judul untuk ogg, \xa9nam untuk mp4, Judul untuk WMA dll.), mutagen.File() memiliki (baru?) mudah=True parameter yang menyediakan EasyMP3/EasyID3 kategori, yang memiliki konsisten, meskipun terbatas, set kunci. I've hanya dilakukan pengujian terbatas sejauh ini, tapi umum tombol, seperti album, artis, albumartist, genre, tracknumber, discnumber, dll. semua hadir dan identik untuk .mb4 dan .file mp3 bila menggunakan mudah=True, sehingga sangat nyaman untuk tujuan saya.

Komentar (0)

Jika anda dapat menggunakan IronPython, ada TagLibSharp. Hal ini dapat digunakan dari apapun .NET bahasa.

Komentar (0)