जवाबों:
मैंने दूसरे दिन बहुत सफलता के साथ eyeD3 का उपयोग किया । मैंने पाया कि यह ID3 टैग में कलाकृति को जोड़ सकता है जो अन्य मॉड्यूल जिन्हें मैंने देखा था, वे नहीं कर सकते थे। आपको पाइप का उपयोग करके इंस्टॉल करना होगा या टार डाउनलोड करना होगा और 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()
import eyed3
(लोअरकेस डी)।
मैंने पहले मीडिया फ़ाइलों में टैग संपादित करने के लिए म्यूटेन का उपयोग किया है । म्यूटेजन के बारे में अच्छी बात यह है कि यह अन्य स्वरूपों को संभाल सकता है, जैसे कि mp4, FLAC आदि। मैंने इस API का उपयोग करते हुए कई स्क्रिप्ट लिखी हैं।
TIT2
एमपी 3 के लिए, title
ओग के लिए, \xa9nam
mp4 के लिए, Title
अर्थोपाय अग्रिम के लिए आदि - कि बेकार है।
इसके साथ एक समस्या eyed3
यह है कि यह NotImplementedError("Unable to write ID3 v2.2")
आम एमपी 3 फ़ाइलों के लिए फेंक देगा ।
मेरे अनुभव में, 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 में देखी जा सकती है ।
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
इसे देखें:
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 सामान और मेटाडेटा संपादकों" अनुभाग पर एक नज़र डालें ।
डाइव इनटू पायथन पुस्तक का एक सरल उदाहरण मेरे लिए ठीक काम करता है, यह डाउनलोड लिंक है, इसका उदाहरण फ़ाइलिनफोरो है। पता नहीं कि यह सबसे अच्छा है, लेकिन यह बुनियादी काम कर सकता है।
मैंने उपरोक्त उत्तरों को देखा और पाया कि वे जीपीएल के साथ लाइसेंस की समस्याओं के कारण मेरी परियोजना के लिए अच्छे नहीं हैं।
और मुझे यह पता चला: PyID3Lib , जबकि उस विशेष अजगर बंधन की रिलीज़ की तारीख पुरानी है, यह ID3Lib का उपयोग करता है , जो स्वयं अप टू डेट है।
उल्लेखनीय है कि दोनों LGPL हैं , और जाने के लिए अच्छे हैं।
सबसे आसान विधि है गीतकार ।।
डेटा पढ़ने के लिए
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.
pip install
EyeD3, pytaglib, और ID3 मॉड्यूल के लिए सरल मार्ग की कोशिश करने के बाद , मुझे यह सलाह मिली कि यह चौथा विकल्प काम करने वाला एकमात्र था। बाकी सी + + या कुछ जादू या कुछ अन्य पुस्तकालय में गुम निर्भरता के साथ त्रुटि आयात pip
किया था। तो ID3 टैग (सभी संस्करण) के मूल पढ़ने के लिए इस पर जाएं:
https://pypi.python.org/pypi/tinytag/0.18.0
from tinytag import TinyTag
tag = TinyTag.get('/some/music.mp3')
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
विज्ञापन के रूप में यह छोटा और आत्म-निहित था।
पहला उत्तर जो eyed3 का उपयोग करता है, वह पुराना है, इसलिए यहां इसका अपडेट किया गया संस्करण है।
एक एमपी 3 फ़ाइल से टैग पढ़ना:
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)
टैग को संशोधित करने के लिए वेबसाइट से एक उदाहरण:
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
पहली बार eyed3 का उपयोग करने का प्रयास करते समय एक समस्या का मुझे सामना करना पड़ा था, जबकि इसे स्थापित किए जाने के बावजूद यह lib lib की त्रुटि के साथ था। इसे ठीक करने के लिए यहां से मैजिक-बिन व्हेल इंस्टॉल करें
मैं एमपी-टैगर का सुझाव दूंगा । इसके बारे में सबसे अच्छी बात यह है कि यह एमआईटी लाइसेंस के तहत वितरित किया जाता है और सभी आवश्यक विशेषताओं का समर्थन करता है।
- artist;
- album;
- song;
- track;
- comment;
- year;
- genre;
- band;
- composer;
- copyright;
- url;
- publisher.
उदाहरण:
from mp3_tagger import MP3File
# Create MP3File instance.
mp3 = MP3File('File_Name.mp3')
# Get all tags.
tags = mp3.get_tags()
print(tags)
यह एमपी 3 फ़ाइलों के सेट, प्राप्त, अद्यतन और हटाने का समर्थन करता है।
यह ठीक उसी तरह निर्भर कर सकता है जैसे आप मेटाडेटा पढ़ने के अलावा क्या करना चाहते हैं। यदि यह केवल बिटरेट / नाम आदि है, जिसकी आपको आवश्यकता है, और कुछ नहीं, तो कुछ हल्का शायद सबसे अच्छा है।
यदि आप mp3 अतीत में हेरफेर कर रहे हैं कि PyMedia उपयुक्त हो सकता है।
काफी कुछ हैं, जो भी आप प्राप्त करते हैं, सुनिश्चित करें और बहुत सारे नमूना मीडिया पर इसका परीक्षण करें। विशेष रूप से ID3 टैग के कुछ अलग संस्करण हैं, इसलिए सुनिश्चित करें कि यह बहुत पुराना नहीं है।
व्यक्तिगत रूप से मैंने भाग्य के साथ इस छोटे MP3Info वर्ग का उपयोग किया है। हालांकि यह काफी पुराना है।
कुछ प्रारंभिक शोध के बाद मैंने सोचा कि गीतडेट मेरे उपयोग के मामले में फिट हो सकते हैं, लेकिन यह .m4b फ़ाइलों को संभाल नहीं पाता है। Mutagen करता है। ध्यान दें कि जबकि कुछ (यथोचित) ने मुजेगेन के स्वरूप-मूल कुंजियों के सरफेसिंग के मुद्दे को लिया है, जो प्रारूप से प्रारूप (एमपी 3 के लिए TIT2, Ogg के लिए शीर्षक, mp4 के लिए \ xa9nam, WMA आदि के लिए शीर्षक), mutagen.File ( ) के पास एक (नया?) आसान = सच्चा पैरामीटर है जो ईज़ीएमपी 3 / ईज़ीआईडी 3 टैग प्रदान करता है, जिसमें एक सुसंगत, यद्यपि सीमित, कुंजी का सेट है। मैंने अब तक केवल सीमित परीक्षण किया है, लेकिन सामान्य कुंजियाँ, जैसे एल्बम, कलाकार, एल्बमकार्टिस्ट, शैली, ट्रैकनंबर, डिस्कनंबर, आदि .mb4 और .mp3 फ़ाइलों के लिए सभी मौजूद और समान हैं। मेरे उद्देश्यों के लिए बहुत सुविधाजनक है।
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
मैंने टिनिटैग 1.3.1 का उपयोग किया क्योंकि
1.3.0 (2020-03-09):
added option to ignore encoding errors ignore_errors #73
Improved text decoding for many malformed files
MP3 (ID3 v1, v1.1, v2.2, v2.3+)
Wave/RIFF
OGG
OPUS
FLAC
WMA
MP4/M4A/M4B
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)
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>