前の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); }
という感じ。
ニコニコ動画の場合
こちらも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でないときのみサムネイル表示にした方が良いようです。