mangdown 0.12.2 → 0.13.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/mangdown.rb +7 -5
- data/lib/mangdown/adapter.rb +74 -21
- data/lib/mangdown/adapter/mangafox.rb +7 -7
- data/lib/mangdown/adapter/mangahere.rb +7 -7
- data/lib/mangdown/adapter/mangapanda.rb +1 -1
- data/lib/mangdown/adapter/mangareader.rb +7 -2
- data/lib/mangdown/adapter/no_adapter_error.rb +9 -0
- data/lib/mangdown/adapter/wiemanga.rb +8 -8
- data/lib/mangdown/cbz.rb +29 -28
- data/lib/mangdown/chapter.rb +87 -57
- data/lib/mangdown/commands.rb +7 -4
- data/lib/mangdown/equality.rb +9 -0
- data/lib/mangdown/manga.rb +44 -40
- data/lib/mangdown/manga_list.rb +12 -13
- data/lib/mangdown/mangdown_hash.rb +36 -16
- data/lib/mangdown/page.rb +48 -9
- data/lib/mangdown/properties.rb +12 -10
- data/lib/mangdown/tools.rb +18 -5
- data/lib/mangdown/uri.rb +4 -4
- data/spec/lib/mangdown/chapter_spec.rb +3 -1
- data/spec/lib/mangdown/{mangdown_spec.rb → equality_spec.rb} +5 -8
- metadata +7 -7
- data/lib/mangdown/mangdown.rb +0 -19
- data/lib/mangdown/popular.rb +0 -53
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0d85a1d5f0bf974970fcc26e817583bfcf16226b
|
4
|
+
data.tar.gz: 9b8108fd038b01dd78eda987753c38a4e21c0f94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c61a0df176b08ed90f5f4a56a8215aa027af64a2f3ed89a7ae722c5cf8d7b32e005b2d8c4851b7ba23abfae80506651e8459b8ee2b66d4c761572cafc6406034
|
7
|
+
data.tar.gz: 638112e648008bde76e405c5309b19223cde0a9d684ee4827cfd0901b4170ca723edabab0374884799ef937f4b2e429144a30b7dcc4728f4a78ce999a0100608
|
data/lib/mangdown.rb
CHANGED
@@ -4,7 +4,11 @@ require 'yaml'
|
|
4
4
|
require 'zip'
|
5
5
|
require 'filemagic'
|
6
6
|
|
7
|
-
|
7
|
+
module Mangdown
|
8
|
+
ADAPTERS = []
|
9
|
+
|
10
|
+
DOWNLOAD_DIR ||= Dir.home + '/manga'
|
11
|
+
end
|
8
12
|
|
9
13
|
require_relative 'mangdown/adapter'
|
10
14
|
adapters = "#{File.expand_path('../mangdown/adapter', __FILE__)}/*.rb"
|
@@ -12,18 +16,16 @@ Dir[adapters].each do |f|
|
|
12
16
|
require_relative f
|
13
17
|
end
|
14
18
|
|
19
|
+
require_relative 'mangdown/equality'
|
15
20
|
require_relative 'mangdown/tools'
|
16
21
|
require_relative 'mangdown/properties'
|
17
22
|
require_relative 'mangdown/uri'
|
18
23
|
require_relative 'mangdown/page'
|
19
24
|
require_relative 'mangdown/chapter'
|
20
25
|
require_relative 'mangdown/manga'
|
21
|
-
require_relative 'mangdown/popular'
|
22
26
|
require_relative 'mangdown/manga_list.rb'
|
23
27
|
require_relative 'mangdown/cbz'
|
24
28
|
require_relative 'mangdown/commands'
|
25
29
|
require_relative 'mangdown/mangdown_hash'
|
26
30
|
|
27
|
-
|
28
|
-
puts '*** Use "M.help" for commands ***'
|
29
|
-
end
|
31
|
+
|
data/lib/mangdown/adapter.rb
CHANGED
@@ -3,22 +3,43 @@ module Mangdown
|
|
3
3
|
class Base
|
4
4
|
|
5
5
|
attr_reader :root
|
6
|
-
def initialize(uri, doc)
|
7
|
-
@uri, @doc = uri, doc
|
8
|
-
#@root
|
9
|
-
#@manga_list_css
|
10
|
-
#@chapter_list_css
|
11
|
-
#@manga_name_css
|
12
|
-
#@
|
13
|
-
#@
|
14
|
-
#@
|
15
|
-
#@
|
16
|
-
#@
|
17
|
-
#@
|
6
|
+
def initialize(uri, doc, name)
|
7
|
+
@uri, @doc, @name = uri, doc, name
|
8
|
+
#@root = ''
|
9
|
+
#@manga_list_css = ''
|
10
|
+
#@chapter_list_css = ''
|
11
|
+
#@manga_name_css = ''
|
12
|
+
#@chapter_name_css = ''
|
13
|
+
#@chapter_manga_name_css = ''
|
14
|
+
#@chapter_number_css = ''
|
15
|
+
#@manga_list_uri = ''
|
16
|
+
#@manga_link_prefix = ''
|
17
|
+
#@reverse_chapters = true || false
|
18
|
+
#@manga_uri_regex = /.*/i
|
19
|
+
#@chapter_uri_regex = /.*/i
|
20
|
+
#@page_uri_regex = /.*/i
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.type
|
24
|
+
name.split('::').last.downcase.to_sym
|
18
25
|
end
|
19
26
|
|
20
27
|
def type
|
21
|
-
self.class.
|
28
|
+
self.class.type
|
29
|
+
end
|
30
|
+
|
31
|
+
# Override this if you want to use an adapter name for a site that is
|
32
|
+
# not matched in the site's url
|
33
|
+
# e.g. CoolAdapterName < Adapter::Base
|
34
|
+
# def site
|
35
|
+
# "mangareader"
|
36
|
+
# end
|
37
|
+
def self.site
|
38
|
+
type.to_s
|
39
|
+
end
|
40
|
+
|
41
|
+
def site
|
42
|
+
self.class.site
|
22
43
|
end
|
23
44
|
|
24
45
|
# Must return true/false if uri represents a manga for adapter
|
@@ -38,7 +59,36 @@ module Mangdown
|
|
38
59
|
|
39
60
|
# Must return a string
|
40
61
|
def manga_name
|
41
|
-
|
62
|
+
if is_manga?
|
63
|
+
doc.css(@manga_name_css).text
|
64
|
+
elsif is_chapter?
|
65
|
+
chapter_manga_name
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def chapter_name
|
70
|
+
if @name
|
71
|
+
@name.sub(/\s(\d+)$/) { |num| ' ' + num.to_i.to_s.rjust(5, '0') }
|
72
|
+
else
|
73
|
+
doc.css(@chapter_name_css).text
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def chapter_manga_name
|
78
|
+
if @name
|
79
|
+
@name.slice(/(^.+)\s/, 1)
|
80
|
+
else
|
81
|
+
doc.css(@chapter_manga_name_css).text
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def chapter_number
|
86
|
+
raise NoMethodError, "Not a chapter" unless is_chapter?
|
87
|
+
if @name
|
88
|
+
@name.slice(/\d+\z/).to_i
|
89
|
+
else
|
90
|
+
doc.css(@chapter_number_css).text
|
91
|
+
end
|
42
92
|
end
|
43
93
|
|
44
94
|
# Must return a uri for a page given the arguments
|
@@ -61,11 +111,12 @@ module Mangdown
|
|
61
111
|
# [manga_uri, manga_name, adapter_type]
|
62
112
|
# If block given, then the block may alter this array
|
63
113
|
# Only valid mangas should be returned (using is_manga?(uri))
|
64
|
-
def
|
114
|
+
def collect_manga_list
|
65
115
|
doc.css(@manga_list_css).map { |a|
|
66
|
-
manga = ["#{@manga_link_prefix}#{a[:href]}",a.text.strip,type]
|
67
|
-
|
68
|
-
|
116
|
+
manga = ["#{@manga_link_prefix}#{a[:href]}", a.text.strip, type]
|
117
|
+
if is_manga?(manga.first)
|
118
|
+
block_given? ? yield(manga) : manga
|
119
|
+
end
|
69
120
|
}.compact
|
70
121
|
end
|
71
122
|
|
@@ -75,9 +126,11 @@ module Mangdown
|
|
75
126
|
# Only valid chapters should be returned (using is_chapter?(uri))
|
76
127
|
def manga_chapters
|
77
128
|
chapters = doc.css(@chapter_list_css).map { |a|
|
78
|
-
|
79
|
-
|
80
|
-
|
129
|
+
link = root + a[:href].sub(root, '')
|
130
|
+
chapter = [link, a.text.strip, type]
|
131
|
+
if is_chapter?(chapter.first)
|
132
|
+
block_given? ? yield(chapter) : chapter
|
133
|
+
end
|
81
134
|
}.compact
|
82
135
|
@reverse_chapters ? chapters.reverse : chapters
|
83
136
|
end
|
@@ -2,21 +2,21 @@ module Mangdown
|
|
2
2
|
class Mangafox < Adapter::Base
|
3
3
|
Mangdown::ADAPTERS << self
|
4
4
|
|
5
|
-
def initialize(uri, doc)
|
5
|
+
def initialize(uri, doc, name)
|
6
6
|
super
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
@manga_list_css = 'div.manga_list li a'
|
8
|
+
@chapter_list_css = 'a.tips'
|
9
|
+
@root = 'http://mangafox.me'
|
10
10
|
@manga_list_uri = "#{@root}/manga"
|
11
11
|
@manga_name_css = "#title h1"
|
12
|
-
|
13
|
-
|
12
|
+
@manga_link_prefix = ''
|
13
|
+
@reverse_chapters = true
|
14
14
|
@manga_uri_regex =
|
15
15
|
/#{@root}\/manga\/[^\/]+?\//i
|
16
16
|
@chapter_uri_regex =
|
17
17
|
/#{@manga_uri_regex}(v\d+\/)?(c\d+\/)(1\.html)/i
|
18
18
|
@page_uri_regex = /.+\.(png|jpg|jpeg)$/i
|
19
|
-
|
19
|
+
end
|
20
20
|
|
21
21
|
def manga_name
|
22
22
|
CGI.unescapeHTML(super.sub(/ Manga/, '').downcase).upcase
|
@@ -2,21 +2,21 @@ module Mangdown
|
|
2
2
|
class Mangahere < Adapter::Base
|
3
3
|
Mangdown::ADAPTERS << self
|
4
4
|
|
5
|
-
def initialize(uri, doc)
|
5
|
+
def initialize(uri, doc, name)
|
6
6
|
super
|
7
|
-
|
8
|
-
|
7
|
+
@root = 'http://www.mangahere.co'
|
8
|
+
@manga_list_css = 'a.manga_info'
|
9
9
|
@manga_name_css = 'h1.title'
|
10
|
-
|
10
|
+
@chapter_list_css = '.detail_list ul a'
|
11
11
|
@manga_list_uri = "#{@root}/mangalist/"
|
12
|
-
|
13
|
-
|
12
|
+
@manga_link_prefix = ''
|
13
|
+
@reverse_chapters = true
|
14
14
|
@manga_uri_regex =
|
15
15
|
/#{@root}\/manga\/([^\/]+\/)?/i
|
16
16
|
@chapter_uri_regex =
|
17
17
|
/#{@manga_uri_regex}(v\d+\/)?(c\d+\/)(1\.html)?/i
|
18
18
|
@page_uri_regex = /.+\.(png|jpg|jpeg)$/i
|
19
|
-
|
19
|
+
end
|
20
20
|
|
21
21
|
def manga_name
|
22
22
|
CGI.unescapeHTML(super.downcase).upcase
|
@@ -2,7 +2,7 @@ module Mangdown
|
|
2
2
|
class Mangareader < Adapter::Base
|
3
3
|
Mangdown::ADAPTERS << self
|
4
4
|
|
5
|
-
def initialize(uri, doc)
|
5
|
+
def initialize(uri, doc, name)
|
6
6
|
super
|
7
7
|
@root ||= 'http://www.mangareader.net'
|
8
8
|
@manga_list_css = 'ul.series_alpha li a'
|
@@ -23,7 +23,8 @@ module Mangdown
|
|
23
23
|
end
|
24
24
|
|
25
25
|
def build_page_uri(uri, manga, chapter, page_num)
|
26
|
-
|
26
|
+
slug = slug(manga)
|
27
|
+
"#{root}/#{slug}/#{chapter}/#{page_num}"
|
27
28
|
end
|
28
29
|
|
29
30
|
def num_pages
|
@@ -45,6 +46,10 @@ module Mangdown
|
|
45
46
|
def page_image
|
46
47
|
doc.css('img')[0]
|
47
48
|
end
|
49
|
+
|
50
|
+
def slug(string)
|
51
|
+
string.gsub(' ', '-').gsub(/[:,]/, '')
|
52
|
+
end
|
48
53
|
end
|
49
54
|
end
|
50
55
|
|
@@ -2,30 +2,30 @@ module Mangdown
|
|
2
2
|
class Wiemanga < Adapter::Base
|
3
3
|
Mangdown::ADAPTERS << self
|
4
4
|
|
5
|
-
def initialize(uri, doc)
|
5
|
+
def initialize(uri, doc, name)
|
6
6
|
super
|
7
|
-
|
7
|
+
@root = 'http://www.wiemanga.com'
|
8
8
|
@manga_list_uri =
|
9
9
|
"#{@root}/search/?name_sel=contain&author_sel=contain" +
|
10
10
|
"&completed_series=either"
|
11
11
|
@manga_name_css = '.bookmessagebox h1'
|
12
|
-
|
13
|
-
|
12
|
+
@manga_list_css = 'a.resultbookname'
|
13
|
+
@chapter_list_css =
|
14
14
|
'.chapterlist tr:not(:first-child) .col1 a'
|
15
|
-
|
16
|
-
|
15
|
+
@manga_link_prefix = ''
|
16
|
+
@reverse_chapters = true
|
17
17
|
@manga_uri_regex = /#{@root}\/manga\/([^\/]+)(\.html)?/i
|
18
18
|
@chapter_uri_regex =
|
19
19
|
/#{@root}\/chapter\/([^\/]+)\/(\d+)(\/|\.html)?/i
|
20
20
|
@page_uri_regex = /.+\.(png|jpg|jpeg)$/i
|
21
|
-
|
21
|
+
end
|
22
22
|
|
23
23
|
def manga_name
|
24
24
|
super.sub(/ Manga$/, "")
|
25
25
|
end
|
26
26
|
|
27
27
|
def build_page_uri(uri, manga, chapter, page_num)
|
28
|
-
"#{uri}-#{page_num}.html"
|
28
|
+
"#{uri.sub(/\/+$/, '')}-#{page_num}.html"
|
29
29
|
end
|
30
30
|
|
31
31
|
def num_pages
|
data/lib/mangdown/cbz.rb
CHANGED
@@ -4,56 +4,57 @@ module Mangdown
|
|
4
4
|
extend ::Mangdown::Tools
|
5
5
|
|
6
6
|
def all(main_dir)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
7
|
+
main_dir = String(main_dir)
|
8
|
+
# Make sure all sub dirs are checked
|
9
|
+
validate_file_or_dir_names(main_dir)
|
10
|
+
# Make sure all sub dirs have files checked
|
11
|
+
each_dir_or_page(main_dir) { |dir| validate_file_or_dir_names(dir)}
|
12
|
+
# Create cbz files for all sub dirs
|
13
|
+
cbz_sub_dirs(main_dir)
|
14
|
+
end
|
15
|
+
|
16
|
+
def one(dir)
|
17
|
+
dir = String(dir)
|
18
|
+
validate_file_or_dir_names(dir)
|
19
|
+
cbz_dir(dir)
|
13
20
|
end
|
14
21
|
|
15
22
|
private
|
16
23
|
def cbz_dir(dir)
|
24
|
+
dir = dir.to_s.sub(/\/*$/, "")
|
25
|
+
|
17
26
|
zip_file_name = dir + '.cbz'
|
18
|
-
|
27
|
+
return if File.exist?(zip_file_name)
|
19
28
|
|
20
29
|
::Zip::File.open(zip_file_name, ::Zip::File::CREATE) do |zip|
|
21
|
-
|
22
|
-
|
30
|
+
file_matcher = File.join(dir, '**', '**')
|
31
|
+
dir << "/"
|
32
|
+
|
33
|
+
Dir.glob(file_matcher).each do |file|
|
34
|
+
filename = file.sub(dir, '')
|
35
|
+
zip.add(filename, file)
|
23
36
|
end
|
24
37
|
end
|
25
38
|
end
|
26
39
|
|
27
40
|
def cbz_sub_dirs(dir)
|
28
|
-
|
41
|
+
each_dir_or_page(dir) do |sub_dir|
|
29
42
|
cbz_dir(sub_dir)
|
30
43
|
end
|
31
44
|
end
|
32
45
|
|
33
|
-
def
|
34
|
-
Dir.glob(dir + '/*').each do |
|
35
|
-
|
36
|
-
|
37
|
-
yield(file_name)
|
46
|
+
def each_dir_or_page(dir)
|
47
|
+
Dir.glob(dir + '/*').each do |filename|
|
48
|
+
next if filename.include?('.cbz')
|
49
|
+
yield(filename)
|
38
50
|
end
|
39
51
|
end
|
40
52
|
|
41
53
|
def validate_file_or_dir_names(dir)
|
42
|
-
|
43
|
-
checked_name =
|
54
|
+
each_dir_or_page(dir) do |file_name|
|
55
|
+
checked_name = Tools.valid_path_name(file_name)
|
44
56
|
File.rename(file_name, checked_name)
|
45
57
|
end
|
46
58
|
end
|
47
|
-
|
48
|
-
def check_file_or_dir_name(name)
|
49
|
-
# slice the last number in the file or directory name,
|
50
|
-
# which will be either the page number or the chapter number
|
51
|
-
num = name.slice(/(\d+)(\.jpg)*\Z/, 1)
|
52
|
-
return name unless num
|
53
|
-
|
54
|
-
zeros_to_add = (3-num.length) > 0 ? (3-num.length) : 0
|
55
|
-
num = "0" * zeros_to_add + num
|
56
|
-
name.sub(/(\d+)(\.jpg)*\Z/, num + '\2')
|
57
|
-
end
|
58
59
|
end
|
59
60
|
end
|
data/lib/mangdown/chapter.rb
CHANGED
@@ -1,24 +1,33 @@
|
|
1
1
|
module Mangdown
|
2
|
-
|
2
|
+
class Chapter
|
3
3
|
|
4
4
|
include Equality
|
5
5
|
include Enumerable
|
6
|
-
attr_reader :name, :uri, :pages, :manga, :chapter
|
7
6
|
|
8
|
-
|
7
|
+
attr_reader :uri, :pages
|
8
|
+
|
9
|
+
def initialize(uri, name = nil, manga = nil, chapter = nil)
|
9
10
|
# use a valid name
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
@
|
14
|
-
@
|
15
|
-
|
16
|
-
|
17
|
-
|
11
|
+
@name = name
|
12
|
+
@manga = manga
|
13
|
+
@chapter = chapter
|
14
|
+
@uri = Mangdown::Uri.new(uri)
|
15
|
+
@properties = Properties.new(@uri, nil, nil, name)
|
16
|
+
|
17
|
+
load_pages
|
18
|
+
end
|
19
|
+
|
20
|
+
def name
|
21
|
+
@name ||= @properties.chapter_name
|
22
|
+
end
|
23
|
+
|
24
|
+
def manga
|
25
|
+
@manga ||= @properties.manga_name
|
26
|
+
end
|
18
27
|
|
19
|
-
|
20
|
-
@
|
21
|
-
|
28
|
+
def chapter
|
29
|
+
@chapter ||= @properties.chapter_number
|
30
|
+
end
|
22
31
|
|
23
32
|
def inspect
|
24
33
|
"#<#{self.class} @name=#{name} @uri=#{uri} " +
|
@@ -28,76 +37,97 @@ module Mangdown
|
|
28
37
|
alias_method :to_s, :inspect
|
29
38
|
|
30
39
|
# enumerates through pages
|
31
|
-
def each
|
32
|
-
|
40
|
+
def each(&block)
|
41
|
+
@pages.each(&block)
|
42
|
+
end
|
43
|
+
|
44
|
+
# explicit conversion to chapter
|
45
|
+
def to_chapter
|
46
|
+
self
|
47
|
+
end
|
48
|
+
|
49
|
+
def to_path
|
50
|
+
@path ||= set_path
|
51
|
+
end
|
52
|
+
|
53
|
+
def set_path(dir = nil)
|
54
|
+
dir ||= File.join(DOWNLOAD_DIR, manga)
|
55
|
+
path = File.join(dir, name)
|
56
|
+
path = Tools.valid_path_name(path)
|
57
|
+
@path = Tools.relative_or_absolute_path(path)
|
33
58
|
end
|
34
59
|
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
60
|
+
def cbz(dir = to_path)
|
61
|
+
CBZ.one(dir)
|
62
|
+
end
|
39
63
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
failed = []
|
64
|
+
# download all pages in a chapter
|
65
|
+
def download_to(dir = nil)
|
66
|
+
pages = map(&:to_page)
|
67
|
+
failed = []
|
45
68
|
succeeded = []
|
46
69
|
|
47
|
-
|
48
|
-
|
70
|
+
setup_download_dir!(dir)
|
71
|
+
|
72
|
+
Tools.hydra_streaming(pages) do |stage, page, data = nil|
|
49
73
|
case stage
|
50
74
|
when :failed
|
51
75
|
failed << page
|
52
76
|
when :succeeded
|
53
77
|
succeeded << page
|
54
78
|
when :before
|
55
|
-
|
56
|
-
!File.exist?(path)
|
79
|
+
!page.file_exist?(to_path)
|
57
80
|
when :body
|
58
|
-
unless failed.include?(page)
|
59
|
-
path = page.file_path(dir)
|
60
|
-
File.open(path, 'ab') { |file| file.write(data) }
|
61
|
-
end
|
81
|
+
page.append_file_data(to_path, data) unless failed.include?(page)
|
62
82
|
when :complete
|
63
|
-
unless failed.include?(page)
|
64
|
-
path = page.file_path(dir)
|
65
|
-
FileUtils.mv(path, "#{path}.#{Tools.file_type(path)}")
|
66
|
-
end
|
83
|
+
page.append_file_ext(to_path) unless failed.include?(page)
|
67
84
|
end
|
68
85
|
end
|
69
|
-
FileUtils.rm_rf(dir) if succeeded.empty?
|
70
86
|
|
71
|
-
|
72
|
-
end
|
87
|
+
FileUtils.rm_r(to_path) if succeeded.empty?
|
73
88
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
89
|
+
{ failed: failed, succeeded: succeeded }
|
90
|
+
end
|
91
|
+
|
92
|
+
private
|
93
|
+
def setup_download_dir!(dir)
|
94
|
+
set_path(dir)
|
95
|
+
FileUtils.mkdir_p(to_path) unless Dir.exists?(to_path)
|
96
|
+
end
|
78
97
|
|
98
|
+
def load_pages
|
99
|
+
@pages ||= []
|
100
|
+
|
101
|
+
fetch_each_page do |page| @pages << page end
|
102
|
+
@pages.sort_by!(&:name)
|
103
|
+
end
|
104
|
+
|
105
|
+
# get page objects for all pages in a chapter
|
106
|
+
def fetch_each_page
|
107
|
+
pages = build_page_hashes
|
79
108
|
Tools.hydra(pages) do |page, body|
|
80
|
-
|
109
|
+
page = get_page(page.uri, Nokogiri::HTML(body))
|
110
|
+
yield(page)
|
81
111
|
end
|
82
112
|
end
|
83
113
|
|
84
|
-
# get the
|
85
|
-
def
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
uri:
|
90
|
-
|
114
|
+
# get the docs for number of pages
|
115
|
+
def build_page_hashes
|
116
|
+
(1..@properties.num_pages).map { |num|
|
117
|
+
uri_str = @properties.build_page_uri(uri, manga, chapter, num)
|
118
|
+
uri = Mangdown::Uri.new(uri_str).downcase
|
119
|
+
MDHash.new(uri: uri, name: num, chapter: name, manga: manga)
|
120
|
+
}
|
91
121
|
end
|
92
122
|
|
93
123
|
# get the page name and uri
|
94
124
|
def get_page(uri, doc)
|
95
125
|
properties = Properties.new(uri, nil, doc)
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
)
|
126
|
+
uri = properties.page_image_src
|
127
|
+
page = properties.page_image_name
|
128
|
+
site = properties.type
|
129
|
+
|
130
|
+
MDHash.new(uri: uri, name: page, chapter: name, manga: manga, site: site)
|
101
131
|
end
|
102
132
|
end
|
103
133
|
end
|