nekoTheShadow’s diary

技術ブログとして始めたはずが、読書&愚痴ブログになりました(´・ω・`)

getthumbininfoで投稿者情報を取得してみよう。

昨日、ニコニコ動画提供の「スナップショット検索API」で、動画投稿者に関する情報が取れないとか何とかと、ぶつくさ書いたのですが、あの後、インターネットサーフィンをしていると、別のapiで投稿者情報は取得できることが判明。
「getthumbinfo」というそうで、video_idを指定すれば、ログインなしで様々な情報を返してくれるようです。

これを使わない手はない!ということで、早速やっていきましょう。

まず、GETする必要があるので、メソッドを作ります。

require "net/http"

# urlにはgetしたいページのurlを入れる。
def httpGet(url)
  uri = URI.parse(url)
  http = Net::HTTP.start(uri.host) 
  return http.get(uri.path).body
end

簡単ですね。昨日の応用です。

そして、次のようにして取得するのですが……

video_id = "sm20718817"
url = "http://ext.nicovideo.jp/api/getthumbinfo/#{video_id}"
res = httpGet(url)

これで取得できるのは(resの中身は)xmlになります。
ちなみに具体的にはこんな感じ

rubyxmlというと"nokogiri"なんかがすぐ思いつくのですが、今回はgemを導入するほど大掛かりなものでもないので、標準ライブラリである"rexml/document"を使います。

require "rexml/document"

xml = REXML::Document.new(res)
p xml.root.elements["thumb/user_nickname"].text
# => "きゆみやま"

たとえばこれで投稿者の名前が取得できます。いやはや楽ですね。

以上をまとめて、user_idとuser_nicknameが簡単に取得できるように整えれば、完成です。