ID3 태그의 인코딩 복구


12

약 2000 개의 MP3 파일을 상속했습니다. 대부분의 경우 ID3 태그 가 Amarok에서 왜곡 되어 표시됩니다 . ID3 태그를 v2.4 유형 $03(예 : UTF-8 인코딩)으로 업그레이드하고 v1 태그를 제거하고 사례별로 원본 인코딩을 파악하는 것이 현명한 소프트웨어가 필요 합니다. Windows-1252, BOM이없는 UTF-16 또는 GB18030).

TagLib 위에서 직접 프로그래밍을 시작하기 전에 이미 사용할 수있는 완벽한 솔루션이 있습니까?

Musicbrainz를 권장하지 않습니다 – 미국에서 출판 된 음악에 크게 치우 치며 거의 쓸모가 없습니다. 내 요구 사항에 대해 먼저 테스트하지 않고 일반적인 ID3 태그 지정 소프트웨어를 권장하지 않습니다. 대부분

  • v2.4를 지원하지 않습니다
  • 솔직히 말해서, 문자 인코딩에 대한 조용한 지체 아이디어
  • 자동화 기능이 없습니다 (수동으로 편집하는 데 시간을 보내고 싶지 않습니다).

또한 태그 청소, 대량 이름 바꾸기 또는 분류 소프트웨어에만 관심이 없습니다. 먼저 위에서 언급 한 정규화 단계를 수행했습니다.

답변:


9

Quod Libet 프로젝트에 포함 된 태그 편집기 Ex Falso가 필요합니다 . Picard (MusicBrainz 태거)는 동일한 태깅 라이브러리를 사용할 수 있지만 QL에서 시작했습니다.

특히, 당신은 id3v2.4 를 지원 하는 Mutagen 태깅 라이브러리 를 원합니다 . 문자 인코딩에도 탁월하며 스크립트 가능한 기본 명령 줄 태그 기능 ( mid3v2)이 포함되어 있습니다. 정규화 단계가 진행되는 한 Mutagen 은 ID3v2.4 에만 태그를 저장합니다. 확실히 모든 텍스트를 UTF-8로 변환 할 수는 있지만 직접 스크립트해야 할 수도 있습니다 ( mid3v2도구의 기본값은 가능한 한 현재 인코딩을 유지하는 것으로 생각하며 저장하라는 메시지가 표시되는지 알 수 없습니다) 특정 인코딩의 모든 것). Mutagen은 Python으로 작성되었습니다.

Ex Falso는 훌륭하고 깔끔한 GUI이며, 예상되는 대부분의 주요 retag-multiple-files 기능을 지원합니다. 인터넷 검색 방식에는 그다지 도움이되지 않는다고 생각하며 앨범 아트 워크가 어떤지 잘 모르겠습니다. Quod Libet이이를 지원할 수도 있습니다. Ex Falso 플러그인을 사용하여 플러그인을 사용할 수 있지만 플러그인이 있으면 존재할 수 있습니다. 나는 그 기능이 필요하지 않았다. 나는 EF를 사용 mid3v2하여 태그 변경 요구를 처리한다.

Quod Libet 프로젝트의 일부인 Ex Falso


mid3v2솔루션의 절반에 불과합니다. 그것을 시도한 후에, 내가 겪고있는 잘못 식별 된 인코딩, 즉 업그레이드 된 ID3 태그가 여전히 Amarok에서 잘못 표시 되는 것은 좋지 않습니다 . Mutagen은 원래의 인코딩을 알아내는 것에 대한»스마트에 대한 나의 요구에 실패합니다.; Latin1/ Windows-1252는 표준을 준수하지만 지저분한 실제 세계에는 쓸모가 없다고 가정합니다 . 나는 지금이 대답을 받아들이지 않는 경향이있다. 다른 답변에 며칠 더 기회를 주겠습니다. 좋은 것이 없으면 받아 들여집니다.
daxim

완벽하게 허용됩니다. 파이썬 코더라면 Mutagen을 사용하여 a) 기존 태그를 읽고 b) 소스 변환이 의심되거나 알고있는 것을 기반으로 스마트 변환 단계를 수행하는 스크립트를 작성하는 것이 좋습니다. ) 새 태그를 작성하십시오. 그것은 mid3v2너무 밝지 않은 전환 단계 라고 생각합니다. 놀랍지 않습니다 ...하지만 파이썬에는 iconv더 똑똑하고 DIY에 유용 할 수있는 문자 인코딩 모듈 (아마도 유사하거나 유사한 것)이 있다고 생각합니다. 어.
quack quixote

