Help us understand the problem. What is going on with this article?

[PHP] YouTube APIの利用(動画情報の取得)

今回の題

PHPでYouTubeのAPIを試してみました。
この記事ではYouTube上にある動画の情報を取得して表示するところまでを解説しています。
まだ触り始めたばかりであまり情報を持っていませんが備忘録として残します。
いつか誰かの参考になれば幸いです😉

GoogleAPIライブラリのインストール

composerを使ってインストールします。

$ composer require google/apiclient

インストールが終わり、以下の画像の様にvendor配下に「google」というディレクトリができていればOKです。
スクリーンショット 2020-06-28 23.13.52.png

APIキーの取得

以下のページからからAPIキーを取得します。
Googleのデベロッパーコンソール
流れとしては、

  1. YouTubeAPIを有効化(同時にプロジェクト作成)
  2. プロジェクトのAPIキーを作成

だけです。

以下、APIキーの取得までの詳しい流れを書きます。
(基本的に画像内の赤枠をクリックしていけばOKです)

YouTubeライブラリを有効化する

画面左側のバーから「ライブラリ」のリンクに飛ぶ。
スクリーンショット 2020-06-29 1.06.06.png

飛んだ先で「YouTube」と検索。
スクリーンショット 2020-06-29 1.10.37.png

「YouTube Data API v3」を選択。
スクリーンショット 2020-06-29 1.15.23.png
「有効にする」をクリック。
しばらくするとページが遷移します。
スクリーンショット 2020-06-29 0.24.44.png

2.APIキーを作成する

ページ遷移後、ページの上部に、「My First Project」 という名前のプロジェクトが作らているのがわかります。(画像黒下線部分)
問題なければ、画面左側のバーから「認証情報」のリンクに飛びます。
スクリーンショット 2020-06-29 5.15.44.png

「認証情報を作成」をクリック。するとモーダルが出てきます。
「APIキー」をクリック。
スクリーンショット 2020-06-29 5.22.39.png

「APIキー」が作成されました。(画像は塗りつぶしています)
あとで使いますのでコピーしておいてください。
スクリーンショット 2020-06-29 5.29.00.png

コード

例として、チャンネルIDで指定したチャンネルが投稿している動画を取得するコードです。
公式のサンプルコードを参考にさせていただきました。
https://developers.google.com/youtube/v3/code_samples/php?hl=ja#search_by_keyword

<?php
//GoogleAPIライブラリを読み込む
require_once (dirname(__FILE__) . '/vendor/autoload.php');
//先ほど取得したAPIキーを定数にセットする
const API_KEY = "XXXXXXXXX";

//APIキーを用いて認証を行う
function getClient() 
{
    $client = new Google_Client();
    $client->setApplicationName("youtube-api-test");
    $client->setDeveloperKey(API_KEY);
    return $client;
}

//動画を取得する.
function searchVideos() 
{
    $youtube = new Google_Service_YouTube(getClient());
    //ここに好きなYouTubeのチャンネルIDを入れる
    $params['channelId'] = 'XXXXXXXXX';
    $params['type'] = 'video';
    $params['maxResults'] = 10;
    $params['order'] = 'date';
    try {
        $searchResponse = $youtube->search->listSearch('snippet', $params);
    } catch (Google_Service_Exception $e) {
        echo htmlspecialchars($e->getMessage();
        exit;
    } catch (Google_Exception $e) {
        echo htmlspecialchars($e->getMessage();
        exit;
    }
    foreach ($searchResponse['items'] as $search_result) {
        $videos[] = $search_result;
    }
    return $videos;
}

$videos = searchVideos();

//取得した動画のサムネを表示してみる
foreach ($videos as $video) {
    echo '<img src="' . $video['snippet']['thumbnails']['high']['url']. '" />';
}

以上。

一言

YouTubeaAPIで一番お手軽にできる動画の取得のみを行ってみました。
リソースの挿入、更新、または削除を実行する操作の場合は、ユーザー認証が別途必要なので興味のある方は調べてみてください。

参考

公式
https://developers.google.com/youtube

kuzira_vimmer
主にPHPを学んでいる大学生。 laravelが好き。jsを勉強中。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした