ブルームテクノロジー

テクノロジー

YoutubeAPI+Laravelを使って個人開発

YoutubeAPI+Laravelを使って個人開発

こんにちは!システム統括部Hです!

今回の個人開発のきっかけがブルームテクノロジーに入社してもうすぐ1年が経つため自発的になにかやりたいと思い実装に至りました。せっかくやるなら好きなことをしようと思いYoutubeDataAPIを使って推しの動画のデータを取ってみました。

実装内容

YoutubeDataAPIを使用して推しのサムネイルを取得してみました。YoutubeDataAPIではユーザーがYoutube上で閲覧できるデータを一括に取得することができます。今回初めての個人開発のため、まずは練習としてサムネイルとタイトルのみに絞って取得してみました。

YoutubeDataAPIとは?

YoutubeDataAPIでは動画のタイトルやサムネイル概要欄などチャンネルデータを一括で取得することができます。詳しくは以下をご覧ください。

https://developers.google.com/youtube/v3/docs?hl=ja

環境

Windows11Home 64ビット
Laravel Framework 8.83.27
PHP 8.2.12

事前作業

・Composerのインストール

Composerを使用してGoogle APIクライアントライブラリをインストールします。

composer require google/apiclient:^2.0

・APIキーの有効化

GoogleCloudからYoutubeAPIキーを取得します。
ライブラリを選択します。

そこからYoutubeDataAPI v3を選択した後、有効を押す。

・APIキーの取得

先ほどの操作で有効を押すとYoutubeDataAPIの管理画面に遷移し、そこから認証情報を押します。

認証情報を作成を押すとモーダルが表示されるのでそこのAPIキーを押します。
するとAPIキーを生成してくれるのでコピーしておきます。

・チャンネルIDの取得

Youtubeで取得したいチャンネルの概要欄から、チャンネルの共有→チャンネルIDをコピーしておきます。

これで事前準備は完了です。

実際のコード

ルーティング

Route::get('/youtube', [YoutubeApiController::class, 'youtubeapi']);

コントローラー

namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Google_Client;
use Google_Service_YouTub;
use App\Http\Controllers\Controller;
class YoutubeApiController extends Controller
{
    //先ほど取得したAPIキーを定数にセットする
    const API_KEY = "先ほど取得したAPIキー";
    public function youtubeapi(){
        // //GoogleAPIライブラリを読み込む
        $videos = $this->searchVideos();
        //取得した動画のサムネを表示してみる
        foreach ($videos as $video):
            echo '<img src="' . $video['snippet']['thumbnails']['high']['url']. '" />';
           echo  $video['snippet']['title'];
        endforeach;
    }

    private function getClient(){
        $client = new Google_Client();
        $client->setApplicationName("youtube-api-test");
        $client->setDeveloperKey(self::API_KEY);
        return $client;
    }

    private function searchVideos(){
        $youtube = new \Google_Service_YouTube($this->getClient());
        $params = [
            'channelId' => 'チャンネルID',
            'type' => 'video',
            'maxResults' => 10,
            '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;
        }
        $videos = [];
        foreach ($searchResponse['items'] as $search_result):
            $videos[] = $search_result;
        endforeach;
        return $videos;
    }
}

今回viewは使用していないのですが、上記でサムネイルの一覧とタイトルが画面に出るようになります。サンプルとしてYoutube公式チャンネルから取得してみました。

参考サイト

https://qiita.com/gentuki/items/dfd9f4febaec11851c06

今後してみたいこと

YoutubeDataAPIで動画のいいねや再生回数などが見れるのでそちらを取得してAIに分析をかけてみたいななんて思っています。AIを使った開発がしたかったので、その前提として今回は動画のデータを取得してみました。そのほかのデータもとってきてどんな動画が伸びるのか調べていきたいと思います。

入社して3ヵ月の時に比べると個人開発をしてみようと思った自分がいることに驚いています。こんなにもプログラミングにハマるとは思っていませんでした。
入社して3か月後の時のブログも書いてありますので是非見ていってください。