0
0

Node.jsでYouTube再生リストに含まれる動画リストを取得

Last updated at Posted at 2023-12-22

こちらの記事の続きです。

OAuthクライアントとトークン情報を準備

  • client_secret.json
  • token.json

の二つを準備しておきます。

再生リストから動画の検索

色々なAPIがあっていまいちわからなかったのですが、ChatGPTに聞いて出てきたサンプルが役立ちました。

playlistItemsのメソッドが該当する模様です。

スクリーンショット 2023-12-22 17.02.33.png

ドキュメントを調べる -> サンプルではなく、ChatGPTに聞く -> ドキュメントを見るという流れ、効率的かも

再生リストのIDを指定して、リスト内の動画を検索

'use strict';

const fs = require('fs');
const {google} = require('googleapis');

const googleAuth = () => {
    const CREDENTIALS_PATH = 'client_secret.json';
    const TOKEN_PATH = 'token.json';  
    const credentials = JSON.parse(fs.readFileSync(CREDENTIALS_PATH, 'utf8'));
    const token = JSON.parse(fs.readFileSync(TOKEN_PATH, 'utf8'));

    const {client_secret, client_id, redirect_uris} = credentials.installed;
    const oAuth2Client = new google.auth.OAuth2(client_id, client_secret, redirect_uris[0]);
    oAuth2Client.setCredentials(token);

    return oAuth2Client;
};


//↑ここまでは認証で共通 ↓ここから
(async () => {
    const auth = googleAuth();
    const youtube = google.youtube({version: 'v3', auth});
    // console.log(youtube.channels)
    try {
        const res = await youtube.playlistItems.list({
            part: 'snippet',
            maxResults: 50, // 一度に取得する最大動画数
            playlistId: `再生リストのID`
        });

        const videos = res.data.items.map(item => {
            return {
                title: item.snippet.title,
                videoId: item.snippet.resourceId.videoId
            };
        });
        console.log(videos);
    } catch (error) {
        console.log('The API returned an error: ' + error);
    }
})();

結果

アップロードして再生リストに追加してある動画が取得できました。

スクリーンショット 2023-12-22 17.06.24.png

0
0
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
0