new wings

プログラミングを始めたので、感想を書いてくと思います

Youtubeライブ配信の固定URLとチャンネルIDの特定について

チャンネルIDとは、個々のYoutubeチャンネルに割り当てられた被りのない一意のIDのこと。UCから始まる。 例:UCfB8TO0f3iIT43myKEqd1JA

ライブ配信の固定URL

結論

Youtubeチャンネルのライブ配信の固定URLは次のようなURLであり、チャンネルIDをクエリパラメータで指定する必要がある。注:そもそもライブ配信の予定がない場合にはエラーのような表示となるが、予定が入り次第このURLを読み込み直し再生ボタンを押せば「xx分後にライブ配信」という表示とともに再生開始待機状態となる。

https://www.youtube.com/embed/live_stream?channel=チャンネルID
例:https://www.youtube.com/embed/live_stream?channel=UCfB8TO0f3iIT43myKEqd1JA

stackoverflow.com

詳細

ライブ配信の固定URLとは、ライブ配信毎のビデオIDを指定しなくても最新のライブ配信へアクセスできるURLのことである。

ライブ配信を含めYoutubeの動画上で右クリックすると「埋め込みコードをコピー」というメニューが表示される。埋め込みコードは次のような内容である。

<iframe width="800" height="640" src="https://www.youtube.com/embed/XXXXXXX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

src= の後ろにそのライブ配信(または動画)のURLが書かれている。この場合は https://www.youtube.com/embed/XXXXXXX である。このURLの embed/ に続く XXXXXXX の部分がビデオIDである。つまり「埋め込みコードをコピー」して得られるURLは固定URLではなくライブ配信(または動画)毎に固有のURLである。

ライブ配信(または動画)毎に固有のURLの代わりにライブ配信の固定URLを使って埋め込みコードを書き直すと次のようになる。

<iframe width="800" height="640" src="https://www.youtube.com/embed/live_stream?channel=チャンネルID" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

この埋め込みコードは常に最新のライブ配信を表示することができる。

固定URLに付加できるクエリパラメータには様々な種類がある。下記リンク先参照。

developers.google.com

チャンネルIDの特定

結論

YoutubeチャンネルのトップページのURLが

  • https://www.youtube.com/channel/UCxxxxx の場合
    • 難易度:簡単
    • チャンネルIDはURL末尾のUCxxxxx
  • https://www.youtube.com/c/xxxxx または https://www.youtube.com/user/xxxxx/featured の場合
    • 難易度:ちょっと難しい
    • YoutubeチャンネルのトップページのHTML中に書かれたJavaScriptytInitialData 変数がある。この変数内のいたるところにチャンネルIDが書かれているのでそれを文字列検索等で抜き取る。チャンネルIDはUCから始まるので検索は容易。
    • Youtubeは度々仕様が変わる。そのため、これから先必ずしもこの方法でチャンネルIDを取得できる保証はない。

詳細

チャンネルIDを特定する最も簡単な方法はYoutubeチャンネルのトップページにアクセスしてそのページのURLを見ることである。URLは通常 https://www.youtube.com/channel/チャンネルID のような形式である。そのためチャンネルIDは単純に channel/ の後ろに続く文字と同じである。

ところが、まれ?にYoutubeチャンネルのトップページのURLがこの形式とは異なることがある。詳細は下記リンク先参照。

support.google.com

URLからチャンネルIDを特定できない場合にはYoutubeチャンネルのトップページのHTMLを見ることでチャンネルIDを手に入れることができる。scriptタグ内に ytInitialData 変数が宣言・定義されており、たいていは次のような形でこの変数内にチャンネルIDが多数書かれている。HTMLをパースして抜き出すか、単に文字列検索で UCxxxxx の部分を取り出す。

browseId: "UCxxxxx"

または

{key: "browseId", value: "UCxxxxx"}