2009年08月08日
plsファイルの変換にYahoo! Pipes
前の記事でSHOUTcastラジオチューナーを作るために必要なAPIの情報を書きましたが、最後の最後でプレイリストを取得することがLSLでは不可能で、外部サーバのCGIプログラム等を使用する必要がありました。
やっぱり外部サイトを構築したりPHPやPerlを使ってスクリプトを書くのは面倒ですし、どうもスマートではありません。ほんとはLSL内で完結できれば一番いいんですけど、それは無理なようなので、試しにYahoo! Pipesを利用してみることにしました。
Yahoo! Pipesというのは、インターネット上の情報を組み合わせたり編集して、RSS形式で配信するための環境です。何を言ってるのかわからないと思いますが、大丈夫です、私もよくわかっていません。なんというかビジュアルにパーツを組み合わせてプログラムが組めるのでなかなかおもしろいです。
.plsファイルをエディタなどで開くと以下のようになっています。

これが今回作ったプレイリスト変換プログラムです。URLを受け取って、CVS形式と仮定して読み込み、音楽のURLを抽出します。プレイリストにいくつもならんでいるサーバURLのうち、最初と最後を取り出して返すようにしています。サーバURLを全部取り出すとLSLで受信不可能なサイズになる恐れがあるので、このあたりがちょうどいいと思います。
なぜFetch CVSでplsファイルを読み込むかというと、他の方法ではうまく読み込めなかったからです><
Fetch Pageだとrobots.txtに拒否られたとエラーが出るし。もともとCSVじゃないので少々工夫がいりますが、まあこれでなんとかURLは取得できるのでいいでしょう。
このようなパイプを作成して、
http://pipes.yahoo.com/pipes/pipe.run?_id=[パイプid]&_render=csv&url=[URL]
というような感じでURLデータを渡してやれば、結果がCSV形式で返ってくるので、あとはLSLで加工してMusic URLに設定したり、定期的に曲情報を取得したりできるでしょう。
やっぱり外部サイトを構築したりPHPやPerlを使ってスクリプトを書くのは面倒ですし、どうもスマートではありません。ほんとはLSL内で完結できれば一番いいんですけど、それは無理なようなので、試しにYahoo! Pipesを利用してみることにしました。
Yahoo! Pipesというのは、インターネット上の情報を組み合わせたり編集して、RSS形式で配信するための環境です。何を言ってるのかわからないと思いますが、大丈夫です、私もよくわかっていません。なんというかビジュアルにパーツを組み合わせてプログラムが組めるのでなかなかおもしろいです。
.plsファイルをエディタなどで開くと以下のようになっています。
[playlist]この局の場合上位のURLにはリスナーの空きが多く、最後のURLだけフォーマットが違うのがわかります。正式な仕様はわかりませんが、上の方はリレーサーバで、一番下のが放送している人が直接使っているサーバになるようです。SHOUTcastの場合、放送URLに/7.htmlとつけて表示すると現在放送している曲名などの情報が得られるのですが、上の方のリレーサーバではこれらの情報が得られないことが多いようです。従って、放送受信のために最上位のリレーサーバを、曲名取得のために一番下のサーバを取得すると便利そうです。
numberofentries=21
File1=http://scfire-mtc-aa03.stream.aol.com:80/stream/1065
Title1=(#1 - 46/500) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length1=-1
File2=http://scfire-mtc-aa04.stream.aol.com:80/stream/1065
Title2=(#2 - 48/500) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length2=-1
<中略>
File20=http://scfire-mtc-aa02.stream.aol.com:80/stream/1065
Title20=(#20 - 426/500) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length20=-1
File21=http://205.188.xxx.xxx:8004
Title21=(#21 - 20/20) Vocal Trance - D I G I T A L L Y - I M P O R T E D - a fusion of trance, dance, and chilling vocals
Length21=-1
Version=2

これが今回作ったプレイリスト変換プログラムです。URLを受け取って、CVS形式と仮定して読み込み、音楽のURLを抽出します。プレイリストにいくつもならんでいるサーバURLのうち、最初と最後を取り出して返すようにしています。サーバURLを全部取り出すとLSLで受信不可能なサイズになる恐れがあるので、このあたりがちょうどいいと思います。
なぜFetch CVSでplsファイルを読み込むかというと、他の方法ではうまく読み込めなかったからです><
Fetch Pageだとrobots.txtに拒否られたとエラーが出るし。もともとCSVじゃないので少々工夫がいりますが、まあこれでなんとかURLは取得できるのでいいでしょう。
このようなパイプを作成して、
http://pipes.yahoo.com/pipes/pipe.run?_id=[パイプid]&_render=csv&url=[URL]
というような感じでURLデータを渡してやれば、結果がCSV形式で返ってくるので、あとはLSLで加工してMusic URLに設定したり、定期的に曲情報を取得したりできるでしょう。
Posted by Hitomi Magne at 18:20│Comments(0)
│スクリプト