mangdown 0.10.0 → 0.10.2

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
  SHA1:
3
- metadata.gz: 8d79f8b057221a2a242c3f84e7e7676da88750b0
4
- data.tar.gz: dc22aa9359778ffb500d40750718d876582477cf
3
+ metadata.gz: 0fcefd9f91de261d15fdb0c165ec5be1852c9507
4
+ data.tar.gz: 23b77f0de9dfd3b57bea6d7d23a2d63ed51165b6
5
5
  SHA512:
6
- metadata.gz: 261ea5c3270de92ae280a901ba8ea3c47c9b239db690b174a88d6aa41a6955ad579195e6087e48dfd1ba312df7965abca4354f2dea3fcbd71bc42f23a9ea7693
7
- data.tar.gz: 672b6ae539b57a2ac4cd3183ac4a0aa7a66c76f46b50558ca55c481a66a3c1a971ed0bf06f27ef5ad9a23101e11816d870559900697450cb0e35d731a4d1c94b
6
+ metadata.gz: fffa3aca22c07425b59007d0d50500a01f28d8292763494ee2518e07348d98f1f8a921e54914db654b297be3c38ce99dae0c7c7cd2d2d87e7b6d3e3aead7acff
7
+ data.tar.gz: 69c6e148cfefb9dd5906860ece93b5d8ead402b4ee71814cabcb33bbb991b6a81af747e4b3d74d2977561a467b3de5fee45c25181ec340891e02b23b1360c615
@@ -20,6 +20,13 @@ module Mangdown
20
20
  @pages.sort_by! {|page| page.name}
21
21
  end
22
22
 
23
+ def inspect
24
+ "#<#{self.class} @name=#{name} @uri=#{uri} " +
25
+ "@pages=[#{pages.first(10).join(',')}" +
26
+ "#{",..." if pages.length > 10}]>"
27
+ end
28
+ alias_method :to_s, :inspect
29
+
23
30
  # enumerates through pages
24
31
  def each
25
32
  block_given? ? @pages.each { |page| yield(page) } : @pages.each
@@ -35,14 +42,16 @@ module Mangdown
35
42
  dir = File.expand_path(dir + '/' + @name)
36
43
  Dir.mkdir(dir) unless Dir.exists?(dir)
37
44
 
38
- threads = []
39
- each do |page|
40
- threads << Thread.new(page) do |this_page|
41
- Tools.no_time_out {this_page.to_page.download_to(dir)}
45
+ # Limit active threads to 20
46
+ each_slice(20) do |slice|
47
+ threads = []
48
+ slice.each do |page|
49
+ threads << Thread.new(page) do |this_page|
50
+ this_page.to_page.download_to(dir)
51
+ end
42
52
  end
53
+ threads.each {|thread| thread.join}
43
54
  end
44
-
45
- threads.each {|thread| thread.join}
46
55
  end
47
56
 
48
57
  private
@@ -1,3 +1,5 @@
1
+ require 'progress_bar'
2
+
1
3
  module Mangdown
2
4
 
3
5
  DOWNLOAD_DIR ||= Dir.home + '/manga'
@@ -16,8 +18,15 @@ module Mangdown
16
18
  @properties = Properties.new(@uri)
17
19
 
18
20
  get_chapters
19
- #@chapters.select! { |chapter| @properties.is_chapter?(chapter) }
21
+ @chapters.select! { |chapter| @properties.is_chapter?(chapter) }
22
+ end
23
+
24
+ def inspect
25
+ "#<#{self.class} @name=#{name} @uri=#{uri} " +
26
+ "@chapters=[#{chapters.first(10).join(',')}" +
27
+ "#{",..." if chapters.length > 10}]>"
20
28
  end
29
+ alias_method :to_s, :inspect
21
30
 
22
31
  # download to current directory convenience method
23
32
  def download(*args)
@@ -26,11 +35,14 @@ module Mangdown
26
35
 
