🎦
Youtube Data API v3をNode.jsから使う
はじめに
Youtube Data API v3をNode.jsから使う方法のメモです。
環境
- node 18.14.2
- typescript 5.0.2
- googleapis 126.0.1
- esbuild 0.17.12
- esbuild-register 3.4.2
事前準備
GoogleCloudプロジェクトを開き、以下に沿って設定します。
Youtube Data APIの有効化
- 「API ライブラリ」を開く
- 「youtube」で検索
- 「Youtube Data API v3」を選択
- 「有効にする」を押下
APIキーの作成(もしくは権限の変更)
- 「APIとサービス」を開く
- 「認証情報」を開く
- APIキーを作成する(もしくは既存のAPIキーがあれば選択する)
- 制限として「Youtube Data API v3」にチェックを入れて保存
Youtube検索を実装
下記のような searchYoutube
関数を作成します。
youtube.ts
import { google } from "googleapis";
// Youtubeを検索し、タイトル・URL・説明を取得する
export const searchYoutube = async (keyword: string): { title: string; url: string; description: string; }[] => {
const youtube = google.youtube({
version: "v3",
auth: process.env["GOOGLE_API_KEY"] ?? "",
});
const searchRes = await youtube.search.list({
q: keyword,
part: ["snippet"],
relevanceLanguage: "ja", // 日本語の動画を検索
type: ["video"],
});
// 先頭3件を抽出
const targetItems = (searchRes.data.items ?? []).slice(0, 3)
return targetItems.map((item) => ({
title: item.snippet?.title ?? "",
url: `https://www.youtube.com/watch?v=${item.id.videoId}`,
description: item.snippet?.description ?? "",
}));
};
実行
では実行していきます。ヒカキンの動画を探してみます。
main.ts
const main = async () => {
const result = await searchYoutube("ヒカキン");
console.log(JSON.stringify(res, null, 2));
};
実行
node -r esbuild-register main.ts
以下の出力が得られました。
出力
[
{
"title": "長崎をパニックにおとしいれた男",
"url": "https://www.youtube.com/watch?v=3NwE83rTx8E",
"description": "撮影協力: 株式会社ジャパネットホールディングス 株式会社リージョナルクリエーション長崎 ..."
},
{
"title": "【支払いで絶望】20億円ハウスの光熱費初めて見たら…",
"url": "https://www.youtube.com/watch?v=2L7w0NIi70o",
"description": "チャンネル登録はこちら↓ http://www.youtube.com/user/hikakintv?sub_confirmation=1 ◇X https://twitter.com/hikakin ◇インスタ ..."
},
{
"title": "週刊誌に撮られて好感度が爆上がりした有名人・Youtuber #youtuber #有名人 #好感度",
"url": "https://www.youtube.com/watch?v=BLFyJnXYS1c",
"description": "週刊誌に撮られたのに好感度が爆上がりした有名人 ・youtuberをまとめ #youtuber #有名人#芸能人 #週刊誌 #好感度 #ヒカキン ..."
}
]
おわりに
以上、参考になれば幸いです。
Discussion