0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PHPでYoutubeからタイトルとサムネイルを取得

Last updated at Posted at 2022-04-10

YoutubeAPIを使ってYoutubeのURLからタイトルとサムネイルを取得する機能を実装したので備忘録として残しておく。
基本的には以下のYoutube動画を参考にした。

⇩作成したサービス

YoutubeAPIキー取得

Google Cloud PlatformからYoutubeのAPIキーを取得する。
ここでは説明を省く。

今回はAPIキーを実際の処理の中で変数として持たせてしまっているが、Laravelを使用する場合.envに記載する。

実装

App\LibにYoutube.phpを作成し、ここでAPIと連携する。
今回は作成したサービスの都合上、json形式で値を返す。

App\Lib\Youtube.php
namespace App\Lib;

class Youtube {
    
    // YoutubeのURLから動画IDを抽出
    public static function getVideoID($url) {

        preg_match('/\?v=([^&]+)/', $url , $match);
        $id = $match[1];

        return $id;
    }
    
    // 動画情報をAPIから取得し、json形式で返す
    public static function getYoutubeData($url) {
        
        $API_KEY = '取得したAPIキー';

        $id = Youtube::getVideoID($url);
        $base_url = "https://www.googleapis.com/youtube/v3/";

        $API_URL = $base_url . "videos?id=" . $id . "&part=snippet&key=" . $API_KEY;

        $video = json_decode(file_get_contents($API_URL));

        $title = $video->items[0]->snippet->title;
        $thumbnail = $video->items[0]->snippet->thumbnails->medium->url;
        $detail = $video->items[0]->snippet->description;

        $dataArr = [
            'title' => $title,
            'thumbnail' => $thumbnail,
            'detail' => nl2br($detail)
        ];
    
        $jsonData = json_encode($dataArr, JSON_UNESCAPED_UNICODE);
        
        return $jsonData;
    }
}

コードの説明

getVideoID()

    // YoutubeのURLから動画IDを抽出
    public static function getVideoID($url) {

        preg_match('/\?v=([^&]+)/', $url , $match);
        $id = $match[1];

        return $id;
    }

関数getVideoIdは引数にYoutube動画のURLをとり、動画固有のIDを正規表現で取得している。
例) URL : https://www.youtube.com/watch?v=Kcm6LvSBfpg&t=444s
  →動画ID Kcm6LvSBfpg&t=444s

getYoutubeData()

$base_url = "https://www.googleapis.com/youtube/v3/";

YoutubeAPIを使用する場合、このURLに様々なパラメータを指定して情報を取得する。

$API_URL = $base_url . "videos?id=" . $id . "&part=snippet&key=" . $API_KEY;

part=snippetを指定することで、idで指定した動画のタイトル、説明、カテゴリなどの基本的な情報が得られる。

$video = json_decode(file_get_contents($API_URL));

$title = $video->items[0]->snippet->title;
$thumbnail = $video->items[0]->snippet->thumbnails->medium->url;
$detail = $video->items[0]->snippet->description;

APIからはjson形式で値が返ってくるので、PHPのオブジェクトに置換して、必要な情報を取り出す。
どのようなデータが取得可能かは以下を参照する。
https://developers.google.com/youtube/v3/docs/videos?hl=ja

$dataArr = [
        'title' => $title,
        'thumbnail' => $thumbnail,
        'detail' => nl2br($detail)
];

$jsonData = json_encode($dataArr, JSON_UNESCAPED_UNICODE);

取り出したデータを連想配列の形式で代入し、json形式に置換する。

以上でYoutubeAPIから動画の情報を取得できた。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?