ID3 टैग की मरम्मत एन्कोडिंग


12

मुझे लगभग 2000 एमपी 3 फाइलें विरासत में मिली हैं। उनमें से अधिकांश के लिए, उनके ID3 टैग अमारोक में प्रदर्शित होते हैं । मुझे एक सॉफ्टवेयर की आवश्यकता है जो ID3 टैग को v2.4 प्रकार $03(यानी UTF-8 एन्कोडिंग) में अपग्रेड करता है , किसी भी v1 टैग को हटाता है, और केस-दर-मामला आधार पर मूल एन्कोडिंग का पता लगाने के बारे में भी स्मार्ट है (सबसे अधिक संभावना एक आंकड़ा Windows-1252, BOM- कम UTF-16 या GB18030)।

इससे पहले कि मैं टैगलेब के शीर्ष पर अपने आप यह प्रोग्रामिंग शुरू करूं, क्या पहले से ही ऐसा कोई पूर्ण समाधान है जिसका मैं उपयोग कर सकता हूं?

Musicbrainz की सिफारिश न करें - यह संयुक्त राज्य अमेरिका प्रकाशित संगीत और मेरे लिए बेकार के लिए बहुत पक्षपाती है। सामान्य ID3 टैगिंग सॉफ़्टवेयर को मेरी आवश्यकताओं के विरुद्ध पहले परीक्षण के बिना अनुशंसित न करें - उनमें से अधिकांश

  • v2.4 का समर्थन नहीं करते
  • है, स्पष्ट रूप से कहा, चरित्र एन्कोडिंग के बारे में शांत मंद विचारों
  • कोई स्वचालन सुविधाएँ नहीं हैं (मैं अपना समय मैन्युअल रूप से संपादित करना नहीं चाहता)।

मैं केवल टैग सफाई, बड़े पैमाने पर नाम बदलने या वर्गीकरण सॉफ्टवेयर में दिलचस्पी (अभी तक) नहीं हूं; मैंने सबसे पहले उपर्युक्त सामान्यीकरण चरण किया है।

जवाबों:


9

आप क्वॉड लिबेट परियोजना में शामिल टैग संपादक, एक्स फाल्सो चाहते हैं । Picard (MusicBrainz टैगर) एक ही टैगिंग लाइब्रेरी का उपयोग कर सकता है, लेकिन QL ने इसे उत्पन्न किया।

विशेष रूप से, आप Mutagen टैगिंग लाइब्रेरी चाहते हैं , जो id3v2.4 का समर्थन करती है (और "समर्थन" से मेरा मतलब है "लागू" ... सैन्य रूप से ...)। यह चरित्र एन्कोडिंग के साथ भी उत्कृष्ट है, और इसमें एक मूल स्क्रिप्ट योग्य कमांडलाइन टैगर ( mid3v2) शामिल है। जहाँ तक आपका सामान्यीकरण कदम है, Mutagen केवल ID3v2.4 में टैग बचाता है। यह निश्चित रूप से सभी पाठों को UTF-8 में परिवर्तित करने में सक्षम है, लेकिन आपको अपनी स्क्रिप्ट की आवश्यकता हो सकती है (मेरा मानना ​​है कि mid3v2उपकरण की चूक वर्तमान एन्कोडिंग को संभव रखने के लिए है, और मुझे नहीं पता कि इसे सहेजने के लिए कहा जा सकता है या नहीं। एक विशेष एन्कोडिंग में सब कुछ)। पाइथन में म्यूटेन लिखा गया है।

एक्स फाल्सो एक अच्छा, साफ-सुथरा GUI है, और आप जो अपेक्षा करते हैं, उसमें से अधिकांश प्रमुख रेटाग-मल्टीपल-फाइल्स सुविधाओं का समर्थन करता है। मुझे नहीं लगता कि यह इंटरनेट लुकअप के तरीके में बहुत कुछ करता है और मुझे नहीं पता कि यह एल्बम कलाकृति के साथ कैसे है - क्वोड लिबेट इसका समर्थन कर सकता है; एक्स फाल्सो इसे एक प्लगइन के साथ कर सकते हैं, एक मौजूद होना चाहिए, हालांकि एक मौजूद नहीं हो सकता है। मुझे उस कार्यक्षमता की कभी आवश्यकता नहीं है - मैं mid3v2अपनी फिर से उभरती जरूरतों को संभालने के लिए ईएफ और संगीत कार्यक्रम का उपयोग करता हूं ।

