Python ile mp3 Meta Verilere Erişim

oy
98

Python mp3 meta verileri almak için en iyi yolu nedir? Oraya birkaç çerçeveler gördüm ama .... Herhangi fikirleri kullanmak iyi olurdu hangi olarak emin değilim?

Oluştur 12/08/2008 saat 16:16
kaynak kullanıcı
Diğer dillerde...                            


18 cevaplar

oy
1

Bu araç seti neye ihtiyacınız yapabilirsiniz. Doğru, bu "en iyi", ama neye ihtiyacınız yaparsa gerçekten, önemli olan da bu buysa diyemeyiz?

HTH

Cevap 12/08/2008 saat 16:32
kaynak kullanıcı

oy
7

Dalış Into Python benim için Tamam çalışan kitaptan Basit bir örnek, bu örnek fileinfo.py olduğunu indirme bağlantıdır. En iyisi bilmiyorum, ancak temel iş yapabilirsiniz.

Bütün kitap çevrimiçi kullanılabilir burada .

Cevap 12/08/2008 saat 16:37
kaynak kullanıcı

oy
1

Bu meta okuma ek olarak yapmak istiyorum tam olarak ne bağlı olabilir. o bit hızı / name ihtiyacınız vs. ve başka bir şey, sadece basitçe ise hafif bir şey muhtemelen en iyisidir.

mp3 geçmiş manipüle ediyorsanız PyMedia uygun olabileceğini.

Eğer almak emin olun ve örnek medya bol üzerinde bunu test yaparsan, epeyce vardır. Orada özellikle ID3 etiketleri birkaç farklı sürümleri bulunmaktadır, bu nedenle eskimiş çok olmadığından emin olun.

Şahsen ben şans ile bu küçük MP3Info sınıfını kullandım. Ama oldukça eskidir.

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

Cevap 12/08/2008 saat 16:37
kaynak kullanıcı

oy
12

Ne Peşinde olduğun olan ID3 modülü. Çok basit ve tam olarak ne gerek size verecektir. Sadece site paketleri dizine ID3.py dosyayı kopyalamak ve aşağıdaki gibi bir şey yapmak mümkün olacak:

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
Cevap 13/08/2008 saat 01:44
kaynak kullanıcı

oy
33

Kullandığım mutajen önce medya dosyalarında etiketleri düzenlemek için. Mutajen hakkında güzel bir şey böyle mp4 gibi FLAC vb bu API kullanarak başarı bir sürü birkaç komut yazdım diğer formatlar, işleyebilir olmasıdır.

Cevap 14/08/2008 saat 10:46
kaynak kullanıcı

oy
0

Eğer IronPython kullanabiliyorsa, TagLibSharp yoktur. Herhangi NET dilden kullanılabilir .

Cevap 26/08/2008 saat 18:48
kaynak kullanıcı

oy
91

Ben kullanılan eyeD3 başarı bir sürü gün. Ben diğer modüller yapamadım baktım ID3 etiketine sanat ekleyin bulmuştur. Sen katran indirip çalıştırmak gerekecek python setup.py installkaynak klasörden.

web sitesinden ilgili örnekler aşağıda verilmiştir.

v1 veya v2 etiketi bilgi ya içeren bir mp3 dosyasının içeriğini Okuma:

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

bu etiketi bir mp3 dosyası (hat uzunluğu, bit hızı, vb) ve erişim oku:

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

Özgül etiket versiyonları seçilebilir:

 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.

Yoksa çiğ çerçeveler adımlayabilirsiniz:

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

Bir etiket bir dosyaya bağlandıktan sonra bu değiştirilmiş ve kaydedilebilir:

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

Bağlantılı etiket v2 ve eğer v1 olarak kaydedin istiyorum:

 tag.update(eyeD3.ID3_V1_1)

Bir etiketi okuma ve dosyadan çıkarın:

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

Yeni etiket ekle:

 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()
Cevap 19/09/2008 saat 15:30
kaynak kullanıcı

oy
5

Yukarıdaki cevaplar baktı ve onlar çünkü GPL ile lisans problemleri Projem için iyi değildir öğrendim.

Ve öğrendim bu: PyID3Lib o belirli süre piton bağlama çıkış tarihi eskidir, kullandığı id3lib kendisi güncel olup,.

Söz Önemli ikisi olmasıdır LGPL'i ve gitmek iyidir.

Cevap 20/12/2009 saat 20:32
kaynak kullanıcı

oy
8

bu bir göz atın:

https://github.com/Ciantic/songdetails

Kullanım örneği:

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

Değişiklikleri kaydediyor:

>>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
Cevap 30/12/2010 saat 02:40
kaynak kullanıcı

oy
5

Sizlerle Sadece ek bilgiler:

sayfa bölümünde "MP3 malzeme ve Meta veri editörler" bakmak PythonInMusic .

Cevap 08/07/2011 saat 09:24
kaynak kullanıcı

oy
0

bazı ilk araştırma sonra songdetails benim kullanma durumu uygun olabileceğini düşündüm, ama dosyaları .m4b işlemez. Mutajen yapar. Not bazı varken (makul), mutagen.File ((WMA vb mp3 için TIT2, OGG için başlık, mp4 için \ xa9nam, Başlık) biçimine biçimi değişir biçimi yerli tuştan mutajen en yüzey yapısı ile konu alındığı ) sınırlı da olsa tuşlarının set, tutarlı olması EasyMP3 / EasyID3 etiketleri sağlayan bir (yeni?) kolay = true parametresi vardır. Ben sadece şimdiye kadar sınırlı testler yaptık, ama ettik ortak anahtarlar, vb albüm, sanatçı, albumartist, tür, tracknumber, discnumber gibi yapma, Gerçek = kolay kullanırken .mb4 ve .mp3 dosyaları için tüm mevcut ve aynıdır benim amaçlar için çok uygun.

