こんにちは、JitanTechです!
YouTubeチャンネルの成長をリアルタイムで追跡したいと思ったことはありませんか?今回は、レンタルサーバー上でプログラムを定期実行させて、指定したYouTubeチャンネルの登録者数、動画数、視聴回数を自動収集する方法をご紹介します。これで、あなたの好きなYouTubeチャンネルの成長を見逃すことはありません!
システムの全体像
まずは、今回作成する定期実行プログラムの全体像を見てみましょう。PHPファイルをCron(Linuxのタスクスケジューラー)で自動実行し、YouTubeチャンネルの情報をMySQLデータベースに登録します。
データベースの作成
最初に、サーバーにデータベースを準備します。今回は「ワンピース考察者」の情報を収集するため、データベース「サーバーID_onepiece」を作成します。
Xserver管理画面から「データベース」⇒「MySQL設定」をクリック。
次に「MySQL追加」をクリックします。
作成したいMySQLデータベース名を任意の値で入力します。今回は「onepiece」と入力します。
「追加する」をクリックします。
これでデータベースの作成は以上です。
テーブルの作成
次に、phpMyAdminを使ってデータベースにテーブルを作成します。
Xserverの管理画面からphpmyadmin(MariaDB)を選択します。
先ほど作成したデータベースが表示されています。このデータベースにテーブルを作成していきます。
データベースのパネルを展開して「新規作成」をクリックします。
テーブル名と列名、列のタイプ等を入力します。入力が完了したら「保存する」をクリックします。
これでテーブルの作成は以上です。
テーブルの構成
今回作成したテーブルは以下の2つです。
- subscriberテーブル: 取得したチャンネル情報を格納します。
- target_youtuberテーブル: 情報を取得するチャンネルIDを格納します。
subscriberテーブル・・・取得したチャンネル情報を格納
列名 | データ型 | 説明 |
---|---|---|
id | VARCHAR(255) | チャンネルID |
title | VARCHAR(255) | チャンネル名 |
add_date | DATETIME | データ取得日時 |
subscriber_count | INT | 登録者数 |
video_count | INT | 動画数 |
view_count | INT | 視聴回数 |
target_youtuberテーブル・・・情報を取得するチャンネルIDを格納
列名 | データ型 | 説明 |
---|---|---|
id | VARCHAR(255) | チャンネルID |
author | VARCHAR(255) | チャンネル名 |
このテーブルの値は事前に設定しておきます。
実行プログラム
以下は、YouTube APIを使ってチャンネル情報を取得し、データベースに登録するPHPプログラムです。
register_subscriber.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
<?php // GoogleAPIライブラリを読み込む require_once (dirname(__FILE__) . '/vendor/autoload.php'); // 先ほど取得したAPIキーを定数にセットする const API_KEY = "ここに自身のAPIキー"; // ターゲットのチャンネルををDBに登録する function registerChannelInfo() { // DB接続情報 require_once (dirname(__FILE__) . '/db_access.php'); // DBへ接続 try{ $dbh = new PDO($dsn, $user, $password); // クエリの実行 $query = "SELECT * FROM target_youtuber WHERE id <> ''"; $stmt = $dbh->query($query); // 登録処理 while($row = $stmt->fetch(PDO::FETCH_ASSOC)){ $id = $row["id"]; // チャンネル情報を取得 list($title, $subscriberCount, $videoCount, $viewCount) = searchVideos($id); // クエリの実行 $query = "INSERT INTO"; $query.= " subscriber(id, title, add_date, subscriber_count, video_count, view_count)"; $query.= " VALUES('$id', '$title', now(), $subscriberCount, $videoCount, $viewCount)"; $stmt2 = $dbh->query($query); } }catch(PDOException $e){ print("データベースの接続に失敗しました".$e->getMessage()); die(); } } // 認証を行う function getClient() { $client = new Google_Client(); $client->setApplicationName("youtube-api-test"); $client->setDeveloperKey(API_KEY); return $client; } // チャンネルの情報を取得する. function searchVideos($id) { $youtube = new Google_Service_YouTube(getClient()); $params['id'] = $id; // チャンネル情報の取得 $searchResponse = $youtube->channels->listChannels('snippet,statistics', $params); $title = ""; $subscriberCount = ""; $videoCount = ""; $viewCount = ""; foreach ($searchResponse['items'] as $search_result) { $title = $search_result['snippet']['title']; $subscriberCount = $search_result['statistics']['subscriberCount']; $videoCount = $search_result['statistics']['videoCount']; $viewCount = $search_result['statistics']['viewCount']; } return [$title, $subscriberCount, $videoCount, $viewCount]; } registerChannelInfo(); ?> |
db_access.php
1 2 3 4 5 |
<?php $dsn = 'mysql:dbname=サーバーID_onepiece;host=localhost'; $user = 'ユーザ'; $password = 'パスワード'; ?> |
これらのファイルをサーバーに置きます。
実行結果の確認
ではこちらのプログラムを実行してみましょう!
実行前
実行後
データがテーブルに登録されました!
定期実行(Cron)の設定
最後に、プログラムを定期実行するためのCron設定を行います。
- エックスサーバーの管理画面から「Cron設定」をクリック。
- 「Cron設定追加」をクリックし、実行時間やコマンドを入力。
例: 毎日23:00に実行する設定
「Cron設定追加」をクリックし、赤枠の部分を入力します。
コマンドの説明
/usr/bin/php8.1-cgi /home/サーバーID/jitantech.com/public_html/youtube-project/register_subscriber.php
/usr/bin/php8.1-cgiとPHPファイルのパスとの間には「半角スペース」を入れてください。
/usr/bin/php8.1-cgiの数字はお使いのサーバーにインストールされているPHPのバージョンです。
PHPバージョンの確認
Cron設定を行う前に、サーバーにインストールされているPHPのバージョンを確認します。
- エックスサーバー管理画面の「PHP Ver切替」をクリック。
- ドメインの右の「選択する」をクリック。
- 表示されるバージョンを確認します。
エックスサーバー管理画面の「PHP Ver切替」をクリック。
ドメインの右の「選択する」をクリックします。
表示されるバージョンを確認します。
バージョンはPHP 8.1.29です。この場合、/usr/bin/php8.1-cgi
にはバージョンの最初の2つの数字(8.1)までを記載し、.29は記載しないようにしましょう。
実行するPHPファイルのパス
次次に、実行したいPHPファイルのパスについてですが、これは絶対パスで指定する必要があります。つまり、ルートからのファイルパスです。
例: /usr/bin/php8.1-cgi ここに実行したいPHPファイルのパスを記述
今回の場合、以下のファイルパスになります。
/home/サーバーID/jitantech.com/public_html/youtube-project/register_subscriber.php
URLを確認すると、/home/サーバーID
の部分が表示されないため、以下のように記述してしまうかもしれません。
/jitantech.com/public_html/youtube-project/register_subscriber.php
しかし、ここではサーバーの最上位階層からのパスを記述する必要があります。
ここまで記述したら、「確認画面に進む」⇒「追加する」をクリックします。
定期実行(Cron)の設定は以上です。
- Xserver管理画面から「データベース」⇒「MySQL設定」をクリック。
- 次に「MySQL追加」をクリックします。
- 作成したいMySQLデータベース名を任意の値で入力します。今回は「onepiece」と入力します。
- 「追加する」をクリックします。
- Xserverの管理画面からphpmyadmin(MariaDB)を選択します。
- 先ほど作成したデータベースが表示されています。このデータベースにテーブルを作成していきます。
- データベースのパネルを展開して「新規作成」をクリックします。
- テーブル名と列名、列のタイプ等を入力します。入力が完了したら「保存する」をクリックします。
- 今回作成したテーブルは以下の2つです。
- subscriberテーブル・・・取得したチャンネル情報を格納
- target_youtuberテーブル・・・情報を取得するチャンネルIDを格納
- register_subscriber.php
- db_access.php
- これらのファイルをサーバーに置きます。
- 実行前
- 実行後
- 例: 毎日23:00に実行する設定
- 「Cron設定追加」をクリックし、赤枠の部分を入力します。
- コマンドの説明
- PHPバージョンの確認
- エックスサーバー管理画面の「PHP Ver切替」をクリック。
- ドメインの右の「選択する」をクリックします。
- 表示されるバージョンを確認します。
- 実行するPHPファイルのパス
- まとめ
まとめ
いかがでしたか?今回は、サーバー上でプログラムを定期実行してYouTubeチャンネルの情報を自動収集する方法をご紹介しました。これで、チャンネルの成長をリアルタイムで追跡できますね!
最後までお読みいただき、ありがとうございました!
※以下のサイトを参考にさせて頂きました。
コメント