xmms-scrobbler安定化・MP3文字化け解消パッチ

概要

XMMSBMPでAudioscrobblerに参加するにはプラグインとして xmms-scrobblerを導入する必要があったりしますが これがどうにも不安定な上に日本語環境で問題多発だったので手を入れてみました.

サーバと通信する部分と再生時間を管理する部分をかなり書き直しています. なので,もしかしたら新たに大きなバグが発生しているかもしれません. 自分でも使ってますが,テストが十分ではないので・・・.

2006.02.10 追記
xmms-scrobbler-0.3.7-nsk-20050218をAudaciousに対応させたのを置いてみました. 本家の方追いかけてないので最新の状況は良く知らんのですが,0.3.8には一部 このパッチが取り込まれてるはずなんでもしかしたらまったく需要無いかもしれませんが.

2006.07.26 追記
Last.fmが国内でサービス開始ってことで微妙に捕捉されてるみたいですね・・・

あれこれ不具合ありで,普通の環境だと全然ちゃんと入らないっぽかったんでAudacious用のはリンク削除しました. Audacious使う人は付属のプラグインをお使い下さい.ソースみたらちゃんと自分の書いたコードが入ってました.

効能

  • バグ取り
    • サーバ不調時に,途中から全く接続できなくなる問題を解決
      • 接続やリトライの方法を結構見直し
    • サーバの状況によってはmutexがロックされっぱなしになる(かもしれない)問題を解決
    • サーバ混雑時にXMMSを終了させようとすると,散々待たされた挙げ句セグる問題を解決
      • サーバからの返事を待たずにすぐ終わらせる
    • 長い文字数のOgg Vorbisタグを処理しようとするとセグる問題を解決
    • 長いタグが途中で欠けたり,サーバに受け付けられなくなってしまったりする問題を解決
    • 曲の変更が正しく検出されなかったり,再生開始早々submitされてしまう問題を(多分)解決
    • MP3のジャンルコードが148以上の場合にセグる問題を解決
  • 文字化け解消
    • MP3のID3タグの文字コードを指定可能
      • 設定ダイアログで複数の文字コードを複数指定可能です(前から順にデコードできるまで頑張る)
      • WindowsでSJISでタグを付けたMP3ファイルでも問題なくデータを登録できます

動作環境とか

XMMS-1.2.10およびBMP-0.9.7で動くことを確認しています. XMMSはもう少し古くても多分大丈夫だと思います. のすけは主にSianさんのXMMS-1.2.10j_20040415で動作を確認しています.

2006.02.10 追記
Audaciousは0.2にyazさんのパッチ当てたやつで動作を確認してます. 細かいことはBMPとまったく同じになります.

XMMSで利用する場合,MP3のタグの文字コードの変換はプラグイン内で直接iconvを呼び出して行います. なので,文字化けを回避するにはlibiconvがインストールされている必要があります (最近のLinuxならまず間違いなく入っていると思いますが). もしかしたら,機種依存文字を表示するにあたり,iconvにCP932パッチが当たっている必要があるかもしれません. これの有無による違いは未チェックです.

BMPで利用する場合,MP3ファイルのタグはglib2の関数を使ってUTF-8に変換されます. そのため新たに必要なライブラリはありません.

MP3とOgg Vorbis以外は,一度も試してみたことが無いです(ファイルを持ってないんで).

入手

ちゃんと動かなかったらごめんなさい.

  • パッチ適用済みのソース一式 xmms-scrobbler-0.3.7-nsk-20050218.tar.bz2 (xmms-scrobbler-0.3.7ベース) [2005-02-18]
  • xmms-scrobbler-audacious-0.3.7-nsk-20060210.tar.bz2 (xmms-scrobbler-0.3.7ベース/上のをAudaciousに対応させただけ) [2006-02-10]
    • Audacious付属のでおk

インストール

  • パッチ適用済みのソースからインストール
tar jxvf xmms-scrobbler-0.3.7-nsk-20050218.tar.bz2
cd xmms-scrobbler-0.3.7-nsk-20050218

./configure
  デバッグを有効にしたければ --enable-debugをつける

make

su
make install
  • 自分でパッチを適用してインストール
tar jxvf xmms-scrobbler-0.3.7.tar.bz2
cd xmms-scrobbler-0.3.7

patch -p1 < ../xmms-scrobbler-0.3.7-nsk-20050218.patch

aclocal
libtoolize --force --copy
autoheader
automake --add-missing --foreign --copy
autoconf

./configure
  デバッグを有効にしたければ --enable-debugをつける

make

su
make install

使い方(機能追加部分のみ)

XMMSやBMPでプラグインの設定ダイアログが以下のようにちょびっとだけ変わります.

設定ダイアログ

一番下にある「MP3 Tag Code」の欄にMP3のタグで使っている文字コードを入力します.BMPのMP3のタグ設定と同様にスペースやカンマ等で区切って複数を並べることができます.複数並べた場合,左から順番に 入力文字コードとして利用されます.

例えば,上記例では「CP932,SJIS,EUC-JP」とあるので,プラグインはまずMP3ファイル中のタグがCP932で書かれているものとみなしてUTF-8への変換処理を行います.

変換に成功すれば変換処理は終了し,結果がサーバに送られることになります. 変換に失敗したら,次はMP3ファイル中のタグをSJISとみなして再度UTF-8への変換に挑戦します. それでもだめなら今度はタグをEUC-JPとみなしてUTF-8へ変換しようとします.

どうにも変換できない場合のみ,変換を行わない状態でデータがサーバに送られます.その場合,当然 サーバ側には文字化けしたデータが登録されることになります.

なお,「MP3 Tag Code」の設定は,xmms等を再起動しなくても,「OK」を押した段階で次回のsubmitから 有効になります.

また,パスワード入力部分は,空欄の場合既存のものを上書きしないようになっているので, 「MP3 Tag Code」を設定する度にパスワードを入力する必要はありません.

既知の問題

xmms-crossfadeプラグインを併用する場合,一時停止の検出 等を取りこぼす可能性があります.

もしかしたら後でやってみるかもしれない何か

  • テストモードの追加
    • サーバにデータは送らず,$HOME/.xmms/scrobblerqueue.txtや$HOME/.bmp/scrobblerqueue.txtに 曲情報をため込むだけモードみたいな感じ
    • ちなみにscrobblerqueue.txtの中身は以下のような感じで確認したりできる
      for i in `cat ~/.bmp/scrobblerqueue.txt`; do
       printf "`echo \"$i\" | sed -e 's/%/\\\\x/g'`\n"
      done | iconv -f UTF-8 -t EUC-JP
  • プレイヤーの再起動無しでパスワードとかを反映できるようにするとか
  • Proxy対応
    • curl_easy_setopt使えば簡単にできそう?
    • 設定ダイアログ付けるのがめんどくさい

参考

コメント


(maintainer only: )

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2006-07-27 (木) 03:30:42 (4103d)