2011年9月7日水曜日

Ampacheに登録した音楽が文字化けしてしまう問題へのパッチ

僕はよくWindowsMediaPlayerで音楽を取り込んでいるんですが、
その曲をAmpacheに登録した際、文字化けした状態で取り込まれてしまう問題がありました。

この問題に対応するためのパッチを作成しましたので、公開します。


ダウンロード


Ampache 3.6 Alpha Dev-? (現行開発バージョン) 向けのパッチ

※Ampache 3.6 Alpha Dev-1には対応しておりません。(現行開発バージョンとAlpha Dev-1はライブラリのバージョンが違うため)
このパッチを使用する場合は、現行のAmpache開発バージョンをお使いください。
開発バージョンは、ampacheの公開gitより、以下のコマンドなどでダウンロードできます。

$ git clone git://gitorious.org/ampache/ampache.git



適用方法


パッチは、Ampacheインストールディレクトリ内のmodules/getid3 まで移動して、patchコマンドで適用することが出来ます。
以下はパッチをホームディレクトリ直下に保存した場合のコマンド例です。

$ cd ampache/modules/getid3
$ patch < ~/ampache-garbled_id3v2.patch



文字化けの原因


これは、音楽ファイルに含まれている情報の文字コードが Shift_JIS だからです。

Ampacheは、音楽の情報を読み取る際にgetID3()というライブラリを使っています。
WindowsMediaPlayerなどで取り込んだ音楽ファイルには ID3v2 タグと呼ばれる、タイトルやアーティストなどの情報が含まれているのですが、getID3() ライブラリはこの情報を音楽ファイルから読取り、Ampache に渡しています。

このパッチは、このライブラリが取得した ID3v2 タグがどの文字コードであるかを判定して、文字化けしないよう UTF-8 へ変換しています。


また、このパッチは Ampache ではなく、getID3() ライブラリ側を書き換えるようになっています。これは、Ampacheにデータを渡す前の段階で、Shift_JIS -> UTF-8 への変換が既に行われてしまっているためです。
文字化けしたものを更にエンコードされると情報がおかしくなってしまうので、Ampache側だけでの対応は難しそうです。。

0 件のコメント:

コメントを投稿