ためしがき/運営用/REST API2

Last-modified: 2025-01-02 (木) 17:59:12

このBotは各ライバーのYouTubeチャンネルに投稿された動画の一覧を自動で取得・出力します。

  • チャンネル:にじさんじ、NIJISANJI EN、VirtuaReal、NIJISANJI INの各ライバーのチャンネル、ユニットのチャンネルが取得対象です。公式チャンネルは対象外です。
  • 動画の種類:配信・プレミア公開動画・通常動画の全てが取得対象です。Shortsも取得されます。
  • 動画の公開範囲:限定公開動画・非公開動画・メンバーシップ限定動画は取得されません。

取得した動画は用途別でいくつかのページに出力されます。なお、全てのケースにおいて配信開始前の配信枠・プレミア公開前のプレミア公開動画は出力時に除外されます。

  • YouTube投稿動画検出Bot
    • 投稿主のページの動画一覧にまだ掲載されていない動画のみを出力します。
      ページ名が「[ライバー名]/動画一覧」または「[ライバー名]/ライブ一覧」で始まるページ*1を取得し、動画ID(例:https://youtu.be/xbHcDKJ1vpAの太字部分)が検索対象の全てのページの本文に含まれていない動画が出力対象となります。
    • 検索対象ページはYouTube投稿動画検出Bot/検索対象に出力されます。
  • YouTube投稿動画検出Bot/コラボ用
    他チャンネルの動画の貼り付け用に過去10日以内の配信・動画の一覧を一律で出力します。

編集方針/ライバー個人ページテンプレート/動画一覧のフォーマットに従い出力されます。異なるフォーマットを使用しているページには各自調整の上貼り付けてください。

  • 日付は配信の場合配信開始日、プレミア公開の場合プレミア公開開始日、通常の動画の場合は公開日が出力されます。
    前年以前の日付の場合は先頭に年が付与されます。例:[2023]
  • Shortsの場合youtube.com/shortsで始まるURLが、それ以外の動画はyoutu.beで始まる短縮URLが出力されます。また、Shortsは先頭に[Shorts]が付与されます。
    いわゆる「縦型配信」はYouTubeの仕様上Shorts扱いにはなりません。
技術的仕様

このBotはYouTube Data API v3を使用しています。大まかな仕組みはget-ytvideos-from-chを参考にさせていただきました。

  • チャンネル毎の動画一覧の取得にはプレイリストを使用します。プレイリストはChannels.listメソッドのレスポンスに含まれるitems[]内のcontentDetails.relatedPlaylists.uploadsより取得します。
  • プレイリストの内の動画一覧はPlaylistItems.listメソッドのレスポンスに含まれるitems[]より取得します。
  • 動画のタイトルはVideos.listメソッドのレスポンスに含まれるitems[]内のsnippet.localized.titleより取得します。この際、オプションパラメータとしてhl=jaを指定します。例えば日本語と英語の両方でタイトルが設定さている場合は日本語が優先されます。
  • 動画の日付はVideos.listメソッドのレスポンスに含まれるitems[]内のliveStreamingDetails.actualStartTime(配信・プレミア公開動画)またはsnippet.publishedAt(それ以外の動画)より取得します。
  • 配信開始前の配信枠・プレミア公開前のプレミア公開動画の判別はVideos.listメソッドのレスポンスに含まれるitems[]内のsnippet.liveBroadcastContentが"upcoming"か否かで行います。

*1 高速化と正確な検出のため、ページ名が「/年」「/デビュー前」で終わるページおよび「ランダム」が含まれるページは自動で除外されます。
z