Ex Falso, Quod Libet परियोजना का हिस्सा है


mid3v2केवल आधा समाधान है। इसे आज़माने के बाद, यह निश्चित रूप से गलत नहीं है कि मैं जिस अतिक्रमण से पीड़ित हूं, वह गलत नहीं है, अर्थात एक उन्नत ID3 टैग अभी भी अमारोक में गलत प्रदर्शित करता है। Mutagen मेरी ज़रूरत को विफल करता है »मूल एन्कोडिंग का पता लगाने के बारे में स्मार्ट«; यह blithely मानता है Latin1/ Windows-1252, जो मानक अनुरूप है, लेकिन गन्दा वास्तविक दुनिया के लिए बेकार है। मैं अभी इस उत्तर को स्वीकार नहीं करने के लिए इच्छुक हूं; मैं अन्य उत्तरों के लिए कुछ और दिनों का अवसर दूंगा। अगर कुछ भी अच्छा नहीं आता है, तो आप स्वीकार कर लेते हैं।
daxim

पूरी तरह से स्वीकार्य है। यदि आप एक अजगर कोडर हैं, तो आप एक स्क्रिप्ट लिखने पर विचार कर सकते हैं जो म्यूटेन का उपयोग करता है) मौजूदा टैग में पढ़ी जाती है, ख) कुछ स्मार्ट रूपांतरण चरण निष्पादित करते हैं (जो आपको संदेह है या स्रोत एन्कोडिंग होने का पता है) के आधार पर, और सी ) एक नया टैग लिखें। ऐसा लगता है कि यह मुख्य रूप से रूपांतरण कदम है जो mid3v2बहुत उज्ज्वल नहीं है, और यह मुझे आश्चर्यचकित नहीं करता है ... लेकिन मुझे लगता है कि अजगर के पास कुछ चरित्र एन्कोडिंग मॉड्यूल (शायद iconvया इसी तरह) हैं जो चालाक हैं और DIY के लिए उपयोगी हो सकते हैं- एर।
क्विकोट

मैं अपने आप को एक अजगर कोडर के बहुत नहीं हूँ या मैं कुछ और उपयोगी सुझाव होगा। हो सकता है कि स्टैकओवरफ्लो पर किसी के पास बेहतर विचार होगा यदि आप अपनी स्क्रिप्ट लिखना समाप्त करते हैं।
क्विकोट

9

मुझे नहीं लगता कि आप एक स्टैंडअलोन एप्लिकेशन ढूंढने जा रहे हैं जो आपके विशेष रूप से गलत तरीके से टैग किए गए एनकोडिंग के चयन को ठीक करेगा। Cp1252, UTF-16 और GB-18030 का मिश्रण होना काफी असामान्य है और मुझे नहीं लगता कि मौजूदा सॉफ्टवेयर अपने आप इसे हल कर पाएगा।

इसलिए मैं Mutagen डाउनलोड करूंगा और अज्ञात एनकोडिंग को ठीक करने के बारे में अपने स्वयं के निर्णयों को स्वचालित करने के लिए एक कस्टम पायथन स्क्रिप्ट लिखूंगा। उदाहरण के लिए:

musicroot= ur'C:\music\wonky'
tryencodings= 'gb18030', 'cp1252'

import os
import mutagen.id3

def findMP3s(path):
    for child in os.listdir(path):
        child= os.path.join(path, child)
        if os.path.isdir(child):
            for mp3 in findMP3s(child):
                yield mp3
        elif child.lower().endswith(u'.mp3'):
            yield child

for path in findMP3s(musicroot):
    id3= mutagen.id3.ID3(path)
    for key, value in id3.items():
        if value.encoding!=3 and isinstance(getattr(value, 'text', [None])[0], unicode):

            if value.encoding==0:
                bytes= '\n'.join(value.text).encode('iso-8859-1')
                for encoding in tryencodings:
                    try:
                        bytes.decode(encoding)
                    except UnicodeError:
                        pass
                    else:
                        break
                else:
                    raise ValueError('None of the tryencodings work for %r key %r' % (path, key))
                for i in range(len(value.text)):
                    value.text[i]= value.text[i].encode('iso-8859-1').decode(encoding)

            value.encoding= 3
    id3.save()

