foobar2000の自作コンポーネント、雛形が完成した。
前回のエントリからの修正は、foo_dopのSDKのオブジェクト登録がなかったため呼び出されなかったのを追加したのと、foo_dopから来る「再生日時」が「NTFSファイル日付(UTC)」で渡ってくるので、タイムゾーンを考慮して返還しなければいけなかった点を修正した程度である。
αバージョンとでも言うべきか、最低限の機能が完成した。リアルタイムで再生したもの、foobar2000でfoo_dopと同期してiPodで再生したものを自宅サーバへ送信することができた。
動かしてわかったのは、foo_dopからの再生履歴は、再生順に一括で渡ってくるわけではなく、順番ばらばらで、しかもまとまってではなく何回にも別れて渡ってくる、ということだ。再生順と関係なく、バラバラの順番で再生履歴が自宅サーバに送られていた。foobar2000に送信日時を秒単位で表示できるようにしているのですぐわかる。が、集計したり、表示したりは、「再生日時でソート」してしまうから、送信順序は関係ない。ただ、何度も呼ばれるので、iPodとの同期中に「応答なし」になるのが気になるところだ。
残りは設定画面を作ってアカウントを設定できるようにするところと(今はソースに直接書いているので、テストアカウントから本番アカウントに切り替えるときにコンパイルしないといけない)、レートの設定をできるように機能追加するところだ。
画面はフリーソフトでリソースを扱えるようにするところを見つけたし、今日、foobar2000のコンポーネントでコンテクストメニュー(右クリックメニュー)の出し方・使い方を見つけたのでそれを試せばレートの設定もできそうだ。それは移行してからでも機能追加できる。
まずやらないといけないのは、iTunesメインマシンにした新しいFusionマシンにRuby環境がないので、iTunesライブラリからコンポーネント用のSQLiteデータベースのエクスポートができないのでその環境を作らなければいけないこと。
それから、iTunes Storeを今後も利用する関係から、CDのインポートはfoobar2000を使わずにiTunesを使ってALACにエンコードすることに決めているのだが、その新規トラックの分のSQLiteデータベースをどのように作成、メンテナンスしていくかという運用面の決め事だ。コンポーネントで対応してもいいのだが、iTunesに戻せなくなる。今は、iTunesからのエクスポートを基準に考えているから、Persistent IDをキーにできるので、foobar2000からiTunesへレートや再生履歴を書き戻すスクリプトも書けるのだが、コンポーネントで新規レコードを作るとなると、これを無視するか(主キーにはしていないのでNULLも化)、COMを使うか、どちらかになる。
配布しない運用に決めてしまえば、iTunesでインポート→スクリプト実行(新規レコードだけ作成)→foobar2000のコンポーネントで使用が一番すっきりなのだが。
COMでやるとしても、Persistent ID以外から、iTunesのトラックを一意に決めて取得するのは難しい。し、.NET以外でCOMをやったことがない。スクリプトで逃げておいて、COMを実装するのが一番か。
とりあえず、Ruby環境を作ろう。
コメント