ユニの生配信Wiki UNISTREAM - Perl
Perl勉強配信
ここでは、2010/02/26に生配信したPerlの勉強配信の細かい内容について書いていきます。
詳細
ユニ謹製
マルチストリーム
に、更新チェック機能をつけようとして、レンタルサーバで普及しているPerl(CGI)を使って実装しようとします。
おおまかな作業の流れ
配信用のレンタルwikiを作ります
簡単なPerl初歩の初歩をおさらい
作る流れを表にまとめます
Perlコードを書いていきます。
PCでテストして、Justinの配信チェック
ユニのPerl度は?
ゼロからです。
「一週間でマスターするCGI for Windows 福島靖浩 著」
ISDN 978-48399904302
JavaScriptをちょっとだけ、ActionScriptはちょっと。
C言語はほんのちょっとだけ。
勉強の流れ
Windows7 に Active Perlをインストールして
Perl Editor(メモ帳)っていうソフトを使ってコーディングしていきます。
↓
コマンドプロンプトにPerlのパスを通して
動作のチェックをします。
↓
上手く動いたら PerlをCGI仕様に書き換えます
ローカルのApache上で動かして動作を確認します
↓
Sitemixっていう無料レンタルサーバがCGIを使えるので
そこにアップして動作確認します。
↓
上手く情報が取得できたら。Javascriptから
保存したファイルを読み取ってHPに反映させます。
配信チェック機能の概要
Justin/Ustreamの登録チャンネルリストを
APIを使って、「配信中かどうか」を調べます。
その情報を status.dat に保存します。
マルチストリームのHPから
status.dat をJavascriptで読み取って
「現在配信中のチャンネル一覧」を表示します。
必要な機能
定期的に実行する仕組み→アクセス時にチェックする仕組み
JustinのAPIから配信中を知らせる部分
Webのデータを読み取る仕組み
文字データを整形する仕組み
ファイルを保存・追加書き込みする仕組み
※日本語は全く使いません。
Perlのおさらい
変数は$ 配列は@ 連想配列は%から始まる
print "文字列","文字列";で出力できる。
プログラムの行の最後には;
if elsif else for の使い方は普通と同じ
""の中の変数は解釈される。 ''の中は絶対にそのまま。
foreach(配列) で、配列の中の要素を$_に代入して全要素でループできる。
JustinAPIの仕様
http://api.justin.tv/api/stream/list.xml?channel=
アカウント名,アカウント名,アカウント名…
にアクセスして、帰ってきたXMLの中に
配信してない時は<results></results>になる。
”<channel_url>
http://www.justin.tv/
アカウント</channel_url>”という文字列があれば配信中なので
完全一致検索< で もし一個以上見つかれば=配信中
見つからなければ = 配信してない
と判断すればいい
プログラムのフローチャート
HP:マルチストリームを開く
↓
CGI:もし前回のデータ保存時から一定時間経っていれば発動する
↓
CGI:JustinのXMLデータを取得する→データを保存する
↓
CGI:XMLのデータから、配信中のチャンネルを抽出して保存。
(一つの配信chを調べる→配信中なら1、次〜みたいな)
↓
AJAX: ボタンを押したらdatファイルを読み取って配信中リストを表示させる
Justinのライブ情報のDAT
http://uniangel.info/cgi-bin/stream.dat
その後色々あって完成しました。今は主に自分用の配信チェックページとして稼働中です。
ユニ作 マルチストリーム