ダウンロード速度が遅かったらやめる
Ruby+Curlで大きなファイルをダウンロードしつつ、速度を監視して遅かったら切断する。
ダウンロード速度はだんだん上がってくるものなので、開始後しばらくは遅くても切断しないようにした。
普通にeasy performしても大量のwarningが出たのでverboseを潰した。
brew install curl gem install curb
require 'rubygems' require 'curb' MIN_SPEED = 100 # kbps if ARGV.size < 2 STDERR.puts "ruby #{$0} http://example.com/file.avi output.avi" exit 1 end url, out_fname = ARGV[0...2] class DownloadError < StandardError end $VERBOSE = nil begin open(out_fname, 'w+') do |out| i = 0 Curl::Easy.perform(url) do |easy| easy.on_body do |data| out.print data i+=1 if i % 1000 == 0 puts "#{easy.download_speed/1000}kbps" if easy.download_speed/1000 < MIN_SPEED raise DownloadError.new("download too slow (#{easy.download_speed/1000}kbps)") end end end end end rescue => e STDERR.puts e end $VERBOSE = true