Rimoのチャンネル追加APIについて

[RimoCh](http://rimoch.org/)では、チャンネル情報を登録する際に、RimoCh上に情報を登録すると同時に、サーバ側で[Rimo](http://rimo.tv/)にアクセスして、Rimo上でも同じソース(URL)に基づくチャンネルを作成しています。Rimoにはチャンネルを作成するAPI(?)が

RimoChでは、チャンネル情報を登録する際に、RimoCh上に情報を登録すると同時に、サーバ側でRimoにアクセスして、Rimo上でも同じソース(URL)に基づくチャンネルを作成しています。Rimoにはチャンネルを作成するAPI(?)があり、実際、Rimo上でチャンネルを作成する際に利用されているので、RimoChもそのAPIを利用してたりします。

URL http://rimo.tv/channel/xml
Method GET/POST
Parameter url(チャンネルソースとなるページのURL)
Returns XML(ソースURLに含まれるYouTubeビデオ一覧)

urlパラメタにチャンネルのソースとなるページのURLをわたしてアクセスすると、チャンネルがまだRimo上に存在しない場合は新たに作成します。また、チャンネルが既に存在しても、存在しなくても、ソースのURLに含まれるビデオの一覧を含むXMLを返します。つまり、チャンネル作成のみならず、あるURLに含まれるYouTubeのビデオ情報一覧を返却してくれるものでもあります。 サンプル: http://rimo.tv/channel/xml?url=http://b.hatena.ne.jp/video

<videos title="はてなブックマーク - 注目の動画">
<video title="外山恒一の憂鬱" youtube_id="4oXDIHw-xQo" thumbnail_url="http://sjl-static10.sjl.youtube.com/vi/4oXDIHw-xQo/2.jpg" length_seconds="26" video_id="28301"/>
<video title="川澄綾子 おなら体操" youtube_id="xFlfemYA0TM" thumbnail_url="http://img.youtube.com/vi/xFlfemYA0TM/2.jpg" length_seconds="31" video_id="27289"/>
<video title="鴨志田穣" youtube_id="KvV0lxem9mY" thumbnail_url="http://sjc-static13.sjc.youtube.com/vi/KvV0lxem9mY/2.jpg" length_seconds="365" video_id="28302"/>
...
</videos>

RimoChでは、下記の通り、ざっくりとモジュールを作って、チャンネル作成をしてたりします。

package WebService::Rimo::Channel;
use strict;
use warnings;
use Carp;
use XML::Simple;
use LWP::UserAgent;
use base qw(Class::Accessor::Fast);
our $VERSION = '0.02';
__PACKAGE__->mk_accessors(qw(videos ua));
sub new {
my $class = shift;
bless {
ua => LWP::UserAgent->new(agent => __PACKAGE__."/$VERSION"),
}, $class;
}
sub create {
my ($self, $source_url) = @_;
my $res = $self->ua->get("http://rimo.tv/channel/xml?url=$source_url");
croak sprintf "%d: %s", $res->code, $res->message
if $res->is_error;
my $xml = XMLin($res->content, ForceArray => 1);
croak "No video found in $source_url"
unless $xml->{video};
$self->videos($xml->{video});
}
1;