class Kindai::SpreadDownloader
Attributes
book_path[RW]
retry_count[RW]
spread[RW]
Public Class Methods
new_from_spread(spread)
click to toggle source
# File lib/kindai/spread_downloader.rb, line 7 def self.new_from_spread(spread) raise TypeError, "#{spread} is not Kindai::Spread" unless spread.is_a? Kindai::Spread me = self.new me.spread = spread me.retry_count = 30 me.book_path = Pathname.new(ENV["HOME"]).to_s me end
Public Instance Methods
create_directory()
click to toggle source
# File lib/kindai/spread_downloader.rb, line 23 def create_directory path = File.join self.book_path, "original" Dir.mkdir(path) unless File.directory?(path) end
delete()
click to toggle source
# File lib/kindai/spread_downloader.rb, line 33 def delete return File.delete(self.spread_path) && true rescue false end
download()
click to toggle source
# File lib/kindai/spread_downloader.rb, line 16 def download return false if self.has_file? self.create_directory self.download_spread return true end
has_file?()
click to toggle source
# File lib/kindai/spread_downloader.rb, line 37 def has_file? File.size? self.spread_path end
spread_path()
click to toggle source
# File lib/kindai/spread_downloader.rb, line 28 def spread_path path = File.join self.book_path, "original", "%03d.jpg" % self.spread.spread_number File.expand_path path end
Protected Instance Methods
download_spread()
click to toggle source
# File lib/kindai/spread_downloader.rb, line 43 def download_spread failed_count = 0 begin Kindai::Util.logger.info "downloading " + [self.spread.book.author, self.spread.book.title, "spread #{self.spread.spread_number} / #{self.spread.book.total_spread}"].join(' - ') Kindai::Util.rich_download(spread.image_uri, self.spread_path) rescue Interrupt => err Kindai::Util.logger.error "#{err.class}: #{err.message}" exit 1 rescue StandardError, TimeoutError => err Kindai::Util.logger.warn "failed (#{failed_count+1}/#{self.retry_count}) #{err.class}: #{err.message}" raise err if failed_count == self.retry_count Kindai::Util.logger.info "sleep and retry" failed_count += 1 sleep 20 retry end end