お久しぶりです。
今回はニコニコ静画に使えるネタを紹介します。
静画のAPI(一部)
殆どPIRA Blog参考にしました(http://pita.s374.xrea.com/blog/archives/94)
※ココに書いてある[画像番号]とはim0000のimを取った0000の事を言う
原型サイズ | http://seiga.nicovideo.jp/image/source?id=[画像番号] | |
表示用のサイズ | http://lohas.nicoseiga.jp/img/[画像番号]l | |
http://lohas.nicoseiga.jp/thumb/[画像番号]i | ||
サムネイル | http://lohas.nicoseiga.jp/img/[画像番号]s | |
http://lohas.nicoseiga.jp/thumb/[画像番号]q | アス比そのまま | |
http://lohas.nicoseiga.jp/thumb/[画像番号] | アス比変わる |
ニコニコから取れる画像の形式はjpg,png,gifの三種類
だが拡張子が付いてない
どの画像がどの拡張子かを判別する方法は2つ
①保存するときレスポンスヘッダのContent-Typeを見て判断する (昔この方法だった)
②画像のバイナリー文字列の先頭の文字で判断する (今回はこの方法)
こちらのサイトを参考しました
PNG, GIF, JPEG のバイナリーデータなどについて | ヨモツネット
(http://www.yomotsu.net/wp/?p=504)
バイナリー文字列 | デコード後 | |
---|---|---|
PNG | 89 50 4E 47 | 臼NG |
GIF(89a) | 47 49 46 38 39 61 | GIF89a |
GIF(87a) | 47 49 46 38 37 61 | GIF87a |
JPEG | FF D8 FF | .リ. |
こうなっているので簡単に判別ができる
ね?簡単でしょ?
以下ソース
Dim url As String = "http://seiga.nicovideo.jp/image/source?id=[画像番号]" Dim wc As New System.Net.WebClient wc.Headers.Add("Cookie", "user_session=ユーザーセッション") Dim imageByte As Byte() = wc.DownloadData(url) Dim str As String = Nothing For index = 0 To 5 Dim hoge As String = Convert.ToString(imageByte(index), 16) '16進数に変換 str = str & " " & hoge Next str = str.ToUpper() 'すべて大文字にする Console.WriteLine("→" & str) If str.StartsWith(" 89 50 4E 47") = True Then Console.WriteLine("PNG") End If If str.StartsWith(" 47 49 46 38 39 61") = True Then Console.WriteLine("GIF(89a)") End If If str.StartsWith(" 47 49 46 38 37 61") = True Then Console.WriteLine("GIF(87a)") End If If str.StartsWith(" FF D8 FF") = True Then Console.WriteLine("JPEG") End If