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