mangdown 0.8.4 → 0.8.5
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 +4 -4
- data/db/chapter_script.rb +30 -0
- data/db/environment.rb +12 -0
- data/db/mangdown_db.rb +46 -0
- data/db/migrate/001_add_tables.rb +55 -0
- data/db/pages_script.rb +24 -0
- data/lib/mangdown/chapter.rb +19 -15
- data/lib/mangdown/commands.rb +2 -5
- data/lib/mangdown/mangdown.rb +0 -9
- data/lib/mangdown/popular.rb +6 -5
- data/lib/mangdown/properties.rb +2 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 633df46c12b46c060731d829ece8d2e050385435
|
|
4
|
+
data.tar.gz: 16cb0f86943496a2c184f60487b5adf71456dcba
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 654e248dc8de1af7697ba9adea5caf2492c3be5027d929c8a56964494442204e8bbadf67516e1763a038bd75a5cc607d6910ee4b4d6cb8cb77f7c88ef4da99a4
|
|
7
|
+
data.tar.gz: a1d030830a97b497060af161140b8c4bba5ca6111e8427fa3c3348cc33914e81a9b5a60c62f7c4d29bea11c749d3ca866f33654fbff7263872f981e14708aa37
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require_relative '../lib/mangdown'
|
|
2
|
+
require 'logger'
|
|
3
|
+
|
|
4
|
+
module DB
|
|
5
|
+
extend self
|
|
6
|
+
|
|
7
|
+
def create_chapters!(start_char, end_char, site_id)
|
|
8
|
+
logger = Logger.new('migrate_log.log')
|
|
9
|
+
|
|
10
|
+
a_mangas = Manga.select do |m|
|
|
11
|
+
m.name.downcase[0] >= start_char and
|
|
12
|
+
m.name.downcase[0] <= end_char and
|
|
13
|
+
m.site_id == site_id
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
a_mangas.each do |manga|
|
|
17
|
+
begin
|
|
18
|
+
m = Mangdown::Manga.new(manga.name, manga.uri)
|
|
19
|
+
m.chapters_list.each do |md_hash|
|
|
20
|
+
Chapter.create(md_hash.to_h.merge({manga_id: manga.id}))
|
|
21
|
+
end
|
|
22
|
+
rescue Exception => error
|
|
23
|
+
logger.error(Time.now.to_s + ' ' + error.message)
|
|
24
|
+
next
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
|
data/db/environment.rb
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'active_record'
|
|
2
|
+
require 'yaml'
|
|
3
|
+
require 'erb'
|
|
4
|
+
|
|
5
|
+
require_relative '../db/mangdown_db.rb'
|
|
6
|
+
|
|
7
|
+
require_relative '../models/site.rb'
|
|
8
|
+
require_relative '../models/manga.rb'
|
|
9
|
+
require_relative '../models/chapter.rb'
|
|
10
|
+
require_relative '../models/page.rb'
|
|
11
|
+
|
|
12
|
+
Mangdown::DB.establish_connection
|
data/db/mangdown_db.rb
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
module Mangdown
|
|
2
|
+
class DB
|
|
3
|
+
config_path = File.expand_path(File.dirname(__FILE__) + '/config.yml')
|
|
4
|
+
@@config = YAML.load(ERB.new(File.read(config_path)).result)
|
|
5
|
+
|
|
6
|
+
def self.establish_connection
|
|
7
|
+
ActiveRecord::Base.establish_connection(@@config)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def self.establish_base_connection
|
|
11
|
+
ActiveRecord::Base.establish_connection(
|
|
12
|
+
@@config.merge(
|
|
13
|
+
{
|
|
14
|
+
"database" => "postgres",
|
|
15
|
+
"schema_search_path" => "public",
|
|
16
|
+
}
|
|
17
|
+
)
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.connection
|
|
22
|
+
ActiveRecord::Base.connection
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.create_database
|
|
26
|
+
connection.create_database(
|
|
27
|
+
@@config["database"],
|
|
28
|
+
@@config,
|
|
29
|
+
)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.drop_database
|
|
33
|
+
connection.drop_database(
|
|
34
|
+
@@config["database"],
|
|
35
|
+
)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.migrate
|
|
39
|
+
ActiveRecord::Migrator.migrate(
|
|
40
|
+
File.expand_path(File.dirname(__FILE__) + '/migrate'), nil
|
|
41
|
+
)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
require_relative '../../lib/mangdown'
|
|
2
|
+
|
|
3
|
+
class AddTables < ActiveRecord::Migration
|
|
4
|
+
def up
|
|
5
|
+
create_table :sites do |t|
|
|
6
|
+
t.string :name
|
|
7
|
+
t.string :uri
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
Site.create({ #1
|
|
11
|
+
name: 'mangareader',
|
|
12
|
+
uri: 'http://www.mangareader.net/alphabetical',
|
|
13
|
+
})
|
|
14
|
+
Site.create({ #2
|
|
15
|
+
name: 'mangafox',
|
|
16
|
+
uri: 'http://mangafox.me/manga/',
|
|
17
|
+
})
|
|
18
|
+
|
|
19
|
+
create_table :mangas do |t|
|
|
20
|
+
t.string :name
|
|
21
|
+
t.string :uri
|
|
22
|
+
t.integer :site_id
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
mangareader = Mangdown::MangaList.new( Site.find(1).uri )
|
|
26
|
+
mangafox = Mangdown::MangaList.new( Site.find(2).uri )
|
|
27
|
+
|
|
28
|
+
mangareader.mangas.each do |md_hash|
|
|
29
|
+
Manga.create(md_hash.merge( {site_id: 1}))
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
mangafox.mangas.each do |md_hash|
|
|
33
|
+
Manga.create(md_hash.merge( {site_id: 2}))
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
create_table :chapters do |t|
|
|
37
|
+
t.string :name
|
|
38
|
+
t.string :uri
|
|
39
|
+
t.integer :manga_id
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
create_table :pages do |t|
|
|
43
|
+
t.string :name
|
|
44
|
+
t.string :uri
|
|
45
|
+
t.integer :chapter_id
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def down
|
|
50
|
+
drop_table :sites
|
|
51
|
+
drop_table :mangas
|
|
52
|
+
drop_table :chapters
|
|
53
|
+
drop_table :pages
|
|
54
|
+
end
|
|
55
|
+
end
|
data/db/pages_script.rb
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
require_relative '../lib/mangdown'
|
|
2
|
+
require 'logger'
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
module DB
|
|
6
|
+
extend self
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def create_pages!(chapter_id)
|
|
10
|
+
logger = Logger.new('migration_log.log')
|
|
11
|
+
chapter = Chapter.find(chapter_id)
|
|
12
|
+
m_chapter = Mangdown::MDHash.new({
|
|
13
|
+
name: chapter.name, uri:chapter.uri
|
|
14
|
+
}).to_chapter
|
|
15
|
+
m_chapter.pages.each do |page|
|
|
16
|
+
Page.create({
|
|
17
|
+
name: page.name, uri: page.uri, chapter_id: chapter_id
|
|
18
|
+
})
|
|
19
|
+
end
|
|
20
|
+
rescue Exception => error
|
|
21
|
+
logger.error( error.message )
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
data/lib/mangdown/chapter.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
module Mangdown
|
|
2
2
|
class Chapter
|
|
3
3
|
|
|
4
|
-
attr_reader :name, :uri, :pages
|
|
4
|
+
attr_reader :name, :uri, :pages, :manga, :chapter
|
|
5
5
|
|
|
6
6
|
def initialize(name, uri)
|
|
7
7
|
@manga = name.slice(/(^.+)\s/, 1)
|
|
@@ -67,7 +67,13 @@ module Mangdown
|
|
|
67
67
|
threads.each {|thread| thread.join}
|
|
68
68
|
return @pages.length
|
|
69
69
|
end
|
|
70
|
-
|
|
70
|
+
|
|
71
|
+
# get the number of pages
|
|
72
|
+
def get_num_pages(doc)
|
|
73
|
+
# the select is a dropdown menu of chapter pages
|
|
74
|
+
doc.css('select')[1].css('option').length
|
|
75
|
+
end
|
|
76
|
+
end
|
|
71
77
|
|
|
72
78
|
# mangareader chapter object
|
|
73
79
|
class MRChapter < Chapter
|
|
@@ -75,12 +81,16 @@ module Mangdown
|
|
|
75
81
|
|
|
76
82
|
# get the doc for a given page number
|
|
77
83
|
def get_page_doc(num)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
)
|
|
84
|
+
root = @properties.root
|
|
85
|
+
manga = @manga.gsub(' ', '-')
|
|
86
|
+
uri_str = "#{root}/#{manga}/#{@chapter}/#{num}"
|
|
87
|
+
page_uri = Mangdown::Uri.new(uri_str).downcase
|
|
88
|
+
|
|
89
|
+
Tools.get_doc(page_uri)
|
|
90
|
+
#rescue OpenURI::HTTPError => error
|
|
91
|
+
# print "Chapter: #{@chapter}, page: #{num}, "
|
|
92
|
+
# print " uri: #{page_uri} >> "
|
|
93
|
+
# puts error.message
|
|
84
94
|
end
|
|
85
95
|
|
|
86
96
|
# get the page uri and name
|
|
@@ -92,12 +102,6 @@ module Mangdown
|
|
|
92
102
|
name: (image['alt'] + ".jpg")
|
|
93
103
|
)
|
|
94
104
|
end
|
|
95
|
-
|
|
96
|
-
# get the number of pages
|
|
97
|
-
def get_num_pages(doc)
|
|
98
|
-
# the select is a dropdown menu of chapter pages
|
|
99
|
-
doc.css('select')[1].children.length
|
|
100
|
-
end
|
|
101
105
|
end
|
|
102
106
|
|
|
103
107
|
# mangafox chapter object
|
|
@@ -127,7 +131,7 @@ module Mangdown
|
|
|
127
131
|
|
|
128
132
|
# get the number of pages
|
|
129
133
|
def get_num_pages(doc)
|
|
130
|
-
|
|
134
|
+
super - 1
|
|
131
135
|
end
|
|
132
136
|
end
|
|
133
137
|
end
|
data/lib/mangdown/commands.rb
CHANGED
|
@@ -39,16 +39,13 @@ module M
|
|
|
39
39
|
manga[:name].downcase.include?(search.downcase)
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
|
|
42
|
+
search_result
|
|
43
43
|
end
|
|
44
44
|
|
|
45
45
|
# download a manga (accepts MDHash) between the chapters given
|
|
46
46
|
# by default the entire manga will be downloaded
|
|
47
47
|
def download(manga, first = 0, last = -1)
|
|
48
|
-
|
|
49
|
-
manga = manga.to_manga
|
|
50
|
-
end
|
|
51
|
-
|
|
48
|
+
manga = manga.to_manga
|
|
52
49
|
Tools::Downloader.new(manga, first, last)
|
|
53
50
|
end
|
|
54
51
|
|
data/lib/mangdown/mangdown.rb
CHANGED
|
@@ -2,15 +2,6 @@ module Mangdown
|
|
|
2
2
|
|
|
3
3
|
extend self
|
|
4
4
|
|
|
5
|
-
def to_s
|
|
6
|
-
"<#{self.class}::#{self.object_id}" <<
|
|
7
|
-
@name ? " : #{@name}" : '' <<
|
|
8
|
-
name ? " : #{name}" : '' <<
|
|
9
|
-
@uri ? " : #{@uri}" : '' <<
|
|
10
|
-
uri ? " : #{uri}" : '' <<
|
|
11
|
-
">"
|
|
12
|
-
end
|
|
13
|
-
|
|
14
5
|
def eql?(other)
|
|
15
6
|
(self.name == other.name) and (self.uri == other.uri)
|
|
16
7
|
end
|
data/lib/mangdown/popular.rb
CHANGED
|
@@ -39,11 +39,11 @@ module Mangdown
|
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
def get_pop_page_manga(time)
|
|
42
|
-
root =
|
|
42
|
+
root = Tools.get_root(@uri)
|
|
43
43
|
|
|
44
44
|
num = 30 * (time)
|
|
45
45
|
page = root + '/popular/' + num.to_s
|
|
46
|
-
doc =
|
|
46
|
+
doc = Tools.get_doc(page)
|
|
47
47
|
|
|
48
48
|
last = (@num_mangas > 30) ? 30 : @num_mangas
|
|
49
49
|
@num_mangas -= 30
|
|
@@ -53,9 +53,10 @@ module Mangdown
|
|
|
53
53
|
|
|
54
54
|
def get_manga_on_page(doc, root)
|
|
55
55
|
doc.css('h3 a').map do |a|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
MDHash.new({
|
|
57
|
+
uri: (root + a['href']),
|
|
58
|
+
name: a.text
|
|
59
|
+
})
|
|
59
60
|
end
|
|
60
61
|
end
|
|
61
62
|
end
|
data/lib/mangdown/properties.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: mangdown
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.8.
|
|
4
|
+
version: 0.8.5
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- jphager2
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2014-
|
|
11
|
+
date: 2014-07-09 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: A gem to download Manga, (pg integration in dev)
|
|
14
14
|
email: jphager2@gmail.com
|
|
@@ -17,6 +17,11 @@ extensions: []
|
|
|
17
17
|
extra_rdoc_files: []
|
|
18
18
|
files:
|
|
19
19
|
- LICENSE
|
|
20
|
+
- db/chapter_script.rb
|
|
21
|
+
- db/environment.rb
|
|
22
|
+
- db/mangdown_db.rb
|
|
23
|
+
- db/migrate/001_add_tables.rb
|
|
24
|
+
- db/pages_script.rb
|
|
20
25
|
- doc/help.txt
|
|
21
26
|
- lib/mangdown.rb
|
|
22
27
|
- lib/mangdown/cbz.rb
|