class GoogleImageScraper::FileSaver

Public Instance Methods

save(src) click to toggle source
# File lib/google_image_scraper/file_saver.rb, line 7
def save(src)
  binary, extname = if src.start_with?('data:')
                      to_file_from_base64(src)
                    else
                      to_file_from_url(src)
                    end
  fname = "#{Digest::MD5.hexdigest(src)[0...10]}.#{extname}"

  File.write(File.join(dir.path, fname), binary)
end

Private Instance Methods

data_extname(data_prefix) click to toggle source
# File lib/google_image_scraper/file_saver.rb, line 38
def data_extname(data_prefix)
  %r{data:image/(?<extname>.+);base64} =~ data_prefix
  extname
end
dir() click to toggle source
# File lib/google_image_scraper/file_saver.rb, line 20
def dir
  return @dir if @dir

  dirname = Time.new.strftime('%Y%m%d%H%M')
  Dir.mkdir(dirname) unless Dir.exist? dirname
  @dir = Dir.open(dirname)
end
to_file_from_base64(src) click to toggle source
# File lib/google_image_scraper/file_saver.rb, line 28
def to_file_from_base64(src)
  data_prefix, base64 = src.split(',')
  [Base64.decode64(base64), "data.#{data_extname(data_prefix)}"]
end
to_file_from_url(url) click to toggle source
# File lib/google_image_scraper/file_saver.rb, line 33
def to_file_from_url(url)
  meta = URI.open(url)
  [meta.read, meta.content_type.split('/').last]
end