ニコニコ動画をダウンロードするRuby1.87対応スクリプト

ニコニコ動画をダウンロードするRuby1.87対応スクリプトメモ。



ニコニコ動画をダウンロードするRuby1.87対応スクリプト


ruby1.9対応のスクリプトは、「ニコニコ動画ダウンロードするやつ」で他の方が公開してくださっています。


本記事では、上記のスクリプトをruby1.87で動くように少し修正したものを公開しています。


やったことは、ruby1.9にしか存在しないメソッドをruby1.87の対応するメソッドに変えたぐらいです。


# -- coding: utf-8

require "rubygems"
require "mechanize"
require "nokogiri"
require "trollop"

ID="mail"
PW="pass"

opts = Trollop.options do
	opt :dir, "save dir", :default => File.expand_path("../", __FILE__)
end

agent = Mechanize.new
agent.post("https://secure.nicovideo.jp/secure/login?site=niconico", "mail" => ID, "password" => PW

ARGV.each do |url_or_id|
	id = url_or_id[%r![^/]+$!]
	# for get nicohistory cookie
	# http://www.trinity-site.net/blog/?p=225

	agent.get("http://www.nicovideo.jp/watch/#{id}") 

	s = agent.post('http://flapi.nicovideo.jp/api/getflv', :v => id)
	video_url = URI.unescape(s.body).scan(/&url=(.+?)&/).first.to_s
	ext = case video_url[/smile\\?(.)=/, 1]
		when "m"; "mp4"
		when "s"; "swf"
		else "flv"
	end

	link = URI.unescape(s.body).scan(/&link=(.+?)&/).first.to_s
	title = (Nokogiri::HTML.parse agent.get(link).body).at_css('.video_title').text
	# ダメ文字全角化 http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D
	title = title.gsub(/[\\/\\\\?*:|><]/) {|m| [m.ord + 65248].pack('U*')}

	cookie = agent.cookies.map(&:to_s).join("; ")
	save_path = "#{opts[:dir]}/#{id}-#{title}.#{ext}"
	cmd = %Q!wget -c -O '#{save_path}' --header="Cookie: #{cookie}" "#{video_url}"!
	system(cmd)
end


参考リンク


ニコニコ動画ダウンロードするやつ


著者プロフィール
Webサイトをいくつか作っています。
著者プロフィール