my_manga 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8440264506ef5f3bc650ee0346a8b95e54a7a216bc5029df552e11e76fdd3f96
4
- data.tar.gz: f7a746f9d60632e122c36f1efc9f545d356928af820a6ec39fe3ca091a248393
3
+ metadata.gz: 66b65dd0d7cf22075a8f6f11cf291b7c7532f628d909adc2518cdfa020221b39
4
+ data.tar.gz: 448a42ed930931e3d07ef243ee8c0880a8eada0e7849ebe828023d271005fd11
5
5
  SHA512:
6
- metadata.gz: d7a375244d709e970999e22fe3a549042c3ddea14e21401dd5e4a342cbebd8e2afc7b0461ef7ac5b5ca535fe36ad03723fc154b91cafb8bd57a9c7c9c8b55cd6
7
- data.tar.gz: c95b89df0abf7f677418f6868350cd13d931aa29fde0f52d0665f3594a442b6fdf286e81bf94f6f3c60ca0c5f1190952e539a048ef299ac350a576389544b4ba
6
+ metadata.gz: 38fab144b34e63f4476e9d3e2f8df15e4037a4cb3e6d749376fe20e0f2dde8ecba08f6dcb58f19cdfc84b5982dec49095b48843d55db886c9aaf73d4bd176954
7
+ data.tar.gz: f244506189cd39a8d6271fd1f2a561fd1e4270d3d98bb027a89f93a9f92622937b3f896daf11ae28ec2021c423235061e6b53aa4bf0ebad44717728ae20aaad1
@@ -0,0 +1,114 @@
1
+ class MangaBat < Mangdown::Adapter::Base
2
+ site :manga_bat
3
+
4
+ ROOT = 'https://mangabat.com/'.freeze
5
+ CDNS = [
6
+ %r{^https://s\d.mkklcdnv\d.com/mangakakalot}
7
+ ].freeze
8
+
9
+ attr_reader :root
10
+
11
+ def self.for?(uri_or_site)
12
+ uri_or_site.to_s.start_with?(ROOT) ||
13
+ cdn_uri?(uri_or_site) ||
14
+ uri_or_site.to_s == 'manga_bat'
15
+ end
16
+
17
+ def self.cdn_uri?(uri)
18
+ CDNS.any? { |cdn| uri.match?(cdn) }
19
+ end
20
+
21
+ def initialize(uri, doc, name)
22
+ super
23
+
24
+ @root = ROOT
25
+ end
26
+
27
+ def hydra_opts
28
+ { max_concurrency: 10 }
29
+ end
30
+
31
+ def is_manga_list?(uri = @uri)
32
+ uri =~ /#{root}manga_list/
33
+ end
34
+
35
+ # Must return true/false if uri represents a manga for adapter
36
+ def is_manga?(uri = @uri)
37
+ uri =~ /#{root}manga\//
38
+ end
39
+
40
+ # Must return true/false if uri represents a chapter for adapter
41
+ def is_chapter?(uri = @uri)
42
+ uri =~ /#{root}chapter-serie\/\d+\/chap_\d+/
43
+ end
44
+
45
+ # Must return true/false if uri represents a page for adapter
46
+ def is_page?(uri = @uri)
47
+ self.class.cdn_uri?(uri)
48
+ end
49
+
50
+ # Return Array of Hash with keys: :uri, :name, :site
51
+ def manga_list
52
+ doc.css('.update_item h3 a').map { |a|
53
+ uri = URI.join(root, a[:href]).to_s
54
+
55
+ { uri: uri, name: a.text.strip, site: site }}
56
+ end
57
+
58
+ # Return Hash with keys: :uri, :name, :site
59
+ def manga
60
+ name ||= doc.css('h1.entry-title').first.text.strip
61
+
62
+ { uri: uri, name: name, site: site }
63
+ end
64
+
65
+ # Return Array of Hash with keys: :uri, :name, :site
66
+ def chapter_list
67
+ chapters = doc.css('.chapter-list .row a')
68
+ chapters.reverse.map.with_index do |a, i|
69
+ uri = URI.join(root, a[:href]).to_s
70
+ name = a.text.strip
71
+
72
+ { uri: uri, name: name, chapter: i + 1, site: site }
73
+ end
74
+ end
75
+
76
+ # Return Hash with keys: :uri, :name, :chapter, :manga, :site
77
+ #
78
+ def chapter
79
+ name ||= chapter_name
80
+ chapter ||= name.slice(/[\d\.]+$/)
81
+ manga = chapter_manga_name
82
+
83
+ { uri: uri, name: name, chapter: chapter, manga: manga, site: site }
84
+ end
85
+
86
+ # Return Array of Hash with keys: :uri, :name, :site
87
+ def page_list
88
+ doc.css('.vung_doc img').map do |img|
89
+ uri = img['src']
90
+ name = img.text
91
+
92
+ { uri: uri, name: name, site: site }
93
+ end
94
+ end
95
+
96
+ # Return Hash with keys: :uri, :name, :site
97
+ def page
98
+ name = File.basename(uri.split('/').last) if name.nil?
99
+
100
+ { uri: uri, name: name, site: site }
101
+ end
102
+
103
+ private
104
+
105
+ def chapter_name
106
+ CGI.unescapeHTML(doc.css('h1.name_chapter').text.strip)
107
+ end
108
+
109
+ def chapter_manga_name
110
+ CGI.unescapeHTML(doc.css('.breadcrumb_doc span:nth-child(3)').text.strip)
111
+ end
112
+ end
113
+
114
+
@@ -7,9 +7,11 @@ require 'mangdown/client'
7
7
 
8
8
  require_relative 'my_manga/cli'
9
9
  require_relative 'mangdown/adapters/manga_here'
10
+ require_relative 'mangdown/adapters/manga_bat'
10
11
 
11
12
  Mangdown.register_adapter(:manga_here, MangaHere)
12
13
  M.manga_pages << 'http://www.mangahere.cc/mangalist/'
14
+ Mangdown.register_adapter(:manga_here, MangaBat)
13
15
 
14
16
  module MyManga
15
17
  module_function
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MyManga
4
- VERSION = '2.1.1'
4
+ VERSION = '2.2.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: my_manga
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-03-09 00:00:00.000000000 Z
11
+ date: 2019-04-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -109,6 +109,7 @@ files:
109
109
  - db/environment.rb
110
110
  - db/migrate/001_add_tables.rb
111
111
  - db/migrate/002_add_zine_to_manga.rb
112
+ - lib/mangdown/adapters/manga_bat.rb
112
113
  - lib/mangdown/adapters/manga_here.rb
113
114
  - lib/my_manga.rb
114
115
  - lib/my_manga/add.rb
@@ -148,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
148
149
  - !ruby/object:Gem::Version
149
150
  version: '0'
150
151
  requirements: []
151
- rubyforge_project:
152
- rubygems_version: 2.7.7
152
+ rubygems_version: 3.0.3
153
153
  signing_key:
154
154
  specification_version: 4
155
155
  summary: Manage Manga Downloads