ソラマメブログ
QRコード
QRCODE
※カテゴリー別のRSSです
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
プロフィール
Hitomi Magne
Hitomi Magne
ヌーディスト件ダンサーです。Susukinoによく出没します
オーナーへメッセージ

  

Posted by at

2009年08月24日

ソラマメ風の新着表示を試しに作成




んー、とりあえずいろんなブログURLからRSSフィードを探して、それでRSS取得して、画像リンクをみつけて縦横90ピクセルで表示
ってのをPHPでやってみましたが、ちなみにこれは新着順にもなってません。とりあえずデータを抽出して表示する実験なので。

やってみて気がついたこと。
RSSフィードでは画像リンクを省いているブログがある(Wordpress.comとか)。
小さい画像は無視するようにしないと、絵文字などが拡大表示されてしまう。
ページに広告バナーとか入れられちゃうとそっちが表示される。
大量の登録サイトを横断的に更新チェックするのはかなり重い。
リンク先のリモート画像を縮小表示しているので、このページを見るだけで相手方のブログにリクエストが飛んでしまう。トラフィックを減らすためには画像をローカルにコピーして縮小保存するなどの方法が必要。GDでできたっけ。

まあ、もちろん全登録サイトを一度に取得するってのが無茶なので、たとえばトラックバックpingを受け取る仕組みを作って、pingもらったら登録サイトのリストにあるかどうか比較し、あったらそのサイトのデータを更新し、新着リストのトップに入れて、現在の新着リストの最下位を落とすというようなやり方がスマートだと思います。

GYARAN-DOUのルナさん、うきしまさんらがSLブログ新着情報サイトSL-FUNを構築中ですが、新着画像がウエブページそのものの縮小サムネールなので、ソラマメと比べて絵で内容を想像できないということもあり、上のような実験をしてみたのですが、RSSに画像が入ってないサイトはこの方法では画像を取得できないので、結局サイトイメージの縮小というのが仕方ないところかもしれません。

8/25追記
上の実験はあくまで個人的にローカルなPC上で行ったもので、サイトとして公開されているモノではありません。データ取得と表示の仕方を勉強したみたというレベルのモノで、現在の所公開予定もありません。
  


Posted by Hitomi Magne at 23:34Comments(0)スクリプト

2009年08月08日

plsファイルの変換にYahoo! Pipes

前の記事でSHOUTcastラジオチューナーを作るために必要なAPIの情報を書きましたが、最後の最後でプレイリストを取得することがLSLでは不可能で、外部サーバのCGIプログラム等を使用する必要がありました。

やっぱり外部サイトを構築したりPHPやPerlを使ってスクリプトを書くのは面倒ですし、どうもスマートではありません。ほんとはLSL内で完結できれば一番いいんですけど、それは無理なようなので、試しにYahoo! Pipesを利用してみることにしました。
Yahoo! Pipesというのは、インターネット上の情報を組み合わせたり編集して、RSS形式で配信するための環境です。何を言ってるのかわからないと思いますが、大丈夫です、私もよくわかっていません。なんというかビジュアルにパーツを組み合わせてプログラムが組めるのでなかなかおもしろいです。

.plsファイルをエディタなどで開くと以下のようになっています。

[playlist]
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にはリスナーの空きが多く、最後のURLだけフォーマットが違うのがわかります。正式な仕様はわかりませんが、上の方はリレーサーバで、一番下のが放送している人が直接使っているサーバになるようです。SHOUTcastの場合、放送URLに/7.htmlとつけて表示すると現在放送している曲名などの情報が得られるのですが、上の方のリレーサーバではこれらの情報が得られないことが多いようです。従って、放送受信のために最上位のリレーサーバを、曲名取得のために一番下のサーバを取得すると便利そうです。





これが今回作ったプレイリスト変換プログラムです。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:20Comments(0)スクリプト

2009年07月30日

SHOUTcastラジオを作るための情報

以前ラジオを作った話を書きましたが、具体的にSHOUTcastサーバからどうやって放送局を選ぶかの方法を書いていなかったのでメモ。以前参考にしたサイトの記述がちょっと古いという問題もありますので。

