image-dumper 0.7.6 → 0.7.7
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/bin/dumper +0 -0
- data/lib/dumper.rb +2 -2
- data/lib/dumper/dumper.rb +25 -19
- data/lib/dumper/logger.rb +4 -4
- data/lib/dumper/profiles/4chan.rb +1 -1
- data/lib/dumper/profiles/behoimi.rb +1 -1
- data/lib/dumper/profiles/booru.rb +3 -3
- data/lib/dumper/profiles/fakku.rb +4 -4
- data/lib/dumper/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 142125bfd86802635caf3776cfd19bc7feae04fb
|
4
|
+
data.tar.gz: 280d4de2b98d1794ac97cfaf6e38537c06e86d2d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6f8e8b131e24836e9e34a6699b401f4ce38a0ee3a664c64cfd943455292af7bf170b6f0fbba23c32a2a07da61ce1e946fb28ba41fe8f0c4b7ae48e2aea691ff8
|
7
|
+
data.tar.gz: 030273ac86759b0b3affff3cd0d2eed119e0a24c6ed6809610feb65995b558a5ed2763cde53bb0abdf9e2f187d8708cbe65e49e5d0b290946417fc6544aa1852
|
data/bin/dumper
CHANGED
File without changes
|
data/lib/dumper.rb
CHANGED
@@ -37,8 +37,8 @@ require 'dumper/profiles'
|
|
37
37
|
require 'dumper/dumper'
|
38
38
|
require 'dumper/version'
|
39
39
|
|
40
|
-
Dir.glob(File.expand_path("../dumper/profiles/*.rb", __FILE__)).each
|
40
|
+
Dir.glob(File.expand_path("../dumper/profiles/*.rb", __FILE__)).each do |f|
|
41
41
|
require "dumper/profiles/#{File.basename(f).split(?.)[0]}"
|
42
|
-
|
42
|
+
end
|
43
43
|
|
44
44
|
Dumper.is_observed_by Dumper::Logger.new, on_fire: false
|
data/lib/dumper/dumper.rb
CHANGED
@@ -52,7 +52,7 @@ module Dumper
|
|
52
52
|
def shut_up!
|
53
53
|
@verbose == false
|
54
54
|
end
|
55
|
-
alias_method :mute!,
|
55
|
+
alias_method :mute!, :shut_up!
|
56
56
|
|
57
57
|
def verbose!
|
58
58
|
@verbose == true
|
@@ -64,15 +64,15 @@ module Dumper
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def list
|
67
|
-
Dir.glob(File.expand_path('../profiles/*.rb', __FILE__)).sort { |a, b| b <=> a }.map
|
67
|
+
Dir.glob(File.expand_path('../profiles/*.rb', __FILE__)).sort { |a, b| b <=> a }.map do |f|
|
68
68
|
f = File.basename(f).split(?.)[0]
|
69
|
-
|
69
|
+
end
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
def get(path, url, options = {})
|
73
73
|
url = url.to_s
|
74
74
|
errors = 0
|
75
|
-
|
75
|
+
|
76
76
|
begin
|
77
77
|
if url.start_with? 'data:image/'
|
78
78
|
filename = File.join path, options[:filename] || rand(1000).to_s + '.' + url.split('data:image/')[1].split(?;)[0]
|
@@ -81,12 +81,10 @@ module Dumper
|
|
81
81
|
url.gsub /data:image\/png;base64,/, ''
|
82
82
|
|
83
83
|
if File.exists? filename
|
84
|
-
notify_observers error:
|
84
|
+
notify_observers error: "File #{filename} already exists."
|
85
85
|
else
|
86
86
|
notify_observers status: "Downloading base64 image as #{filename}..."
|
87
|
-
File.open(filename, 'wb') { |f|
|
88
|
-
f.write Base64.decode64(url)
|
89
|
-
}
|
87
|
+
File.open(filename, 'wb') { |f| f.write Base64.decode64(url) }
|
90
88
|
end
|
91
89
|
else
|
92
90
|
filename = File.join path, options[:filename] || File.basename(url)
|
@@ -98,13 +96,20 @@ module Dumper
|
|
98
96
|
filename = File.join(path, rand(1000).to_s + '.jpg') unless filename[-4] == ?. || filename[-5] == ?.
|
99
97
|
notify_observers status: "Downloading #{url} as #{filename}..."
|
100
98
|
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
).read
|
99
|
+
url.prepend('http:') if url.start_with?('//')
|
100
|
+
uri = URI(url)
|
101
|
+
http_options = {
|
102
|
+
'User-Agent' => options[:user_agent] || USER_AGENT,
|
103
|
+
'Referer' => options[:referer ] || url
|
107
104
|
}
|
105
|
+
|
106
|
+
http = Net::HTTP.start(uri.host, uri.port)
|
107
|
+
http.use_ssl = uri.scheme == 'https'
|
108
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
109
|
+
|
110
|
+
File.open(filename, 'wb') do |f|
|
111
|
+
f.write http.get(uri.path, http_options).body
|
112
|
+
end
|
108
113
|
end
|
109
114
|
end
|
110
115
|
rescue Exception => e
|
@@ -117,22 +122,23 @@ module Dumper
|
|
117
122
|
return false
|
118
123
|
end
|
119
124
|
end
|
120
|
-
|
125
|
+
|
121
126
|
true
|
122
127
|
end
|
123
128
|
|
124
129
|
def get_generic(url, path, xpath)
|
125
130
|
uri = nil
|
126
|
-
Nokogiri::HTML(open(url)).xpath(xpath).each
|
131
|
+
Nokogiri::HTML(open(url)).xpath(xpath).each do |p|
|
127
132
|
if p.to_s.start_with? ?/
|
128
133
|
uri = URI(url) if uri.nil?
|
129
134
|
p = "#{uri.scheme}://#{uri.host}#{p}"
|
130
135
|
end
|
136
|
+
|
131
137
|
get path, p
|
132
|
-
|
138
|
+
end
|
133
139
|
end
|
134
140
|
end
|
135
|
-
|
141
|
+
|
136
142
|
def method_missing(method, *args, &block)
|
137
143
|
"'#{method.split('get_')[1]}' profile not found."
|
138
144
|
end
|
data/lib/dumper/logger.rb
CHANGED
@@ -35,13 +35,13 @@ module Dumper
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def log_on_screen(data)
|
38
|
-
data.each
|
38
|
+
data.each do |status, message|
|
39
39
|
if status == :critical_error_dump
|
40
|
-
p
|
40
|
+
p message
|
41
41
|
else
|
42
42
|
puts message
|
43
43
|
end
|
44
|
-
|
44
|
+
end
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
@@ -58,4 +58,4 @@ module Dumper
|
|
58
58
|
end
|
59
59
|
|
60
60
|
end
|
61
|
-
end
|
61
|
+
end
|
@@ -23,7 +23,7 @@ module Dumper
|
|
23
23
|
class Booru < Profile
|
24
24
|
def dump(url, path, from, to)
|
25
25
|
page = 0
|
26
|
-
|
26
|
+
|
27
27
|
from.upto(to) { |i|
|
28
28
|
notify_observers status: "--- Page #{i} ---"
|
29
29
|
|
@@ -32,7 +32,7 @@ module Dumper
|
|
32
32
|
Dumper.get path, u.child.child['src'].gsub(/thumbs/, 'img').gsub(/thumbnails\//, 'images/').gsub(/thumbnail_/, '')
|
33
33
|
}
|
34
34
|
}
|
35
|
-
|
35
|
+
|
36
36
|
page += 40
|
37
37
|
}
|
38
38
|
end
|
@@ -52,4 +52,4 @@ module Dumper
|
|
52
52
|
end
|
53
53
|
|
54
54
|
end
|
55
|
-
end
|
55
|
+
end
|
@@ -24,12 +24,12 @@ module Dumper
|
|
24
24
|
def dump(url, path, from, to)
|
25
25
|
url += '/read' unless url.end_with? '/read'
|
26
26
|
errors = 0
|
27
|
-
|
27
|
+
|
28
28
|
cdn = open(url).read.split('window.params.thumbs')[1].split('\/thumbs\/')[0].gsub(/\\\//m, ?/)[5..-1] + '/images/'
|
29
29
|
|
30
30
|
from.upto(to) { |i|
|
31
31
|
return if errors == 3
|
32
|
-
|
32
|
+
|
33
33
|
file = "%03d.jpg" % i
|
34
34
|
filename = "#{cdn}#{file}"
|
35
35
|
|
@@ -37,7 +37,7 @@ module Dumper
|
|
37
37
|
unless Dumper.get path, URI.parse(URI.encode(filename, '[]')), { referer: url }
|
38
38
|
sleep 3
|
39
39
|
errors += 1
|
40
|
-
|
40
|
+
|
41
41
|
file = File.join(path, file).gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
|
42
42
|
File.delete(file) if File.exists? file
|
43
43
|
end
|
@@ -60,4 +60,4 @@ module Dumper
|
|
60
60
|
end
|
61
61
|
|
62
62
|
end
|
63
|
-
end
|
63
|
+
end
|
data/lib/dumper/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: image-dumper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Giovanni Capuano
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: nokogiri
|