Exaileで日本語が化ける原因

タイトル等に日本語が含まれている場合、Exaileではそれらが文字化けしてしまいます。
いろいろ調べてみたら、なんとなく原因がわかりました。

(1)まず、なんといってもCDDBのサーバが指定できないので、日本語に対応したCDDB
  選択できません。これは結構致命的。。

(2)次にソースコードで、アルバム名やトラック名の文字列の変換をしている部分が
  あるのですが、この部分で欧米の文字コード固定で変換を行っている。。。(たぶん)

これは困りましたね。

これらをふまえて、リッピングプラグインの次なる目標は。。。

Exaileのトラックリストに表示されている曲名などは文字化けしていても、
リッピングエンコード完了したファイルの名前は文字化けしないようにする。

あたりですね。

CDDBのサーバと、テキストのエンコードを指定できるようにすることと、
リッピング時に自分でCDDBの情報を取得しなおすようにすれば
なんとかなりそうです。

ちなみに、CDDBから情報を取得するのはすごく簡単でした。

import CDDB
import DiscID

disc = DiscID.open('/dev/cdrom')
disc_id = DiscID.disc_id(disc)

(status, info) = CDDB.query(disc_id, "CDDBサーバのURL")

for i in range(トラック数)
  (status, track_info) = CDDB.read(info['category'], info['TTITLE%d' + i])

などとすればOKです。

track_infoにはタイトル文字列が格納されているので、
あとは必要に応じて

track_info.decode('shift-jis', 'replace')とか
track_info.decode('euc-jp', 'replace')とか

すればよいです。

decode()に'shift-jis'を指定するか'euc-jp'を指定するかは、
CDDBのサーバの文字コードによって変更する必要がありますね。

つづく。