YouTube・ニコニコ動画のURLからサムネイルを取得する

前のFlickr同様、twicli用サムネイル表示プラグイン「thumbnail.js」にYouTubeニコニコ動画のサムネイル表示機能を追加しました。


やり方は以下の通り。

YouTubeの場合

本来はAPIを使って

http://gdata.youtube.com/feeds/api/videos/<動画ID>

からサムネイルのURL()をとってくるのが良さそうです。

が、今のところ

http://i.ytimg.com/vi/<動画のID>/default.jpg

に固定のようですので、これをいきなり表示しています。他に、

http://i.ytimg.com/vi/<動画のID>/0.jpg
http://i.ytimg.com/vi/<動画のID>/1.jpg
http://i.ytimg.com/vi/<動画のID>/2.jpg
http://i.ytimg.com/vi/<動画のID>/3.jpg

に、別のサムネールがあります。(0はデフォルトの大きいサイズ?)

ドメインは img.youtube.com でも良いみたいです。


スクリプトは、www.youtube.com/watch?v=〜 と 短縮版の youtu.be/〜 に両方対応して

if (url.match(/^http:\/\/(?:www\.youtube\.com\/watch\?.*v=|youtu\.be\/)([\w-]+)/)) {
	addThumbnail(elem, 'http://i.ytimg.com/vi/' + RegExp.$1 + '/default.jpg', url);
}

という感じ。

結果例:http://www.youtube.com/watch?v=Q9NP-AeKX40 の場合

ニコニコ動画の場合

こちらもAPIを使って、

http://www.nicovideo.jp/api/getthumbinfo/<動画ID>

を取得し、結果に含まれる thumbnail_url を見れば良さそう。

ただこちらも、

http://tn-skr<1〜4のいずれか>.smilevideo.jp/smile?i=<動画のID(数値部分)>

に固定のようですので、これをいきなり表示しています。なお、tn-skr1〜4のどれを使うかは(どれでもサムネイルは返ってきますが)、

(動画ID % 4) + 1

とすれば良いようです。
(こちらの記事を参考にさせて頂きました。)


スクリプトは、www.nicovideo.jp/watch/〜 と短縮版の nico.ms/〜 に対応して

if (url.match(/^http:\/\/(?:www\.nicovideo\.jp\/watch|nico\.ms)\/[a-z][a-z](\d+)$/)) {
	var id = RegExp.$1;
	var host = parseInt(id)%4 + 1;
	addThumbnail(elem, 'http://tn-skr' + host + '.smilevideo.jp/smile?i=' + id, url);
}

という感じ。

結果例:http://www.nicovideo.jp/watch/sm10616792 の場合


なおニコニコ生放送についてはよく分かってません(あんまり調べてないとも言う)。
追記: nico.ms/lv〜 はニコ生なので、正しくサムネイルがとれません。なので、IDの前の英字2文字がlvでないときのみサムネイル表示にした方が良いようです。