ニコニコ動画のタイプ判定をURL以外でやってみる

ヘッダのfilenameから拡張子を取得してみた。Content-Typeでの切り分けも可能。URL判定より、こっち方が仕様変更に強そうな気がする。
今回はnicovideo gemを使わずに作成。

#!/usr/bin/ruby -Ku

# nicodown2.rb 

require 'rubygems'
require 'mechanize'

video_id = ARGV[0]

agent = WWW::Mechanize.new
agent.post('https://secure.nicovideo.jp/secure/login?site=niconico',
           'mail' => 'メールアドレス',
           'password' => 'パスワード')

doc = Hpricot agent.get_file("http://www.nicovideo.jp/watch/#{video_id}")
video_title = (doc/'title').inner_html.sub(/.*$/, '')

api_result = agent.get_file("http://www.nicovideo.jp/api/getflv?v=#{video_id}")
api_data = Hash.new
api_result.split('&').each do |sentence|
  key, val = sentence.split('=')
  api_data[key] = URI.decode(val)
end

video = agent.get( api_data['url'] )
ext = File.extname(video.filename.gsub('"', '') )

open(video_title + ext, 'wb') {|file| file.write(video.body) }

使い方。

ruby nicodown2.rb sm2020700

結果。

初音ミク オリジナル「うたごえとどけ!にこにこどうが」(Full).flv