Hatena::Groupsubtech

NaN days

ブログを移転しています。最新の記事は motemen.hatenablog.com へどうぞ

2010-12-08

WebService::8tracks というのを書きました & httpcat.pl で連続再生

| 02:01 | WebService::8tracks というのを書きました & httpcat.pl で連続再生  - NaN days を含むブックマーク はてなブックマーク - WebService::8tracks というのを書きました & httpcat.pl で連続再生  - NaN days

https://github.com/motemen/WebService-8tracks にあります。基本的に API を愚直に叩いているだけですが、8tracks は音楽の再生をミックス単位で管理しているのが特徴的です。

my $api = WebService::8tracks->new; # 認証しない場合、API Key 的なものは不要
my $session = $api->create_session($mix_id);

while (1) {
    my $res = $session->next;
    last if $res->{set}->{at_end};

    my $media_url = $res->{set}->{track}->{url};
    ...
}

という感じで一連のミックスを再生できます。

で、せっかくなのでサンプルスクリプト eg/stream.pl を同梱しています。これは ffmpeg を使ってミックスを連続して mp3 に変換したものを標準出力に書きこむスクリプトなんですが、もちろん音楽をコンソールに出力されても意味がなくて手元のプレーヤーで聴きたいので、補助スクリプトになるものを別に書いています。httpcat.pl ってのがそれです。(他にも使い道がありそうなので別にしてます) 同様のものがすでにありそうなのであまり真面目に書いていないんですが、標準入力で受けた内容を HTTP で流してくれるスクリプトになっています。これを使って

% perl eg/stream.pl youpy/follow-me | httpcat.pl --content-type audio/mp3 --port 12345

とすれば、iTunes などに http://host:12345/ を指定してやることで連続で聞きっぱなしにできます。ただサンプルスクリプトは何も考えずに書きこみ続けるので、httpcat.pl がメモリをわりと食います。

テストを適当に揃えたら CPAN にあげたいとおもってます。

先ほど shipit しました。

TrinityTrinity2011/07/02 17:11Your story was really informative, tahnks!

btnukanszbtnukansz2011/07/03 22:40LQgMx8 , [url=http://julnigrqwcyd.com/]julnigrqwcyd[/url], [link=http://yhdyrdjotsfg.com/]yhdyrdjotsfg[/link], http://xkznhdfeokjr.com/