2008年3月1日土曜日

動画共有サイトOnAirの サムネイル取得API用 PHPクラス

動画共有サイトOnAirサムネイル取得APIのPHPラッパー "Services_OnAir" を作ってみた。
PEAR形式で公開できるといいんだけど、とりあえずソースの掲載だけ。
(Bloggerの都合でインデントは全角スペースにしてある。)

<?php
class Services_OnAir {
 public $apiUrl;
 public $title;
 public $videoUrl;
 public $thumbnailUrl;
 
 /**
  * APIに情報を送信してデータを取得する
  */
 public function sendAndLoad($videoNo, $time, $comment = "") {
  $this->apiUrl = 'http://nowonair.tv/api/thumbnail.page?';
  $this->apiUrl .= "videoNo=$videoNo&time=$time&comment=" . urlencode($comment);
  
  $str = mb_convert_encoding(file_get_contents($this->apiUrl), 'UTF-8', 'SJIS');
  $arr = explode("n", $str, 2);
  $xml = simplexml_load_string('<?xml version="1.0" encoding="UTF-8" ?>' . $arr[1]);

  if ($xml->success) {
   $title = mb_convert_encoding($xml->video->title, mb_internal_encoding(), 'UTF-8');
   $this->title = html_entity_decode($title, ENT_QUOTES);
   $this->videoUrl = $xml->video->url;
   $this->thumbnailUrl = $xml->thumbnail->url;
  }
  
  return $xml->success;
 }
 
 /**
  * htmlエスケープしたタイトルを取得する
  */
 public function getTitle() {
  return htmlspecialchars($this->title, ENT_QUOTES);
 }
 
 /**
  * サムネイルのimgタグを取得する
  */
 public function getImageTag() {
  return '<img src="' . $this->thumbnailUrl . '" alt="' . $this->getTitle() . '" />';
 }
 
 /**
  * サムネイルの付きのリンクを取得する
  */
 public function getImageLink() {
  return '<a href="' . $this->videoUrl . '">' . $this->getImageTag() . $this->getTitle() . '</a>';
 }
}

使用例は下記のような感じで。
<?php
require('Services/OnAir.php');

$onair = new Services_OnAir();
if ($onair->sendAndLoad(100, 10, 'テスト')) {
 echo $onair->getImageLink();
} else {
 echo 'faild';
}

0 件のコメント:

コメントを投稿