Class: MangaBat
- Inherits:
-
Mangdown::Adapter::Base
- Object
- Mangdown::Adapter::Base
- MangaBat
- Defined in:
- lib/mangdown/adapters/manga_bat.rb
Constant Summary collapse
- ROOT =
'https://mangabat.com/'.freeze
- CDNS =
[ %r{^https://s\d.mkklcdnv\d.com/mangakakalot} ].freeze
Instance Attribute Summary collapse
-
#root ⇒ Object
readonly
Returns the value of attribute root.
Class Method Summary collapse
Instance Method Summary collapse
-
#chapter ⇒ Object
Return Hash with keys: :uri, :name, :chapter, :manga, :site.
-
#chapter_list ⇒ Object
Return Array of Hash with keys: :uri, :name, :site.
- #hydra_opts ⇒ Object
-
#initialize(uri, doc, name) ⇒ MangaBat
constructor
A new instance of MangaBat.
-
#is_chapter?(uri = @uri) ⇒ Boolean
Must return true/false if uri represents a chapter for adapter.
-
#is_manga?(uri = @uri) ⇒ Boolean
Must return true/false if uri represents a manga for adapter.
- #is_manga_list?(uri = @uri) ⇒ Boolean
-
#is_page?(uri = @uri) ⇒ Boolean
Must return true/false if uri represents a page for adapter.
-
#manga ⇒ Object
Return Hash with keys: :uri, :name, :site.
-
#manga_list ⇒ Object
Return Array of Hash with keys: :uri, :name, :site.
-
#page ⇒ Object
Return Hash with keys: :uri, :name, :site.
-
#page_list ⇒ Object
Return Array of Hash with keys: :uri, :name, :site.
Constructor Details
Instance Attribute Details
#root ⇒ Object (readonly)
Returns the value of attribute root.
9 10 11 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 9 def root @root end |
Class Method Details
.cdn_uri?(uri) ⇒ Boolean
17 18 19 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 17 def self.cdn_uri?(uri) CDNS.any? { |cdn| uri.match?(cdn) } end |
.for?(uri_or_site) ⇒ Boolean
11 12 13 14 15 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 11 def self.for?(uri_or_site) uri_or_site.to_s.start_with?(ROOT) || cdn_uri?(uri_or_site) || uri_or_site.to_s == 'manga_bat' end |
Instance Method Details
#chapter ⇒ Object
Return Hash with keys: :uri, :name, :chapter, :manga, :site
78 79 80 81 82 83 84 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 78 def chapter name ||= chapter_name chapter ||= name.slice(/[\d\.]+$/) manga = chapter_manga_name { uri: uri, name: name, chapter: chapter, manga: manga, site: site } end |
#chapter_list ⇒ Object
Return Array of Hash with keys: :uri, :name, :site
66 67 68 69 70 71 72 73 74 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 66 def chapter_list chapters = doc.css('.chapter-list .row a') chapters.reverse.map.with_index do |a, i| uri = URI.join(root, a[:href]).to_s name = a.text.strip { uri: uri, name: name, chapter: i + 1, site: site } end end |
#hydra_opts ⇒ Object
27 28 29 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 27 def hydra_opts { max_concurrency: 10 } end |
#is_chapter?(uri = @uri) ⇒ Boolean
Must return true/false if uri represents a chapter for adapter
41 42 43 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 41 def is_chapter?(uri = @uri) uri =~ /#{root}chapter-serie\/\d+\/chap_\d+/ end |
#is_manga?(uri = @uri) ⇒ Boolean
Must return true/false if uri represents a manga for adapter
36 37 38 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 36 def is_manga?(uri = @uri) uri =~ /#{root}manga\// end |
#is_manga_list?(uri = @uri) ⇒ Boolean
31 32 33 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 31 def is_manga_list?(uri = @uri) uri =~ /#{root}manga_list/ end |
#is_page?(uri = @uri) ⇒ Boolean
Must return true/false if uri represents a page for adapter
46 47 48 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 46 def is_page?(uri = @uri) self.class.cdn_uri?(uri) end |
#manga ⇒ Object
Return Hash with keys: :uri, :name, :site
59 60 61 62 63 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 59 def manga name ||= doc.css('h1.entry-title').first.text.strip { uri: uri, name: name, site: site } end |
#manga_list ⇒ Object
Return Array of Hash with keys: :uri, :name, :site
51 52 53 54 55 56 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 51 def manga_list doc.css('.update_item h3 a').map { |a| uri = URI.join(root, a[:href]).to_s { uri: uri, name: a.text.strip, site: site }} end |
#page ⇒ Object
Return Hash with keys: :uri, :name, :site
97 98 99 100 101 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 97 def page name = File.basename(uri.split('/').last) if name.nil? { uri: uri, name: name, site: site } end |
#page_list ⇒ Object
Return Array of Hash with keys: :uri, :name, :site
87 88 89 90 91 92 93 94 |
# File 'lib/mangdown/adapters/manga_bat.rb', line 87 def page_list doc.css('.vung_doc img').map do |img| uri = img['src'] name = img.text { uri: uri, name: name, site: site } end end |