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て、再タグ付けのニーズを処理するために協調して使用します。

Ex Falso、Quod Libetプロジェクトの一部


mid3v2ソリューションの半分にすぎません。それを試した後、私が苦しんでいる誤って識別されたエンコーディングでは間違いなく良くなります。つまり、アップグレードされたID3タグはAmarokでまだ正しく表示されません。Mutagenは、「元のエンコーディングを理解することについてのスマート」という私の要件を満たしていません。Latin1/はWindows-1252、標準に準拠していますが、乱雑な現実の世界では役に立たないものと想定しています。私は今この答えを受け入れない傾向があります。私は他の答えのために数日機会を与えます。何も良いことが来なければ、受け入れられます。
daxim

完全に受け入れられます。Pythonコーダーの場合は、Mutagenを使用するスクリプトを作成して、a)既存のタグを読み取り、b)疑わしい、またはソースエンコーディングがわかっていることに基づいて)スマートな変換手順を実行します。c )新しいタグを記述します。それは主にmid3v2あまり明るくない変換ステップであるように聞こえます、そしてそれは私を驚かせません...しかし、私はPythonがいくつかの文字エンコーディングモジュール(おそらくiconvまたは類似のもの)をよりスマートでDIYに役立つかもしれないと思います-えー
Quack quixote、2010年

私自身はあまりPythonコーダーではないか、もっと役立つ提案があります。もしあなたが自分でスクリプトを書いてしまうなら、stackoverflowの誰かがもっと良いアイデアを持っているかもしれません。
Quack quixote、2010年

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に変換されていません。個人的に私は、UTF(エンコーディング1〜3)としてマークされたID3を誤って見たことはありません。ISO-8859-1は序数のバイト値を1対1で直接マッピングするため、幸いにも0をエンコードして元のバイトに戻すのは簡単です。

エンコーディング0タグが満たされると、スクリプトは最初にGB18030として再キャストしようとし、それが無効な場合はコードページ1252にフォールバックします。cp1252のようなシングルバイトエンコーディングはほとんどのバイトシーケンスに一致する傾向があるため、それらを置くのが最善です。試行するエンコーディングのリストの最後に。

cp1251キリル文字のような他のエンコーディング、または複数のアクセント付き文字が連続する多数のcp1252ファイル名があり、それらがGB18030と間違われる場合、ある種の巧妙な推測アルゴリズムが必要になります。ファイル名を見て、どのような文字が存在する可能性が高いかを推測してください。


+1、素晴らしいスクリプト例、それが何をするか、何を仮定するかについての良い説明。それらをより明確にするために分割しました。よろしくお願いします。
Quack quixote、2010年

0

どの程度Mp3Tagワイン

機能(特に):

タグのバッチ編集ID3v1.1、ID3v2.3、ID3v2.4、MP4、WMA、APEv2タグおよびVorbisコメントを複数のファイルに一度に書き込みます。

Amazon、discogs、freedb、MusicBrainzからのインポートタイピングを保存し、Amazon、discogs、freedb、MusicBrainzなどのオンラインデータベースからタグをインポートします。

文字または単語の置換タグおよびファイル名の文字列を置換します(正規表現をサポートしています)。

完全なUnicodeサポートユーザーインターフェイスとタグ付けは完全にUnicodeに準拠しています。



-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が...ないか、サポートされていないものに興味を持っていません
キホーテいんちき
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.