トップ画像
YouTube Live Scheduler Part2

執筆者: ぷらなりあ

最終更新: 2021/03/07

こんにちは,「ぷらなりあ」です.
前回の記事に引き続き,YouTubeのライブ配信をまとめて表示してくれるサイトについて書いていきます.今回は前回の最後にご紹介した実装概要をもう少し深堀します.
 

実装概要

  1. 各You Tubeチャンネルに配信コンテンツがあるか確認
  2. 配信コンテンツがあればその詳細情報を取得してデータベースに登録
  3. データベースから情報を読み込んで画面に表示

 
基本的な流れは上記の①~③の様に行います.配信予定があるかどうかや,配信の開始時間やURL,配信タイトルなどYouTube上の情報を取得するにはYouTube Data API v3というGoogleの出しているAPIを使用する.また,このAPIの仕様上によりチャンネルごとの配信予定の有無と配信に関する詳細情報の一部は同時に取って来れないので,①と②のように2回に分けて行った.
 

使ったもの

  • PHP 7.4.13
  • MySQL5.7
  • YouTube Data API v3
  • Bootstrap v4.0.0

 

仕組み

①     各You Tubeチャンネルに配信コンテンツがあるか確認
YouTube Data API v3のsearchリソースを使う.
You TubeのチャンネルIDを指定して配信予定のコンテンツ,現在配信中のコンテンツ,過去に配信済みのコンテンツ,それぞれのビデオIDを取得する.また,YouTube Data API v3には,1つのAPIキーごとに1日当たりの使用制限があり,リクエスト内容によって値の異なるクォータの数値で管理されている.APIキーの持つクォータがなくなれば日付が変わるまで使えなくなるので,リクエスト内容はビデオIDとその他最低限だけにし,取得する過去の配信コンテンツの数も必要最低限になるように工夫してある.これを実行すると以下のようになる.なお,【配信状況】には配信予定なら“upcoming”,配信中なら“live”,配信済みなら” completed”が入る.(その他詳しくは参考の公式リファレンスを参照)
 
https://www.googleapis.com/youtube/v3/search?part=id&channelId=【チャンネルID】&key=【APIキー】&eventType=【配信状況】&type=video
 
これを実行すれば,要求した情報がJSONで帰ってくる.
 
②     配信コンテンツがあればその詳細情報を取得してデータベースに登録
①でビデオIDが得られれば,YouTube Data API v3のvideoリソースを使い,配信の詳細情報を得る.
ここでも,クォータの削減のためリクエスト内容は最低限となるように,配信タイトルと配信の開始予定時間,実際の開始時間,配信の終了時間だけを要求した.
             
https://www.googleapis.com/youtube/v3/videos?part=snippet,liveStreamingDetails&fields=items(snippet(title),liveStreamingDetails)&id=【APIキー】&key=&type=video
             
このようにして,①と②で得られた情報をデータベースに登録しておく.
 
You TubeではビデオIDが分かれば配信URLやサムネイル画像のURLも分かる為,ここまでの情報でサイトに必要な情報は一通り集められました.後は③のサイト画面の表示部分だけですが,少し記事が長くなるので今回はここまでにしたいと思います.
次回の記事では,実装の③サイトの表示に関する部分とサイトの課題点などを紹介したいと思います.
 

完成したサイトのデモページ

http://harekiru.starfree.jp/youtubelivescheduler.php
 

参考

YouTube Data API リファレンス
https://developers.google.cn/youtube/v3/docs

取得に失敗しました

2019年度 入部

GitHub