27
36
  # download using enumerable
28
37
  def download_to(dir, start = 0, stop = -1)
29
- dir += "/#{name}"
38
+ start, stop = validate_indeces!(start, stop)
39
+ dir = setup_download_dir!(dir)
40
+
41
+ bar = progress_bar(start, stop)
30
42
  reset(start, stop)
31
- Dir.mkdir(dir) unless Dir.exist?(dir)
32
43
  loop do
33
44
  self.next.to_chapter.download_to(dir)
45
+ bar.increment!
34
46
  end
35
47
  end
36
48
 
@@ -72,5 +84,29 @@ module Mangdown
72
84
 
73
85
  @chapters.reverse! if @properties.reverse
74
86
  end
87
+
88
+ def chapter_indeces(start, stop)
89
+ [chapters.index(chapters[start]), chapters.index(chapters[stop])]
90
+ end
91
+
92
+ def setup_download_dir!(dir)
93
+ dir += "/#{name}"
94
+ Dir.mkdir(dir) unless Dir.exist?(dir)
95
+ dir
96
+ end
97
+
98
+ def validate_indeces!(start, stop)
99
+ i_start, i_stop = chapter_indeces(start, stop)
100
+ if i_stop < i_stop
101
+ error = 'Last index must be greater than first index'
102
+ raise ArgumentError, error
103
+ end
104
+ [i_start, i_stop]
105
+ end
106
+
107
+ # create a progress bar object for start and stop indexes
108
+ def progress_bar(start, stop)
109
+ ProgressBar.new(stop - start + 1)
110
+ end
75
111
  end
76
112
  end
@@ -5,7 +5,7 @@ module Mangdown
5
5
  end
6
6
 
7
7
  def ==(other)
8
- puts "You may want to use :eql?"
8
+ # puts "You may want to use :eql?"
9
9
  super
10
10
  end
11
11
  end
@@ -54,10 +54,14 @@ module Mangdown
54
54
  @hash[key]
55
55
  end
56
56
 
57
- def inspect
57
+ def to_hash
58
58
  @hash
59
59
  end
60
- alias_method :to_hash, :inspect
60
+
61
+ def inspect
62
+ to_hash.to_s
63
+ end
64
+ alias_method :to_s, :inspect
61
65
 
62
66
  def type
63
67
  @properties.type
@@ -5,6 +5,7 @@ module Mangdown
5
5
  attr_reader :name, :uri
6
6
 
7
7
  def initialize(name, uri)
8
+ name.gsub!(/_/, ' ') && name.gsub!(/-/, '')
8
9
  @name = name.sub(/([^\d])(\d+)(\.\w+)$/) {
9
10
  "#{Regexp.last_match[1]}" +
10
11
  "#{Regexp.last_match[2].to_s.rjust(3, '0')}" +
@@ -29,7 +30,7 @@ module Mangdown
29
30
  # don't download again
30
31
  return if File.exist?(path)
31
32
  image = open(uri).read
32
- File.open(path, 'wb') {|file| file.write(image)}
33
+ Tools.no_time_out { File.open(path, 'wb') { |file| file.write(image) } }
33
34
  rescue SocketError => error
34
35
  STDERR.puts( "#{error.message} | #{name} | #{uri}" )
35
36
  end
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.10.0
4
+ version: 0.10.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - jphager2
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-16 00:00:00.000000000 Z
11
+ date: 2015-04-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -81,47 +81,19 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.1.0
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: progress_bar
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '2.14'
90
- type: :development
89
+ version: 1.0.3
90
+ type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '2.14'
97
- - !ruby/object:Gem::Dependency
98
- name: guard-rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- name: reek
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- version: '0'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
96
+ version: 1.0.3
125
97
  - !ruby/object:Gem::Dependency
126
98
  name: webmock
127
99
  requirement: !ruby/object:Gem::Requirement