先日、foo_playlist_attributeについての感想を書いたけれども、その一部仕様を切り取って、自分用にカスタマイズしたコンポーネントを作成し始めた。
- ターゲットのプレイリストを一つ選択。
- 再生が終了したトラックを削除、追加の順番で実行する
- 追加する時には、対象プレイリストから、対象トラックを一旦全削除してから追加する(重複を無くす)
- iPodのトラックも処理対象にする(foo_dopのSDKを使う)
と言った感じ。全ての動作を設定画面のチェックボックスで個別にON/OFFできるようにもしてみた。矛盾しない範囲で。
foobar2000での再生時にプレイバックインタフェースを使っての動作は動くようになった。前作のコンポーネントで最後に再生した日時を管理しているので、そのコンポーネントを併用すると、最後に再生した日時順で、最新の情報だけが対象のプレイリストに残っていく感じである。
問題はiPodでの動作である。前作の時にも悩まされたのだが、foo_dopのインタフェースでは再生結果の情報はiPod上のファイルに対してしか取得できない。別のPC(ライブラリ)と同期したものである可能性もあるし、iPod上にあるファイルと対応するものがローカルディスクから無くなっている可能性もあるからという理由の仕様であるらしい。
それはそれで、デバイス上のファイルからタグは取得できるので、情報が全く使えないわけではない。しかし、対応するローカルファイルのmetadb_handle_ptr型のオブジェクトか、ファイルパスが取得できないと、プレイリストに追加されるのはiPod上のファイルへのパスになってしまうので、意味がない。
前作のコンポーネントではその対策として、ローカルのファイルパスをデータとして登録しておき、同期時にはそれをDB検索することでファイルパスからmetadb_handle_ptrの変数を取得して処理するようにしていた。
しかし、自作の別のコンポーネントを動作条件には加えたくないので、独立して動作するようにしたい。これができたら、前作の仕様も見直せるかもしれないし。
ということで、メディアライブラリに対する検索などをいろいろ試して確認しているのであるが、なかなかうまくいかない。iPodと同期→iPodで再生→同期させてデバッガを動かすという面倒な手順になるので、連続してテストができない。プレイバックの時には再生させればそれだけテストできるので楽なのであるが、iPodは難しい。
これが解決できたら、最初のバージョンとして使えるものになるのであるが。
コメント