YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみる(Search: listリソース)

更新: 2023/10/26 2734文字

今回は、youtubeとwebサイト連携で、YouTube Data APIを使って、PHPで『タイトル・動画id・サムネイル画像』などを取得してみます。前回はvideoリソースとか使って1件取った感じでしたが、今回はリストにしてまとめて取る・サイト上に表示みたいなところまでいってみます。パラメータやPHPプログラムなども見ていってみましょう。

YouTube Data API・Search: listリソースのパラメータ指定は?

前回のおさらい(APIキー入手)

YouTube Data APIから、動画のデータを取得するには『APIキー』が必要です。当サイト過去記事にて、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にアクセスすると、データを取得することができます。ブラウザで見るとこんな感じ。 テキストエディタの折り返しなどで、ちょっとスペースが入ってしまったことがありましたが、エラーになるようなので注意します(スペースも判定される?)。

参考リンク

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の連携もしやすくなるので、ぜひご検討ください。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


【カテゴリ】- PHP・データベースetc
【タグ】- , ,

関連記事

【PHP】カウントダウン機能に使える?array_reverseで配列要素を逆に,パラメーター挙動&array_flipとの違い
【PHPプログラミング】glob関数を使って、特定ディレクトリ内のファイル一覧取得や、出力を行う方法
テスト環境(ローカル含む)でPHPサイト開発に使えるツール&XAMPPでやってみた例(設定や表示ファイルetc)
WordPressユーザーが覚えると便利な条件分岐~投稿記事・固定ページ指定して表示/非表示
【PHP】GD・ImageFilterで、画像の色合いを変えてみる
【php/pdoクラス】SQLite/phpLiteAdminでデータベース作成&アクセス制限・PDOクラスで記事データ取得してみる
【PHP・url転送】$_SERVER(サーバー変数)のHTTP_HOSTやREQUEST_URIを使って、新しいドメインにリダイレクトさせる方法
【PHPライブラリでスクレイピング】PHP Simple HTML DOM Parserで、クラスやID指定で別サイトの内容を取得する方法
【WordPress別サーバー引っ越し】SQLエクスポート/インポート&Redirectionプラグインを使った方法
PHP・shuffleやarrayを使った、画像ランダム表示方法~メインビジュアルやバナー・テキストに利用可
【PHP学習的な内容】emptyやis_nullなどで判定できないnull(String)の対応(preg_matchやstrpos?)
【画像つきでわかりやすい】WordPressで使われるデータは、MySQLデータベースに、どのように格納されているの?