0
0

Node.jsでYouTubeのプレイリストから動画を削除する

Last updated at Posted at 2023-12-22

動画自体の削除ではなく、再生リストから削除します。

ベースの記事はこちらです。

再生リストから動画削除コード

'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;
};

const oldPlayListId = `PLe~~~~~~~`; //再生リストID
const videoId = `XXXXXXX`; //再生リストから削除したい動画のID

(async () => {
    const auth = googleAuth();
    const youtube = google.youtube({version: 'v3', auth});

    try {
        const res = await youtube.playlistItems.list({
            part: 'snippet',
            maxResults: 50, // 一度に取得する最大動画数
            playlistId: oldPlayListId
        });

        const item = res.data.items.find(i => i.snippet.resourceId.videoId === videoId);
        if (!item) {
            throw new Error('指定された動画はプレイリストに存在しません');
        }

        //プレイリストから動画を削除
        await youtube.playlistItems.delete({
            id: item.id //おそらくプレイリスト+動画の連携ID的なもの
        });

    } catch (error) {
        console.log('The API returned an error: ' + error);
    }
})();

playlistItems.deleteが気になった

今回もGPTに聞いて生成してもらったコードでした。

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

await youtube.playlistItems.delete({
            id: item.id //おそらくプレイリスト+動画の連携ID的なもの
        });

これでIDだけ指定していて、再生リストと動画の連携がどうなってるんだろうって感じでしたが、ここのitem.idはどうやらプレイリスト+動画の連携ID的なものとなっている模様でIDを入れれば紐づいている動画と再生リストのリンクが解除される模様です。

スクリーンショット 2023-12-22 18.08.12.png
再生リストのIDとも動画IDとも違ったIDが入っていた

疑ってごめん。

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