Perlでニコニコ動画のflvとコメントxmlをダウンロードする (Yusukebe::Tech)
perl - 勝手に添削 - ニコニコ動画ダウンローダー (404 Blog Not Found)
と言う訳でRubyの勉強のためにネタをパクってきました。ソースは以下。
#!/usr/bin/env ruby -Ku
require 'yaml'
require 'rubygems'
require 'mechanize'
require 'cgi'
video_id = ARGV.first.scan(/sm\d+$/).first
agent = WWW::Mechanize.new
agent.post('http://www.nicovideo.jp/login', YAML.load_file('nico.yaml'))
agent.get_file('http://www.nicovideo.jp/watch/' + video_id)
content = agent.get_file('http://www.nicovideo.jp/api/getflv?v=' + video_id)
params = content.scan(/([^&]+)=([^&]*)/).inject({}){|h, v| h[v[0]] = v[1]; h}
video_url = CGI.unescape(params['url'])
puts "downloading url : " + video_url
video_file = open(video_id + '.flv', 'w')
video_file.print agent.get_file(video_url)
video_file.close
使い方としては、要mechanizeで、
% sudo gem install mechanize
した後、
-
- mail
- your@mail.jp
-
- password
- yourpass
をnico.yamlに保存して、
% ruby nicodown.rb sm673443
な感じ。
% ruby nicodown.rb http://www.nicovideo.jp/watch/sm673443
もok。
以下思った点。
1) mechanizeをログイン状態の保持だけに使うのは、狐狩りにミサイル持ってくるようなもんだと思うんだけど、何が適当なんだろ。
2) mechanizeでpostの引数がArray of Arrayなのが気持ち悪い。
3) まだ全然よく分かってない(ファイルの書き出しが分からなくてリファレンス引いたww)
まあでも2ヶ月でFizzBuzzが書けないよレベルからニコ動落とせるよレベルになれて嬉しい。あんまり変わってない気もするけど。