1. HOME
  2. ブログ
  3. UstreamのAPIをPHPで使う

UstreamのAPIをPHPで使う

インターネット生放送サービスが増えてきています。

  • Ustream
  • YouTube Live
  • ニコニコLive
  • ツイキャス

など。

 

この中で、今の段階で一番サロンが使いやすいのは、Ustreamだと思います。

気になるライブ配信としては、YouTube Liveですが、こちらはまだ一般向けに解放されたばかり。

技術の解説なども、現状では少ない状態です。

 

一方で、Ustreamであれば、動画配信の先駆けとしてさまざまなノウハウがネット上にあるし、

配信を経験したユーザーも多い事から、Ustreamを使って配信をすることが考えられるかと思います。

 

今回は、UstreamのAPIの話

今回は、Ustreamで配信をするという部分を飛ばして、APIの話をしましょう。

なので、一般ユーザー向けというよりは、WEB開発者向けとなります。

 

APIというのは、カンタンに言うと、

「Ustreamの機能を、自分のホームページでも使いたい」という人向けの機能です。

例えば、今まで配信した動画リストを一気に表示できたりします。

 

そんなAPIを使用するには、承認が必要です。

Ustreamのデベロッパーセンターにて、デベロッパー登録をします。

http://developer.ustream.tv/user/register

ここで取得したAPI keyは、後で使用します。

 

動画リストの情報を取得してみる

UstreamのAPIの使い方は以下の通りです。

※2014年7月21日現在です。今後変更になる可能性もあります。

http://api.ustream.tv/xml/user/ユーザーID/listAllVideos?page=1&limit=100?key=取得したキー

これで、そのユーザーの全ての動画リストの中から、100件分を抽出した1ページ目を取得できます。

例えば、ソフトバンクのUstreamの情報はこちらです。

http://api.ustream.tv/xml/user/3812662/listAllVideos?page=1&limit=100?key=取得したキー

つまり、3812662 が、SoftbankのユーザーIDとなります。

 

UstreamのユーザーIDは、どうやって調べるかというと、例えば1つのアーカイブ動画を見つけたとします。

その動画のURLには、レコードIDが入っています。
例えば、こちらもSoftBankの動画のアーカイブです。

http://www.ustream.tv/recorded/50140715

 

この動画の情報を調べるには、以下のURLにアクセスします。

http://api.ustream.tv/html/video/50140715/getInfo?key=取得したキー

 

ここで、ユーザーIDを確認できます。

スクリーンショット 2014-07-21 3.06.00

 

動画のリストをXML形式で出してみる

では、APIで動画リストを表示してみます。

XML形式だと、こんな感じで表示されます。

情報が、タイトルとか、概要とか、動画IDとか、整理されて一括表示が可能です。

スクリーンショット 2014-07-21 3.07.57

 

今度は、これを使ってPHPで動画リストを表示させます。

//Ustream API
$xmlStr= 先ほどのXML形式のURL

$ustXML = simplexml_load_string ("$xmlStr") or die("XMLパースエラー".$xmlStr); ;

    $items = $ustXML->array;
    function cmp($a, $b)
    {
    if ($a->array == $b->array) {
    return 0;
    }
    return ($a->array > $b->array) ? -1 : 1;
    }
    usort($items,"cmp");

foreach($ustXML->results->array as $item){
    print('<div class="ig_wrap" style="width:239px;"><div class="facebox_thumb"><a href="'.$item->url.'" target="_blank">');
    print('<div class="thumbnail_wrap"><img alt="'.$item->description .'" src="/cms/mt-static/plugins/BlocksCMS/js/lazyload/images/loading.gif"" data-original="'.$item->imageUrl->medium.'" class="lazyload hover-efc gl_thumb" width="235" /></div>');
    print('<div class="facebox_date"><time>'.$item->createdAt.'</time></div>');
    print('<h3 class="facebox_title">'.$item->title.'</h3>');
    print('</a></div></div>');
    };

例えば、こんな感じです。
諸事情により、いろいろと省略している部分もありますが、ご了承下さい(汗)

※文字が変換されてる部分は、直してください(汗

 

こうすると、ホームページにUstreamの動画リストを表示させることができます。

 

UstreamのAPI は、100件ずつしか表示できない

ネックとしては、Ustreamの動画は100件ずつしか表示できないところです。

対策としては、一旦複数のAPIを取得して、それぞれを配列に変換し、

最終的には、全てを並べ替えて表示する・・・という、ややこしい事をしなくてはいけません。

 

できるならキャッシュを使う

また、APIは利用制限があるので、キャッシュを上手に使う必要があります。

確か、Ustreamは1日に利用できる回数は5000回程だったと思います。

http://d.hatena.ne.jp/phpnovice/20100420/1271772098

 

そのため、キャッシュを利用して、ページを表示する度にAPIを消費しないようにします。

3時間程度のキャッシュにしておけば、上限を超えないのではないかと思います。

 

また、キャッシュを利用する事で表示速度も速くなります。

 

まとめ

最近、UstreamのAPIを使って、220件程の動画リストを表示するという実績を作りました。

APIを1ページずつ3回取得して、それぞれをキャッシュに入れて、

全部のXML形式ファイルから、新しいもの順に並べ替える・・・という感じです。

 

無事に稼働しており、また表示も非常に早いと好評を頂いています。

 

実は、APIの使い方がわからなくて、220件程の動画を手動で全部コピペしたのですが、

それだと今後、配信アーカイブが増えた時に、クライアントには対応できないな・・・と、反省して

APIを猛勉強しました。

 

断っておきますが、僕はプログラマーではありませんし、PHPもほとんどかけません・・・。

けれど、色々とググっていくことで、実際に上記のような対策が可能になりました。

必ず、この記事に興味を持って下さったあなたにもできるはずです。

 

自分のホームページですべてを運営するのではなく、

他人のリソースを使って便利なサイトを実現するのは、面白いです。

当然、APIの仕様変更などのリスクもありますが・・・。

 

今後も、APIの勉強をしたいなと思いました。

少しでもお役に立てたら幸いです。

 

  • このエントリーをはてなブックマークに追加
  • LINEで送る

mautic is open source marketing automation