QSL4A でのリアルタイム取得に失敗したので
QPython で GUI プログラミング2(YouTube チャンネル登録者数カウンターを作る:未完) が失敗に終わったので、今度は PHP を使って YouTube チャンネル登録者数カウンターを作ることにした。
Composer のインストール
YouTube API の PHP モジュールを使う場合、 Composer を使う必要があるようだ。
Termux には Composer が無いのでインストールする。
The program composer is not installed. Install it by executing:
pkg install composer
とエラーメッセージが出るけど、どう考えても罠っぽい(composerと名の付くパッケージは別物だろう)ので調べると以下のサイトでインストール方法が解説されていた。
YouTube チャンネル登録者数を取得する
あとはこのあたりを参考にすればよさそうである。
そもそも Composer を使わない方法もあった。こちらでもいい?
下の方法だと、 $response["items"]["0"]["statistics"]["subscriberCount"]
にチャンネル登録者数が入るので、あとは PHP を雑に書いて Web 情報取得(株価指数を大きな文字で表示) と同じように拡大表示させればよい。
完成形
<html>
<head>
<meta http-equiv="refresh" content="20">
<style type="text/css">
.header {
font-size: 50px;
text-align: right;
line-height: 2em;
}
.subcount {
font-size: 250px;
font-weight: bold;
text-align: center;
line-height: 1.8em;
}
</style>
</head>
<?php
define('YOUTUBE_API_KEY', '((APIキー))');
function json_get($url, $query = array(), $assoc = false) {
if ($query) $url .= ('?' . http_build_query($query, '', '&', PHP_QUERY_RFC3986));
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url); // URL
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 10);
$responseString = curl_exec($curl);
curl_close($curl);
return ($responseString !== false) ? json_decode($responseString, $assoc) : false;
}
$response = json_get('https://www.googleapis.com/youtube/v3/channels', array(
'key' => YOUTUBE_API_KEY,
'id' => '((チャンネルID))',
'part' => 'statistics',
), true);
echo '<div class="header">';
date_default_timezone_set('Asia/Tokyo');
echo date("Y/m/d H:i:s");
echo "<br></div>";
echo '<div class="subcount">';
echo $response["items"]["0"]["statistics"]["subscriberCount"];
echo "<br></div>";
?>
</html>
更新間隔は http-equiv="refresh" content="20"
の数字を秒数で設定すればよい。
ちなみに YouTube Data API v3 は 1日10000回までリクエスト可能(1つのチャンネルの登録者数の取得は1回分消費)のため、1つのチャンネルのカウンターのみとして使用するのであれば、数字上8.64秒に1回までは取得可能である。日界は太平洋標準時。