ニコニコ動画のサムネイルを取得する
ニコニコ動画サイト内で、おすすすめ等に出てくる動画のサムネイルの画質が悪い!!
とういうことで、サムネイルを高画質にする拡張機能を作るため、サムネイル画像を取得するAPIを作ってみようとういうことです。
ニコニコ動画のOGPを取得する
OGPとは?
Twitter等にリンクを貼ると、画像と簡単な説明が出てきますね?
あれはリンク先のOGPが設定されてるからなんですね。
<meta property="og:title" content="The Rock" />
<meta property="og:type" content="video.movie" />
<meta property="og:url" content="https://www.imdb.com/title/tt0117500/" />
<meta property="og:image" content="https://ia.media-imdb.com/images/rock.jpg" />
ニコニコ動画のOGPはなぜか高画質です。
OGPを取得を取得してみましょう!
ニコニコ動画のOGPは?
試しにJavaScriptでアクセスしましたが、それっぽいものはありませんでしたが、PHPで取得するとそれっぽいのがありました!
<meta property="og:video:tag" content="年忘れ動画">
<meta property="og:site_name" content="ニコニコ動画">
<meta property="og:url" content="https://www.nicovideo.jp/watch/sm38037909">
<meta property="og:image" content="https://img.cdn.nimg.jp/s/nicovideo/thumbnails/38037909/38037909.9969922.original/r1280x720l?key=b41c7149658370c12bb473da9dbfaafcd12337263f2ccd86ba327454c86c0438">
PHPで取得してみよう
$html = file_get_contents("http://www.nicovideo.jp/watch/sm38037909");
$dom = new DOMDocument('1.0', 'UTF-8');
$html = mb_convert_encoding($html, "HTML-ENTITIES", 'auto');
@$dom->loadHTML($html);
$xpath = new DOMXPath($dom);
$xpath->registerNamespace("php", "http://php.net/xpath");
$xpath->registerPHPFunctions();
$OGimage = $xpath->query('//meta[@property="og:image"]');
echo $OGimage->item(0)->getAttribute("content");
結果
https://img.cdn.nimg.jp/s/nicovideo/thumbnails/38037909/38037909.9969922.original/r1280x720l?key=b41c7149658370c12bb473da9dbfaafcd12337263f2ccd86ba327454c86c0438
DOM操作してOGPのimageを取得しました!
URLを確認すると1280×720の高画質なサムネイルのURLが取得できてることが、確認できました
補遺
この高画質なサムネイルのURLはkeyプロパティが動画によって異なるようです。
故、ogpを一々取得する方法が一番有用です。
次回
PHPをAPI化して、JavaScriptで取得、ニコニコ動画内でサムネイルを高画質に!