Cevap 12/07/2015 saat 23:17
kaynak kullanıcı

oy
11

Ilgili bir sorun eyed3o atmak olacaktır NotImplementedError("Unable to write ID3 v2.2")ortak MP3 dosyaları için.

Tecrübelerime göre, mutagensınıf EasyID3daha güvenilir bir şekilde çalışır. Örnek:

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

Diğer tüm etiketler bu şekilde erişilir ve en amaçlara hizmet edecek olan kaydedilebilir. Daha fazla bilgi bulunabilir Mutajen Öğreticisi .

Cevap 24/01/2016 saat 00:07
kaynak kullanıcı

oy
4

en kolay yöntemdir songdetails ..

okuma verileri için

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

Benzer düzenlemek için

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

Eklemeyi unutmayın u size çince dil bilmek kadar adından önce.

u okumak ve piton glob modülünü kullanarak toplu olarak değiştirebilirsiniz

ex.

import glob
songs = glob.glob('*')   // script should be in directory of songs.
for song in songs:
    // do the above work.
Cevap 11/08/2016 saat 09:05
kaynak kullanıcı

oy
0

Kullanan ilk cevap eyed3 işte modası geçmiş bunun güncelleştirilmiş bir sürümüdür.

bir mp3 dosyası etiketlerini okuma:

 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)

etiketleri değiştirmek için web sitesinden bir örnek:

 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

İlk kez eyed3 kullanmaya çalışıyor yüklü olmasına rağmen Libmagic bir ithalat hata ile yapmak zorunda sırasında bir sorun ben karşılaştı. Dan sihirli-bin whl yüklemek Bunu düzeltmek için buraya

Cevap 08/04/2018 saat 15:52
kaynak kullanıcı

oy
0

Basit denedikten sonra pip installburada önerilen eyeD3, pytaglib ve ID3 modülleri için rotayı, bu dördüncü seçenek çalışmak tek olduğunu gördük. Gerisi C eksik bağımlılıkları ++ veya sihirli bir şey ya da başka bir kütüphane ile ithalat hatalar vardı pipkaçırdı. Yani ID3 etiketleri (tüm sürümler) temel okuma için bu bir ile gitmek:

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

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

Eğer Tinytag ile alabilirsiniz olası Özelliklerin listesi:

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

Bu küçücük ve kendine yeten olarak reklamı, oldu.

Cevap 16/04/2018 saat 01:34
kaynak kullanıcı

oy
0

Öneririm mp3 tagger . Bu konuda en iyi şey, altında dağıtılmaktadır olan MIT Lisansı ve gerekli tüm özellikleri destekler.

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

Örnek:

from mp3_tagger import MP3File

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

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

Bu, almak güncelleme ve mp3 dosyalarının özelliklerini silmek, set destekler.

Cevap 26/06/2018 saat 13:50
kaynak kullanıcı

oy
0

kullanarak https://github.com/nicfit/eyeD3

import eyed3
import os

for root,  dirs, files in os.walk(folderp):
    for file in files:
        try:
            if file.find(".mp3") < 0:
                continue
            path = os.path.abspath(os.path.join(root , file))
            t = eyed3.load(path)
            print(t.tag.title , t.tag.artist)
            #print(t.getArtist())
        except Exception as e:
            print(e)
            continue
Cevap 07/02/2020 saat 02:51
kaynak kullanıcı

oy
0

Kullandığım Tinytag 1.3.1 çünkü

  1. Bu aktif olarak desteklenir:
1.3.0 (2020-03-09):
added option to ignore encoding errors ignore_errors #73
Improved text decoding for many malformed files
  1. Bu büyük biçimlerini destekler:
MP3 (ID3 v1, v1.1, v2.2, v2.3+)
Wave/RIFF
OGG
OPUS
FLAC
WMA
MP4/M4A/M4B
  1. kod geliştirme sadece birkaç dakika içinde ÇALIŞTI.
from tinytag import TinyTag

fileNameL ='''0bd1ab5f-e42c-4e48-a9e6-b485664594c1.mp3
0ea292c0-2c4b-42d4-a059-98192ac8f55c.mp3
1c49f6b7-6f94-47e1-a0ea-dd0265eb516c.mp3
5c706f3c-eea4-4882-887a-4ff71326d284.mp3
'''.split()

for fn in fileNameL:
    fpath = './data/'+fn
    tag = TinyTag.get(fpath)
    print()
    print('"artist": "%s",' % tag.artist)
    print('"album": "%s",' % tag.album)
    print('"title": "%s",' % tag.title)
    print('"duration(secs)": "%s",' % tag.duration)

  • SONUÇ
JoeTagPj>python joeTagTest.py

"artist": "Conan O’Brien Needs A Friend",
"album": "Conan O’Brien Needs A Friend",
"title": "17. Thomas Middleditch and Ben Schwartz",
"duration(secs)": "3565.1829583532785",

"artist": "Conan O’Brien Needs A Friend",
"album": "Conan O’Brien Needs A Friend",
"title": "Are you ready to make friends?",
"duration(secs)": "417.71840447045264",

"artist": "Conan O’Brien Needs A Friend",
"album": "Conan O’Brien Needs A Friend",
"title": "Introducing Conan’s new podcast",
"duration(secs)": "327.22187551899646",

"artist": "Conan O’Brien Needs A Friend",
"album": "Conan O’Brien Needs A Friend",
"title": "19. Ray Romano",
"duration(secs)": "3484.1986772305863",

C:\1d\PodcastPjs\JoeTagPj>
Cevap 11/03/2020 saat 00:02
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more