PSPのファームウェアが2.60になって、RSSチャンネルという機能が付いた。簡単に言うとpodcastが購読(読むじゃねーな…)できるようになったんだけど、それをちょっとハックしてみた。 とりあえずRSSを取りに来るユーザエージェントは、「PSPRssChannel-agent/1.0.0 libhttp/1.0.0」となっています。libhttpを使ってるんですね。ふんふん。 次にプロトコル的にどんな感じで取りに来るのかを見てみた。最初は普通にフィードをGETで取りにきくる。次にそのフィードの各itemのenclosureにあるものをリスティングしてくれます(ちなみにenclosureに拡張子がMP4とかを指定したのですが、大文字の拡張子は認識しませんでした(リスティングされず))。 そしてリスティングされた中から聞きたい曲を選ぶと、その曲のURLにHEADのリクエストがきます。そのリクエストは下記になります。
127.0.0.1 - - [05/Dec/2005:02:37:46 +0900] "HEAD /path/to/music.mp3 HTTP/1.1" 200 0 "http://clouder.jp/foo/bar/index.xml" "PSPRssChannel-agent/1.0.0 libhttp/1.0.0"
そして、その後GETで下記のようなリクエストが1秒に2、3リクエストな感じで曲が終わるまでき続けます。
127.0.0.1 - - [05/Dec/2005:02:37:47 +0900] "GET /path/to/music.mp3 HTTP/1.1" 206 62547 "http://clouder.jp/foo/bar/index.xml" "PSPRssChannel-agent/1.0.0 libhttp/1.0.0"
レスポンスが206なので、206 Partial ContentつまりレジュームでRangeを指定して取りにきているみたいですが、大量のリクエストが来るので、DOS攻撃と間違われそうな…。 プロトコル的にはこのような感じになっているようです。このRSSチャンネルの機能は、ファイルに落さずに曲が聞ける→つまりストリーミングみたいな感じになっていますので、ネットにさえつながっていればメモリスティックを必要としないでpodcastで配信されている曲を聞くことができます。大容量のメモリスティックを持ってない自分にはこの点はいいかもです。 なので、このenclosureでストリーミングのURLを指定しておけば、ジュークボックス的にサーバの曲を流し放題できるのではなんて思いました。でもなんか拡張子とか厳密(?)に見ているようなので、プログラムをmp3とかいう拡張子にする必要があるかも(未確認です)。 ところでvideoはどうなんだろう?と思ってenclosureにmp4のファイルを指定(typeはvideo/mp4)してみたのですが、携帯動画変換君を使ってPSPで再生できる形式にしたものでも再生はできませんでした(同じ動画をメモリスティックに入れたら再生できました)。ちなみにiPod用に変換したものでもだめでした。そもそもできないっぽいです…。 とりあえずTrickstart2.0の開発も始まったみたいですし、それも含めて今後に期待といったところでしょうか。