Trickster 2.0 の開発をスタートしました。まずは環境をということで、Subversion レポジトリ をつくり Trac をインストールしておきました。Mailing List も立ち上がっています。
初日の今日はとりあえずライブラリまわりの整理とプロトタイプになるツールをいくつかつくってみました。David が Rendezvous の Discovery/Publish と DAAP Client の PoCo 化 (Wheel::Run で fork して non-blocking) をしてくれたので、iTunes の DAAP proxy をつくってみました(samples/daap-mirror-proxy.pl)。起動すると、
1. Rendezvous (bonjour) で DAAP (iTunes share) を検索
2. それぞれに DAAP で接続して曲リストを取得してマージ
3. DAAP Server として立ち上がり、Rendezvous で Publish (Advertise)
4. 曲へのダウンロード(ストリーム)リクエストはそのままプロキシして答える
という流れです。
同一 LAN にある iTunes シェアにある曲すべてがマージされて1個のノードとして見えます。インクリメンタルサーチやブラウズを全体に対してできるのでそれだけで価値があるかもしれません。現在は DAAP Client のダウンロードが non-blocking ではないので再生するまでに数秒のタイムラグがあったりします。↑の例では coLinux から起動して自分の windows のミラーを見ている状態です(LAN などでつなぐ場合 coLinux は NAT モードではなくブリッジにすることが望ましい。そうでないと colinux からは自分の Win32 しか見えなくてつまらないです)。
現在は Net::Rendezvous::Publish::Backend のどれか (Howl または Apple Bonjour SDK) が必要ですが Pure POE で Rendezvous Publisher をつくる計画もあります。
初日はこんなところ。つづいて AirTunes にデータを投げ込むツールを作ってみようかと思っています。その次に Web Inteface とメディアサーバかな。
RNSplicerというヤツもありますよ
http://www.jaist.ac.jp/~t-mizuka/rns/