🎦

Youtube Data API v3をNode.jsから使う

2023/12/15に公開

はじめに

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の有効化

  1. 「API ライブラリ」を開く
  2. 「youtube」で検索
  3. 「Youtube Data API v3」を選択
  4. 「有効にする」を押下

APIキーの作成(もしくは権限の変更)

  1. 「APIとサービス」を開く
  2. 「認証情報」を開く
  3. APIキーを作成する(もしくは既存のAPIキーがあれば選択する)
  4. 制限として「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