나는 파이썬 코더 자체가 많지 않거나 더 유용한 제안이 있습니다. 자신의 스크립트를 작성하면 결국 스택 오버 플로우의 누군가가 더 나은 아이디어를 얻을 수 있습니다.
quack quixote

9

태그가 잘못 지정된 인코딩의 특정 선택을 수정하는 독립 실행 형 응용 프로그램을 찾을 것이라고 생각하지 않습니다. cp1252, UTF-16 및 GB-18030을 혼합하여 사용하는 것은 매우 드문 일이며 기존 소프트웨어가 자동으로 해결할 수 있다고 생각하지 않습니다.

그래서 Mutagen을 다운로드 하고 알 수없는 인코딩을 수정하는 방법에 대한 자신의 결정을 자동화하는 사용자 지정 Python 스크립트를 작성했습니다. 예를 들면 다음과 같습니다.

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이지만 실제로는 Windows 기본 코드 페이지입니다.)

  2. 태그가 UTF-8 또는 UTF-16 인코딩으로 표시된 것으로 표시되면 올바른 것으로 간주되며 아직 UTF-8로 변환되지 않은 경우 간단합니다. 개인적으로 나는 이전에 오류로 UTF3 (인코딩 1-3)으로 표시된 ID3을 보지 못했습니다. 운 좋게도 0을 인코딩하면 ISO-8859-1이 서수 바이트 값의 일대일 직접 매핑이므로 원래 바이트로 쉽게 복구 할 수 있습니다.

인코딩 0 태그가 충족되면 스크립트는 먼저 GB18030으로 다시 캐스트하려고 시도하고, 유효하지 않은 경우 코드 페이지 1252로 돌아갑니다. cp1252와 같은 단일 바이트 인코딩은 대부분의 바이트 시퀀스와 일치하는 경향이 있으므로이를 넣는 것이 가장 좋습니다. 시도 할 인코딩 목록의 끝에.

GB18030으로 잘못 인식되는 cp1251 Cyrillic과 같은 다른 인코딩이나 여러 악센트 문자가있는 많은 cp1252 파일 이름이 GB18030으로 잘못 인식되면 어떤 종류의 영리한 추측 알고리즘이 필요합니다. 파일 이름을보고 어떤 종류의 문자가 존재할지 추측 할 수 있습니까?


+1, 멋진 예제 스크립트, 스크립트의 기능 및 가정에 대한 좋은 설명. 나는 그것들을 좀 더 분명하게하기 위해 나누었다. 당신이 상관하지 않기를 바랍니다.
quack quixote

0

방법에 대한 Mp3Tag와인 ?

특징 (다른 것들 중에서) :

배치 태그 편집 ID3v1.1, ID3v2.3, ID3v2.4 , MP4, WMA, APEv2 태그 및 Vorbis 주석을 한 번에 여러 파일에 씁니다 .

Amazon, discogs, freedb, MusicBrainz에서 가져 오기 Amazon, discogs, freedb, MusicBrainz 등과 같은 온라인 데이터베이스에서 입력을 저장하고 태그를 가져옵니다.

문자 또는 단어 바꾸기 태그 및 파일 이름의 문자열을 바꿉니다 (정규 표현식 지원).

완전한 유니 코드 지원 사용자 인터페이스 및 태깅은 완전히 유니 코드를 준수합니다.



-1

EasyTag있습니다

EasyTAG는 MP3, MP2, MP4 / AAC, FLAC, Ogg Vorbis, MusePack, Monkey 's Audio 및 WavPack 파일의 태그를보고 편집하는 유틸리티입니다. 간단하고 멋진 GTK + 인터페이스는 GNU / Linux 또는 Windows에서 태그를 더 쉽게 만듭니다.

또한 Windows Media Player는 2.4를 지원하지 않기 때문에 id3v2.3이 일반적으로 선호되는 형식임을 알고 싶을 수도 있습니다.


v2.4 사양을 준수한다고 주장하는 사람들은 일반적으로 Windows Media Player가 지원하거나 지원하지 않는 것에 관심이 없습니다.
quack quixote
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.