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 件のコメント:
コメントを投稿