के साथ एमपी 3 मेटा-डेटा एक्सेस करना पायथन में एमपी 3 मेटाडेटा को पुनर्प्राप्त करने का सबसे अच्छा तरीका क्या है? मैंने वहां कुछ ढांचे को देखा है, लेकिन मुझे यकीन नहीं है कि किसके लिए उपयोग करना सबसे अच्छा होगा .... कोई विचार?पायथन
पायथन
उत्तर
This toolkit आपको जो चाहिए वह कर सकता है। मैं यह नहीं कह सकता कि यह "सर्वश्रेष्ठ" है, लेकिन वास्तव में, यदि आपको वह चाहिए जो आपको चाहिए, तो यह सब मायने रखता है, है ना?
HTH
यह मेटाडेटा पढ़ने के अलावा आप जो करना चाहते हैं उस पर निर्भर कर सकते हैं। यदि यह केवल बिटरेट/नाम इत्यादि है जो आपको चाहिए, और कुछ और नहीं, तो हल्का वजन शायद सबसे अच्छा है।
यदि आप एमपी 3 को पीछे छोड़ रहे हैं कि PyMedia उपयुक्त हो सकता है।
कुछ भी हैं जो आप प्राप्त करते हैं, सुनिश्चित करें और नमूना मीडिया पर इसका परीक्षण करें। विशेष रूप से आईडी 3 टैग के कुछ अलग-अलग संस्करण हैं, इसलिए सुनिश्चित करें कि यह बहुत पुराना नहीं है।
व्यक्तिगत रूप से मैंने भाग्य के साथ इस छोटे एमपी 3 इंफो क्लास का उपयोग किया है। हालांकि यह काफी पुराना है।
क्या आप के बाद कर रहे हैं ID3 मॉड्यूल है। यह बहुत आसान है और आपको वही चीज़ देगा जो आपको चाहिए। बस अपने साइट-संकुल निर्देशिका में ID3.py फ़ाइल की प्रतिलिपि और आप निम्नलिखित की तरह कुछ करने के लिए सक्षम हो जाएगा:
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
बस एक नोट है। यह मॉड्यूल बहुत पुराना है (2002) और आईडी 3 टैग –
मैं का उपयोग किया है mutagen से पहले मीडिया फ़ाइलों में टैग संपादित करने के लिए। Mutagen के बारे में अच्छी बात यह है कि यह एमपी 4, एफएलएसी आदि जैसे अन्य प्रारूपों को संभाल सकता है। मैंने इस एपीआई का उपयोग करके कई सफलता के साथ कई स्क्रिप्ट लिखी हैं।
का वी 2 का समर्थन करता है http://code.google.com/p/quodlibet/ – zgoda
http://code.google.com/p/mutagen/ - यह भी ध्यान दें कि Mutagen जीपीएल है, इसलिए अधिकांश परियोजनाओं के लिए यह नहीं है। – Ciantic
उत्परिवर्तन अच्छा है, हालांकि मुझे कलाकार, शीर्षक शैली इत्यादि पाने के लिए एक समान तरीका याद आ रहा है - आप अलग-अलग चाबियों को जानना चाहते हैं, जो प्रारूप निर्भर हैं। एमपी 3 के लिए 'टीआईटी 2 ', ओजी के लिए' शीर्षक ', एमपी 4 के लिए' xa9nam', डब्लूएमए आदि के लिए' शीर्षक '- जो बेकार है। –
यदि आप आयरनपीथन का उपयोग कर सकते हैं, तो टैगलिबर्प है। It can be used from any .NET language।
मैंने eyeD3 का उपयोग बहुत सफलता के साथ किया था। मैंने पाया कि यह आईडी 3 टैग में आर्टवर्क जोड़ सकता है जो मैंने देखा कि अन्य मॉड्यूल नहीं कर सका। आपको स्रोत फ़ोल्डर से टैर डाउनलोड करना होगा और python setup.py install
निष्पादित करना होगा।
वेबसाइट से प्रासंगिक उदाहरण नीचे दिए गए हैं।
या तो V1 या V2 टैग की जानकारी युक्त एक एमपी 3 फ़ाइल की सामग्री को पढ़ना:
import eyeD3
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
print tag.getArtist()
print tag.getAlbum()
print tag.getTitle()
एक एमपी 3 फ़ाइल (ट्रैक की लंबाई, बिटरेट पढ़ें, आदि) और पहुँच यह टैग है:
if eyeD3.isMp3File(f):
audioFile = eyeD3.Mp3AudioFile(f)
tag = audioFile.getTag()
विशिष्ट टैग संस्करणों का चयन किया जा सकता है:
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.
या आप कच्चे तख्ते से अधिक पुनरावृति कर सकते हैं:
tag = eyeD3.Tag()
tag.link("/some/file.mp3")
for frame in tag.frames:
print frame
बार जब कोई टैग एक से जुड़ा हुआ है फ़ाइल को संशोधित और सहेजा जा सकता है:
tag.setArtist(u"Cro-Mags")
tag.setAlbum(u"Age of Quarrel")
tag.update()
तो टैग में जुड़ा हुआ v2 था और आप v1 के रूप में सहेज करना चाहते हैं: एक टैग में
tag.update(eyeD3.ID3_V1_1)
पढ़ें और फ़ाइल से हटाने: एक नया टैग जोड़ें
tag.link("/some/file.mp3")
tag.remove()
tag.update()
:
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()
आईएचडी 3 भी ** जीपीएल ** है ... इसलिए यदि मेरे जैसे आप इसे अपने कार्यक्रम पर इस्तेमाल करने की योजना बना रहे हैं तो आपको अपने कार्यक्रम को एक मुफ्त कार्यक्रम के रूप में भी जारी करना होगा ... इन लोगों के साथ इसे कम करें, वे क्यों नहीं जारी कर सकते LGPL? – Ciantic
@Ciantic: ID3 टैग बेहद सरल हैं, आप स्वयं पुस्तकालय क्यों नहीं बनाते और बीएसडी के तहत इसे जारी नहीं करते? इसके अलावा, * इन लोगों * आपके पास पहले स्थान पर कुछ भी नहीं है। यहां देखें http://diveintopython.org/object%5Foriented%5Fframework/index.html – voyager
@ voyager, ID3v1 टैग सरल हैं, ID3v2 टैग नरक के रूप में जटिल हैं ... और अब मैंने pytagger http: // के लिए बीएसडी रैपर बनाया है github.com/Ciantic/songdetails मैंने इसे अभी तक जारी नहीं किया है, लेकिन यह काम करता है। – Ciantic
मैंने उपरोक्त उत्तरों को देखा और पाया कि वे जीपीएल के साथ लाइसेंसिंग समस्याओं के कारण मेरे प्रोजेक्ट के लिए अच्छे नहीं हैं।
और मैं इस में पता चला: PyID3Lib, जबकि उस विशेष अजगर बाध्यकारी रिलीज की तारीख पुराना है, यह ID3Lib, जो अपने आप अप टू डेट है उपयोग करता है।
उल्लेखनीय है कि LGPL दोनों हैं, और जाने के लिए अच्छे हैं।
जांच इस एक बाहर:
https://github.com/Ciantic/songdetails
प्रयोग उदाहरण:
>>> import songdetails
>>> song = songdetails.scan("data/song.mp3")
>>> print song.duration
0:03:12
सहेजा जा रहा है परिवर्तन:
>>> import songdetails
>>> song = songdetails.scan("data/commit.mp3")
>>> song.artist = "Great artist"
>>> song.save()
तुम लोगों को बस में अतिरिक्त जानकारी:
PythonInMusic के पृष्ठ में "एमपी 3 सामान और मेटाडाटा संपादक" अनुभाग पर एक नज़र डालें।
कुछ प्रारंभिक शोध के बाद मैंने सोचा कि गीत विवरण मेरे उपयोग के मामले में फिट हो सकता है, लेकिन यह .m4b फ़ाइलों को संभाल नहीं करता है। Mutagen करता है। ध्यान दें कि कुछ लोगों ने प्रारूप (मूल रूप से) प्रारूप-मूल कुंजी के उत्परिवर्तन की सतह के साथ समस्या उठाई है, जो प्रारूप से प्रारूप में भिन्न होते हैं (एमपी 3 के लिए टीआईटी 2, ओग के लिए शीर्षक, एमपी 4 के लिए \ xa9nam, डब्लूएमए आदि के लिए शीर्षक), mutagen.File () में एक (नया?) आसान = सही पैरामीटर है जो EasyMP3/EasyID3 टैग प्रदान करता है, जिसमें सीमित, यद्यपि सीमित, चाबियाँ सेट हैं। मैंने अभी तक सीमित परीक्षण किया है, लेकिन एल्बम, कलाकार, एल्बमर्टिस्ट, शैली, ट्रैकनंबर, डिस्कनंबर इत्यादि जैसी सामान्य कुंजी सभी मौजूद हैं और .mb4 और .mp3 फ़ाइलों के लिए समान हैं, आसान = सही का उपयोग करते समय, इसे बनाना मेरे उद्देश्यों के लिए बहुत सुविधाजनक है।
eyed3
के साथ एक समस्या यह है कि यह सामान्य एमपी 3 फ़ाइलों के लिए NotImplementedError("Unable to write ID3 v2.2")
फेंक देगा।
मेरे अनुभव में, mutagen
वर्ग EasyID3
अधिक विश्वसनीय रूप से काम करता है।उदाहरण:
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()
अन्य सभी टैग इस तरह से पहुंचा जा सकता है और सहेजा जा सकता है, जो अधिकांश उद्देश्यों को पूरा करेगा। अधिक जानकारी Mutagen Tutorial में मिल सकती है।
सबसे आसान तरीका songdetails है ..
पढ़ने डेटा
import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
print song.artist
इसी तरह संपादन के लिए
के लिए
import songdetails
song = songdetails.scan("blah.mp3")
if song is not None:
song.artist = u"The Great Blah"
song.save()
मत भूलना यू नाम से पहले जोड़ने के लिए जब तक आप चीनी भाषा जानते हैं ।
यू पढ़ सकते हैं और सामूहिक रूप से संपादित अजगर ग्लोब मॉड्यूल का उपयोग कर
पूर्व कर सकते हैं।
import glob
songs = glob.glob('*') // script should be in directory of songs.
for song in songs:
// do the above work.
कि उदाहरण के एक सा पुराना है, दोनों अजगर संस्करण के संदर्भ में और ID3 संस्करण के मामले में ... – Bex
दोनों लिंक अब काम कर रहे हैं। (मुझे पता है कि जवाब 9 साल का है) यदि आप ऑनलाइन पुस्तक "डाइव इन पायथन" की तलाश में हैं, तो यहां वर्तमान [लिंक] (http://www.diveintopython.net/) –