Sha256: 2331c06699e8b0cadcf625200f0cd4a400c5d2af663c7ed36c89be8795257c15

Contents?: true

Size: 1.52 KB

Versions: 1

Compression:

Stored size: 1.52 KB

Contents

#! /usr/bin/env ruby
# coding: utf-8
#! /usr/bin/ruby1.9.3

STORAGE_DIR = ENV["HOME"] + "/inbox/image"
LOG_DIR = STORAGE_DIR + "/log"

require "pp"
require "date"

require "rubygems"
gem "nokogiri"
require "nokogiri"
require "open-uri"

gem "imagut"
require "imagut"
#require "imagut/urllogger.rb"

def anchored_images(url)
  doc = Nokogiri::HTML(open(url))

  results = doc.xpath("//a").map{|a|
    next unless a.attributes.has_key?("href")
    a.attributes["href"].value
  }.compact.select{|str| str =~ /(jpg|jpeg|png|gif)$/}
  results
end

#常に log に追記する。
# log に url が含まれていても、
# 最後にアクセスしようとした日を更新するため。
# 古いのを削除とかはしない。
#
#log を確認する。
# url が含まれていれば false を返す。
# url が含まれていなければ、log に書き込んで取得。
def storage(url)
  command = "wget --directory-prefix=#{STORAGE_DIR} #{url}"
  puts command
  system command
end

#anchors = anchored_images('/home/ippei/tmp/getimages/1457652.html')
#doc = Nokogiri::HTML(open('http://blog.livedoor.jp/wakusoku/archives/1457652.html'))
ul = Imagut::UrlLogger.new(LOG_DIR)

ARGV.each do |url|
  if ul.include?(url)
    puts "Already downloaded: #{url}"
  else
    anchors = anchored_images(url)
    anchors.each do |img_url|
      if ul.include?(img_url)
        puts "Already exist: #{img_url}"
      else
        puts "Getting: #{img_url}"
        storage(img_url)
        sleep rand(3)
      end
      ul.write img_url
    end
  end
  ul.write url
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
imagut-0.0.4 bin/getimage