YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)
| 更新: 2024/02/11 | 2734文字
今回は、youtubeとwebサイト連携で、YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみます。前回はvideoリソースとか使って1件取った感じでしたが、今回はリストにしてまとめて取る・サイト上に表示みたいなところまでいってみます。パラメータやPHPプログラムなども見ていってみましょう。
目次
YouTube Data API・Search: listリソースのパラメータ指定は?
前回のおさらい(APIキー入手)
YouTube Data APIから、動画のデータを取得するには『APIキー』が必要です。当サイト過去記事にて、APIキーを取ってみたときのことを書いていますので、参考になさってください。
YouTube Data APIから、動画のデータを取得する方法~APIキー入手と、json形式で基本データ取得
/7908/how-to-get-data-from-youtube-data-api/
Search: listリソースのパラメーターについて
urlはこんな感じになります。 https://www.googleapis.com/youtube/v3/search?key={}&channelId={}&part=snippet&order=date&maxResults=12
Search: listリソースを使うには『v3/search』のように指定。パラメータはこのように指定しました。『key={}』の部分にはAPIキーを、『channelId={}』の部分には、チャンネルid(https://www.youtube.com/channel/〇〇の、〇〇の部分の文字列)を入れます。『part』と『order・maxResults』がパラメータです。
part=snippetについて。『part』では、『part=id』とか『part=snippet,id』のような指定ができます。idだと動画idしかでないので、タイトル・id・サムネを取るには『part=snippet』が良いかも。そのほかの『order=date&maxResults=12』は、『日付順で最大12件取る』という意味です。
orderのパラメーターについて
上記のurlでは『order=date(作成日の新しい順)』というパラメータを指定していますが、他にも指定できるパラメータがあることがわかりました。『viewCount / rating』などは、人気指標として使いやすそうです。
- rating:評価の高い順(評価公開時)
- relevance:デフォルト・検索クエリの関連性
- title:タイトルのアルファベット順
- videoCount:番号順(降順)
- viewCount:再生回数の多い順
表示例(APIのレスポンス)
上記のurlにアクセスすると、データを取得することができます。ブラウザで見るとこんな感じ。 テキストエディタの折り返しなどで、ちょっとスペースが入ってしまったことがありましたが、エラーになるようなので注意します(スペースも判定される?)。
参考リンク
youtube data api Search: listリソース https://developers.google.com/youtube/v3/docs/search/list
var_dumpしてみた例(配列キー・構造などを確認)
で、jsonのままでわかる場合もありますけど、一応取得したデータをvar_dumpしてみました。理由は、『キーや構造を確認するため』です。パスがずれたりするとエラーでデータが取れなくなるので、こういう『配列の中にも配列がいっぱい入っている』みたいなときは、確認しておいた方が安全です。
PHP的には、パラメーター指定したurlに対し『file_get_contents』で取得して、『json_decode』で配列にし、var_dumpするという流れになります。
YouTube Data API タイトル・動画id・サムネイル画像取得コード・ポイント・表示例
コードとポイント
構造がちょっとわかんなかったので、itemsの項目をprint_rで出してみました。[“items”][0][“snippet”]のように指定することで、『0(配列の最初・ここでは最も最近アップされた動画)』の『スニペット(タイトルやid・サムネなど)』を取ってみました。descriptionなども出ますね。
動画url出したいときは『www.youtube.com/watch?v=』の後ろにidを出すと、urlになります(これをアンカータグ内に出力します)。『[0][“id”][“videoId”]』みたいな入れ子が、少しややこしいかも。サムネのアドレスは、urlの形で入っているようです。
そのほか、『 $ctn=0』がありますが、ループで回すとき1ずつ増やして、apiパラメータで指定した12件を取るみたいに使う予定です。 (apiソートにランダムが無いけど、この変数の数値をランダムに動かしても使えそうです。)
表示例
味けない表示ですが、これらの情報が取れれば、リンクタグにしたりCSSで成形したりして整えればokです。上が『[“items”][0][“snippet”]』と指定した部分、下は個別にキー指定して取っています。サムネサイズは『[default][medium][high] 』の三種類ありますね。
あとがき・まとめ
- YouTube Data API・Search: listリソースでは、複数の動画をリストにして取れる。件数・並び順のパラメーターもあり。
- 『part=snippet』で、ある程度必要な情報は取れる。
- 配列が入り組んでいるので、パスだけ間違えないように注意。
まとめるとこんなところでしょうか。必要情報はある程度とれたので、『ループ』『ランダム』などをプログラム側でやってもよさそうです。apiデータも扱えると、サイトとyoutubeの連携もしやすくなるので、ぜひご検討ください。
【カテゴリ】- PHP
【タグ】- PHP, youtube, YouTube-Data-API