Class: ImageDownloader

Inherits:
Object
  • Object
show all
Defined in:
lib/yamd.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(base_dir = Dir.pwd) ⇒ ImageDownloader

Returns a new instance of ImageDownloader.



90
91
92
# File 'lib/yamd.rb', line 90

def initialize(base_dir = Dir.pwd)
  @base_dir = base_dir
end

Class Method Details

.format_page_name(page, chapter, manga) ⇒ Object



118
119
120
121
122
# File 'lib/yamd.rb', line 118

def self.format_page_name(page, chapter, manga)
  # TODO: usar log10 de chapter.pages.size para determinar padding de zeros
  page_path = Addressable::URI.parse(page.image_url).path
  format("%04d", page.number) + File.extname(page_path)
end

Instance Method Details

#download(manga) ⇒ Object



94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/yamd.rb', line 94

def download(manga)
  manga_dir = Pathname.new(@base_dir).join(manga.name + '/')
  if manga_dir.exist?
    p 'Manga dir exists. Skipping each existing chapter. If the script was forced to stop the last downloaded chapter can be incomplete. Remove it to be downloaded again.'
  else
    Dir.mkdir(manga_dir.to_s)
  end
  manga.chapters.each do | chapter |
    chapter_dir = manga_dir.join(chapter.name + '/')
    unless chapter_dir.exist?
      Dir.mkdir(chapter_dir.to_s)
      chapter.pages.each do | page |
        page_name = self.class.format_page_name(page, chapter, manga)
        page_abs_path = chapter_dir.join(page_name).to_s
        File.open(page_abs_path, 'wb') do | f |
          open(page.image_url, 'rb') do | image |
            f.write(image.read)
          end
        end
      end
    end # end "unless chapter_dir.exist?"
  end
end