my_manga 2.1.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
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