उपरोक्त स्क्रिप्ट कुछ धारणाएँ बनाती है:

  1. केवल एन्कोडिंग 0 में होने के रूप में चिह्नित टैग गलत हैं। (मूल रूप से एन्कोडिंग 0 ISO-8859-1 है, लेकिन व्यवहार में यह अक्सर एक विंडोज डिफ़ॉल्ट कोड पेज होता है।)

  2. यदि कोई टैग UTF-8 या UTF-16 एन्कोडिंग में होने के रूप में चिह्नित है, तो इसे सही माना जाता है, और यदि यह पहले से ही नहीं है, तो बस इसे UTF-8 में बदल दिया जाता है। व्यक्तिगत रूप से मैंने पहले आईडी 3 एस को यूटीएफ के रूप में चिह्नित नहीं किया है (1-3) (त्रुटि से पहले 1-3)। सौभाग्य से एन्कोडिंग 0 अपने मूल बाइट्स में पुनर्प्राप्त करना आसान है क्योंकि आईएसओ-8859-1 एक 1-टू -1 डायरेक्ट ऑर्डिनल बाइट मानों का मानचित्रण है।

जब एन्कोडिंग 0 टैग पूरा हो जाता है, तो स्क्रिप्ट इसे पहले GB18030 के रूप में पुन: उपयोग करने का प्रयास करती है, फिर यदि यह मान्य नहीं है तो कोड 1252 पृष्ठ पर वापस आ जाएगी। cp1252 जैसे एकल-बाइट एन्कोडिंग अधिकांश बाइट अनुक्रमों का मिलान करेंगे, इसलिए उन्हें रखना सबसे अच्छा है। प्रयास करने के लिए एन्कोडिंग की सूची के अंत में।

यदि आपके पास cp1251 सिरिलिक जैसे अन्य एनकोडिंग हैं, या एक पंक्ति में कई उच्चारण पात्रों के साथ cp1252 फ़ाइलनाम हैं, जो GB18030 के लिए गलत हो जाता है, तो आपको किसी प्रकार के एक चतुर अनुमानक एल्गोरिदम की आवश्यकता होगी। शायद यह देखने के लिए फ़ाइल नाम देखें कि किस प्रकार के पात्रों के मौजूद होने की संभावना है?


+1, अच्छा उदाहरण स्क्रिप्ट, और यह क्या करता है और यह क्या धारणा बनाता है की एक अच्छी व्याख्या। मैंने उन्हें अधिक स्पष्ट बनाने के लिए अलग किया; आशा है कि आप बुरा नहीं मानेंगे।
क्विकोट

0

शराब के साथ Mp3Tag के बारे में कैसे ?

सुविधाएँ (दूसरों के बीच):

बैच टैग संपादन लिखना ID3v1.1, ID3v2.3, ID3v2.4 , MP4, अर्थोपाय अग्रिम, APEv2 टैग और Vorbis टिप्पणियाँ एक साथ कई फाइलों में।

Amazon, discogs, freedb, MusicBrainz से आयात करें, Amazon, discogs, freedb, MusicBrainz, और अधिक जैसे ऑनलाइन डेटाबेस से टाइपिंग और आयात टैग सहेजें।

वर्णों या शब्दों को बदलें टैग और फ़ाइल नाम में स्ट्रिंग्स को बदलें (नियमित अभिव्यक्तियों के लिए समर्थन के साथ)।

पूर्ण यूनिकोड समर्थन उपयोगकर्ता-इंटरफ़ेस और टैगिंग पूरी तरह से यूनिकोड के अनुरूप हैं।



-1

वहाँ भी EasyTag है

EasyTAG एमपी 3, एमपी 2, एमपी 4 / एएसी, एफएलएसी, ओग वोरबिस, म्यूजसपैक, बंदर की ऑडियो और वेवैक फाइलों के लिए टैग्स को देखने और संपादित करने के लिए एक उपयोगिता है। इसका सरल और अच्छा GTK + इंटरफ़ेस GNU / लिनक्स या विंडोज के तहत टैगिंग को आसान बनाता है।

यह भी आप जानना चाहते होंगे कि id3v2.3 आमतौर पर बेहतर प्रारूप है, क्योंकि विंडोज़ मीडिया प्लेयर 2.4 का समर्थन नहीं करता है


लोग जो v2.4 कल्पना का पालन करने पर जोर देते हैं, आमतौर पर विंडोज मीडिया प्लेयर क्या समर्थन करता है या नहीं करता है, में कोई दिलचस्पी नहीं है ...
क्वैक क्विक्सोट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.