0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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 情報取得(株価指数を大きな文字で表示) と同じように拡大表示させればよい。

完成形

youtube_counter.php
<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>

php_counter_1.png

更新間隔は http-equiv="refresh" content="20" の数字を秒数で設定すればよい。
ちなみに YouTube Data API v3 は 1日10000回までリクエスト可能(1つのチャンネルの登録者数の取得は1回分消費)のため、1つのチャンネルのカウンターのみとして使用するのであれば、数字上8.64秒に1回までは取得可能である。日界は太平洋標準時。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?