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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 6443de1c0cb154bfc68bd4b1f5cea81f58946693
4
- data.tar.gz: 8726490e4b2178e714ab66db8ee27afafe4107db
3
+ metadata.gz: 633df46c12b46c060731d829ece8d2e050385435
4
+ data.tar.gz: 16cb0f86943496a2c184f60487b5adf71456dcba
5
5
  SHA512:
6
- metadata.gz: 767c5e5aeb49ff9b2e28d16035ff718d054bded41e78cf690c53659593663469eb98fd22ac03cef0f6b08bbe58c50637450427150f998e319c76c08affc3497a
7
- data.tar.gz: 064ca3d79312925c8b919dc9383aedfc8c8884ec8aa40abb923053b1ba1fa9f076a892f2a817a47c44d1146bee3e5a7a84c7d89ed249c94746857c173614993f
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
+
@@ -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
@@ -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
@@ -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
+
@@ -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
- end
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
- doc = Tools.get_doc(
79
- Mangdown::Uri.new(
80
- @properties.root +
81
- "/#{@manga.gsub(' ', '-')}/#{@chapter}/#{num}"
82
- ).downcase
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
- doc.css('select')[1].children.length - 1
134
+ super - 1
131
135
  end
132
136
  end
133
137
  end
@@ -39,16 +39,13 @@ module M
39
39
  manga[:name].downcase.include?(search.downcase)
40
40
  end
41
41
 
42
- search_result.empty? ? (puts "Could not find manga") : search_result
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
- if manga.class == MDHash
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
 
@@ -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
@@ -39,11 +39,11 @@ module Mangdown
39
39
  end
40
40
 
41
41
  def get_pop_page_manga(time)
42
- root = ::Mangdown::Tools.get_root(@uri)
42
+ root = Tools.get_root(@uri)
43
43
 
44
44
  num = 30 * (time)
45
45
  page = root + '/popular/' + num.to_s
46
- doc = ::Mangdown::Tools.get_doc(page)
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
- h = MDHash.new
57
- h[:uri], h[:name] = (root + a['href']), a.text
58
- h
56
+ MDHash.new({
57
+ uri: (root + a['href']),
58
+ name: a.text
59
+ })
59
60
  end
60
61
  end
61
62
  end
@@ -9,6 +9,8 @@ module Mangdown
9
9
  case site
10
10
  when /mangareader/
11
11
  mangareader
12
+ when /mangapanda/
13
+ mangareader
12
14
  when /mangafox/
13
15
  mangafox
14
16
  else
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
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-06-12 00:00:00.000000000 Z
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