Hatena::Groupkakisute

g5nの書き殴り

2007-12-20

指定した名前のファイルを HTTP GET する

20:48 | 指定した名前のファイルを HTTP GET する - g5nの書き殴り を含むブックマーク はてなブックマーク - 指定した名前のファイルを HTTP GET する - g5nの書き殴り

ふつうのファイルがインターネットに載っててそれの URL のリストがあって、それを GET したい。たぶん wgetオプションで同じことは出来るんだろうけど、難しすぎるので書いてしまった。URLのリストはとりあえず __END__ に書くことに。

httpgetfiles.rb

require "fileutils"
require "logger"
require "uri"
require "open-uri"

include FileUtils
@logger = Logger.new(STDERR)

def http_get(c)
  if !File.exist?(c)
    mkdir_p(File.dirname(c)) unless File.directory?(File.dirname(c))
    atime = Time.now
    begin
      open(c, "w"){|f|
        @logger.info("getting #{c}")
        open("http://#{c}"){|src|
          atime = src.last_modified
          f.write(src.read.to_s)
          File.utime(atime, atime, c) if atime
        }
      }
    rescue
      @logger.warn("#{c}: #{$!.inspect}")
      rm c
    end
  else
    @logger.info("exists #{c} (not get)")
  end
end

DATA.read.scan(/\S+/).each{|path|
  http_get(path)
}
__END__
www.google.co.jp/intl/ja/about.html
www.google.co.jp/intl/ja/contact/index.html

nqjxtqgaqmnqjxtqgaqm2013/12/17 15:02rjayolbljtvuf, <a href="http://www.gsecmphkjo.com/">jmmtepgnqn</a> , [url=http://www.ydplktqubr.com/]auhlfysmkq[/url], http://www.bfelbbfnrd.com/ jmmtepgnqn