PHPでYoutube API v3を叩いて特定のチャンネルの新着動画を取ってくる

どうも
お久しぶりです、最近はWordPress案件がとても楽しいです。
是非お仕事ください。
そんな中、WordPress案件の中で、特定のチャンネルの新着動画をトップページに並べたいらしく、色々と考えた結果Youtube v3 apiを使うと驚くほど簡単に新着動画を取ってくることに成功したので記事にしたいと思います。
新着動画を取って来たい
はい、もう簡単なので早速やっていきたいと思います。
1.Google Cloud Consoleに行って鍵を取ってくる
まず、Google Cloud ConsoleのAPI Managerに行きます
そしてライブラリでYoutubeを検索して、Youtube Data APIを有効にします。
次に認証情報から認証情報を作成します。
APIキーを選択すると一瞬でキーが出てくるのでメモっておいてください。
2.チャンネルIDを取得する
これは至って簡単です、チャンネルIDが欲しいチャンネルにアクセスして
URLのchannel/以下がチャンネルIDです
3.Youtube v3 APIを叩く
はい、Keyがあればもうすぐ叩けます。
https://www.googleapis.com/youtube/v3/search
が検索APIなので、これに
?part=snippet&channelId={チャンネルID}&maxResults=5&order=date&type=video&key={API Key}
って感じでGETパラメータをつけてブラウザからアクセスしてみると…
maxResults=5
5件取ってくるの意
https://www.googleapis.com/youtube/v3/search?part=snippet&channelId=UC5UKWHBT_f5789lAE5Tkd4A&maxResults=5&order=date&type=video&key={API Key}
僕の大好きな鍛道の最新動画のJSONが降ってきます
4.PHPから叩く
function cuGet_contents( $url, $timeout = 15 ){
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $url );
curl_setopt( $ch, CURLOPT_HEADER, false );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_TIMEOUT, $timeout );
$result = curl_exec( $ch );
curl_close( $ch );
return $result;
}
いい感じでcurl get関数的なものを作って
json_decodeをして
foreach ($array['items'] as $key => $value) {
処理
}
で色々とるって感じです。
小技
Youtube v3 APIで降ってくるthumbnailのURLはオリジナル画像のURLではなく、圧縮されたりしているので画質が悪かったり、勝手にアスペクト比が変えられていたりするので、表示するときは
http://i.ytimg.com/vi/{Video ID}/maxresdefault.jpg
という感じで取得するといいかも