ニコニコ動画のタイプ判定を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