最近公式なラジオAPIのドキュメントを見つけました。これによると、まず
http://yp.shoutcast.com/sbin/newxml.phtml
を呼び出します。そうするとジャンル一覧がXML形式で帰ってきます。なお、
http://yp.shoutcast.com/sbin/newxml.phtml?rss=1
という風に"?rss=1"を追加して呼び出すとRSS形式で帰ってきます。処理しやすい方法を選ぶといいでしょう。
ジャンル一覧は大変大きいので、LSLでは多分受信できません。実用的には、メジャーなジャンル、自分が聞きたいジャンルをあらかじめ選択して、決めうちでスクリプトに入れてしまった方がいいです。あらかじめリストにPopとかRockとか80sとかAnimeとか入れちゃって、ダイアログで選ぶようにするわけです。それ以外のジャンルを聞きたい場合のためにサーチボタンを付ければ完璧です。

ジャンルが決まったら
http://yp.shoutcast.com/sbin/newxml.phtml?genre=Trance
みたいに、?genre=に続けてジャンルを記述して呼び出します。これも
http://yp.shoutcast.com/sbin/newxml.phtml?genre=Trance&rss=1
とすることでRSS形式の出力が得られます。なお、
http://yp.shoutcast.com/sbin/newxml.phtml?genre=Trance&limit=12
のように、&limit=の後に数字を入れると、そのジャンルの上位12局が帰ってきます。LSLでHTML受信できるのはわずか2000バイトほどですので、limitを有効に使いましょう。なお、limitで返る局の数を制御できますが、何番目から12局のように途中を飛ばすことはできなそうです。登録された局を隅から隅まで聞きたいという欲望は捨てましょうw
さて、
http://yp.shoutcast.com/sbin/newxml.phtml?search=japan
のようにすると、説明に"japan"が含まれる局が返ってきます。これを使えば検索機能が実装できます。

上記までで、ジャンルや検索結果に応じた放送局一覧が得られます。
局リストには、選局するためのベースURL、局の名前、ジャンル、ビットレート、放送形式、局idなどが含まれます。
放送形式(mt)はaudio/mp3とかaudio/aacとかですが、SLで聞けるのはmp3かoggなので、aacの局はここではねることもできるかと思います。とにかくこの情報の中で重要なのはベースURL(tunein base)と局id(id)です。
tunein baseには多分"/sbin/tunein-station.pls"と入っています。
idは12345みたいな数字の羅列です。
これを使って
http://yp.shoutcast.com/sbin/tunein-station.pls?id=12345
とすると、プレイリストが返ってきます。

前にも書きましたが、プレイリストファイルは実際にはテキストですが、インターネット上でのファイルの種別としては音声ファイルの扱いになっています。従ってLSLで受信することはできません。ここだけは外部サイトに処理を任せて、text形式に変換してもらわないといけません。

  


Posted by Hitomi Magne at 15:22Comments(0)スクリプト

2008年11月22日

ソースコードを整形して色付けてくれるツール

ええと、ここのところこのブログでLSLのコード公開してたりするのですが、ソラマメってこの辺ぜんぜんうまくできてなくて、<code>タグ使うとインデントの空白が全部見えなくなるし、<pre>タグだと枚行余計な空白がついたり(これ、改行を自動的に<br \>にする設定にしてるせいなんだけどね)、とにかく見づらくなっちゃうんですね。独自のcssでも用意しておけばいいんだろうけど、なんかいい感じのものないかなーと探したら、さぶろクリエイトさんのところで素敵なものを発見。行番号をつけた上に、シンタックスカラーリングまでやってくれるすぐれもののJavaScriptです。ついでにコードをクリップボードにコピーするリンクまでつけてくれる。

サイトにアップロードして設定ってのがめんどくさいかなーと思ってたら(どこまで横着なんだww)、追記からたどった先に、Googleにアップロードした問題のファイルのURLと使い方が載ってました。これ使ってもよさそうなので、試しに採用してみました。なかなかいい感じに表示できます。

default
{
state_entry()
{
llSay(0, "こんな感じです^^");
}
touch_start(integer num);
{
llSay(0, "いや~ん");
}
}

でもPHPのコードに対応させるには、PHP用の設定ファイルも必要だし、やっぱしいずれは自分のサーバにアップロードするかなあ。  


Posted by Hitomi Magne at 23:49Comments(0)スクリプト