生涯未熟

生涯未熟

プログラミングをちょこちょこと。

YouTube Data APIでショート動画を判別する方法はないのか?

というタイトルにしてありますが、公式的にはありません。

https://youtube.com/shorts/[動画ID] でリダイレクトするかしないかで判別するという方法もありますが、例えば云万件ある動画に対してそんなことやってられませんね?

なので、色々と手を変え品を変えやってみました。

動画サイズでの判別

Videos APIfileDetails.videoStreams.WidthPixelsHeightPixels で動画サイズを取得したら、ショート動画ならではの縦型サイズとそれ以外といった感じで判別できるかな?と思ってやってみました。

結論から述べると駄目でした。何が駄目かというと fileDetails は動画投稿主しか取得することができません。残念無念。

サムネイルから判別

Videos APIsnippet.thumbnails.width でサムネイルサイズがショート動画と通常動画とで違ったりするかも?と取得してみましたが、同一サイズが返ってきました。うーむ、これも駄目。

裏技チックな成功方法

最後に現在のところ最も成功と言える方法を見つけました。それは ショート動画専用プレイリストを参照する ことです。

stackoverflow.com

こちらのstack overflowを見るまで知らなかったのですが、どうやらChannel IDを一部変えるとショート動画やライブストリーミング動画などのPlaylist IDとして扱えるみたいなのです。

例えば、日本を誇るHIKAKIN TVのChannel IDは UCZf__ehlCEBPop-_sldpBUQ で、この先頭2文字のUCはどのチャンネルのChannel IDでも共通です。このUCの部分を UUSH に置換して、Playlist IDとして取得してみましょう。

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId=UUSHZf__ehlCEBPop-_sldpBUQ&maxResults=50&key=[APIキー] を実行してみると

取れていそうですね。別のチャンネルで詳しく調べてみると、確かにショート動画のみ取れています。

他にも UULF で通常動画、 UULVライブストリーミング動画が取れるので、一般的に見れる3種類に分けて動画を取得することができそうです。

このような感じで、大技林にでも載ってそうな裏技チックな感じでショート動画を取ることができました。

こんなことしなくても何の動画なのか判別できるように整えてほしいな〜と思ったり。