manga_fetch 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/bin/manga_fetch +50 -8
- data/lib/manga_fetch/downloader.rb +5 -5
- data/lib/manga_fetch/fetcher.rb +16 -12
- data/lib/manga_fetch.rb +0 -7
- data.tar.gz.sig +0 -0
- metadata +3 -3
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b7548ec57ffa2092d910e848cf1a1f05949d9b57
|
4
|
+
data.tar.gz: 37c6122db7107bc6d4715482d72302dc0753e5b5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 812d5ad2a4dd2bca5f45e9cdafef83716b71f5dcea29ba9967872aada10523eb05dfb563ccdcb57a01f0767b152f5914adbbc6fc5c128d99b3a5e75894e3bd27
|
7
|
+
data.tar.gz: 0e78afcf03633e425b21e9b12a6b3a804608d7227fa5fcaea9ef1368c3b69da646b77778b217f6df9ac7afd3928521ac1a082ff98f1f028179d808d5abdf991e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/bin/manga_fetch
CHANGED
@@ -1,14 +1,56 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
3
|
+
require 'optparse'
|
4
4
|
|
5
|
-
|
5
|
+
argv = OptionParser.new do |opts|
|
6
|
+
opts.banner = "Usage: manga_scrap <name> <min..max>"
|
7
|
+
$threads = 8
|
8
|
+
$verbose = true
|
9
|
+
$debug = false
|
10
|
+
$verbose = false if ENV["VERBOSE"] == "false"
|
11
|
+
$debug = true if ENV["DEBUG"] == "true"
|
12
|
+
$dir = "/tmp"
|
6
13
|
|
7
|
-
|
8
|
-
|
14
|
+
opts.on("--threads=N", "Number of threads to use (default: 1)") do |v|
|
15
|
+
$threads = Integer(v)
|
16
|
+
end
|
9
17
|
|
10
|
-
|
18
|
+
opts.on("--dir=path", "--output=path", "Output directory (default: /tmp)") do |v|
|
19
|
+
$dir = v
|
20
|
+
end
|
11
21
|
|
12
|
-
|
13
|
-
|
14
|
-
|
22
|
+
opts.on("--verbose", "Display infos on stderr (default)") do
|
23
|
+
$verbose = true
|
24
|
+
end
|
25
|
+
|
26
|
+
opts.on("--no-verbose", "Display infos on stderr") do
|
27
|
+
$verbose = true
|
28
|
+
end
|
29
|
+
|
30
|
+
opts.on("--debug", "-d", "Developper mode") do
|
31
|
+
$debug = true
|
32
|
+
end
|
33
|
+
end.parse!
|
34
|
+
|
35
|
+
if $debug
|
36
|
+
require_relative "../lib/manga_fetch"
|
37
|
+
else
|
38
|
+
require "manga_fetch"
|
39
|
+
end
|
40
|
+
|
41
|
+
m = argv[1].match(/\A(\d+)\.\.(\d+)\Z/)
|
42
|
+
nums = (m[1].to_i .. m[2].to_i).to_a
|
43
|
+
|
44
|
+
nb_elem_by_list = (nums.size.to_f / $threads).ceil
|
45
|
+
lists = nums.each_slice(nb_elem_by_list).to_a
|
46
|
+
|
47
|
+
STDERR.puts "Starting #{$threads} threads..." if $verbose
|
48
|
+
lists.map.with_index do |current_nums, idx|
|
49
|
+
t = Thread.new do
|
50
|
+
STDERR.puts "Started #{idx+1} / #{$threads} threads" if $verbose
|
51
|
+
bot = MangaFetch::Fetcher.new
|
52
|
+
list = bot.fetch(name: argv[0], num: current_nums, download: true, dir: $dir).flatten.sort
|
53
|
+
end
|
54
|
+
sleep 0.5
|
55
|
+
t
|
56
|
+
end.map(&:join)
|
@@ -1,12 +1,12 @@
|
|
1
1
|
module MangaFetch::Downloader
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
image = @agent.get src
|
2
|
+
# Download an image defined with `src` in the directory `prefix`. It uses `@agent` by default
|
3
|
+
def download_image(src: nil, prefix: "/tmp", agent: nil)
|
4
|
+
prefix ||= "/tmp"
|
5
|
+
image = (agent || @agent).get src
|
6
6
|
path = File.expand_path image.uri.to_s.split("/")[-3..-1].join("/"), prefix
|
7
7
|
Dir.mkdir File.expand_path image.uri.to_s.split("/")[-3..-3].join("/"), prefix rescue nil
|
8
8
|
Dir.mkdir File.expand_path image.uri.to_s.split("/")[-3..-2].join("/"), prefix rescue nil
|
9
9
|
File.write path, image.body
|
10
|
-
STDERR.puts "File [".blue + path.yellow + "] saved"
|
10
|
+
STDERR.puts "File [".blue + path.yellow + "] saved (".blue + path.yellow + ")".blue
|
11
11
|
end
|
12
12
|
end
|
data/lib/manga_fetch/fetcher.rb
CHANGED
@@ -1,24 +1,27 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
require_relative "downloader"
|
2
|
+
|
3
|
+
class MangaFetch::Fetcher
|
4
|
+
include MangaFetch::Downloader
|
3
5
|
|
4
6
|
# Fetch some pages form the manga named like `name`
|
5
|
-
def fetch(name: "berserk", num: nil)
|
6
|
-
init_agent("http://www.mangareader.net/#{name}")
|
7
|
+
def fetch(name: "berserk", num: nil, download: false, dir: nil)
|
8
|
+
init_agent(url: "http://www.mangareader.net/#{name}")
|
7
9
|
|
8
10
|
images = if num.is_a? Fixnum
|
9
|
-
[ fetch_one(num) ]
|
11
|
+
[ fetch_one(num: num, download: download, dir: dir) ]
|
10
12
|
elsif num.is_a? Enumerable
|
11
|
-
fetch_list(num)
|
13
|
+
fetch_list(nums: num, download: download, dir: dir)
|
12
14
|
end
|
13
15
|
end
|
14
16
|
|
15
|
-
def init_agent(url)
|
17
|
+
private def init_agent(url: nil)
|
16
18
|
@agent = Mechanize.new
|
17
19
|
@agent.get url
|
18
20
|
@main = @agent.page
|
19
21
|
end
|
20
22
|
|
21
|
-
|
23
|
+
# fetch every images of the tome `num` loaded in `@main`
|
24
|
+
def fetch_one(num: 1, download: false, dir: nil)
|
22
25
|
link = "#{@main.uri.to_s}/#{num}"
|
23
26
|
STDERR.puts "Fetching Tome [".blue + "#{num}".yellow + "]".blue if $verbose
|
24
27
|
first_page = @agent.get(link)
|
@@ -28,15 +31,16 @@ module MangaFetch::Fetcher
|
|
28
31
|
STDERR.puts "Fetching Tome [".blue + "#{num}".yellow + "] Image [".blue + "#{i} / #{last_page_num}".yellow + "]".blue if $verbose
|
29
32
|
current_page = @agent.get "#{first_page.uri.to_s}/#{i}"
|
30
33
|
image = current_page.at("#img")[:src]
|
31
|
-
STDERR.puts "-> ".blue + image.red if $verbose
|
34
|
+
STDERR.puts "[#{download ? "D" : "S"}] -> ".blue + image.red if $verbose
|
35
|
+
download_image(src: image, prefix: dir) if download
|
32
36
|
image
|
33
37
|
end
|
34
|
-
|
35
38
|
end
|
36
39
|
|
37
|
-
|
40
|
+
# fetch every images of the tomes `nums` loaded in `@main`
|
41
|
+
def fetch_list(nums: nil, download: false, dir: nil)
|
38
42
|
ones = []
|
39
|
-
nums.map{|num| ones << fetch_one(num:
|
43
|
+
nums.map{|num| ones << fetch_one(num: num, download: download, dir: dir) }
|
40
44
|
ones
|
41
45
|
end
|
42
46
|
end
|
data/lib/manga_fetch.rb
CHANGED
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: manga_fetch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Arthur Poulet
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
tcYkgfqUJPitIJx1RvWZpIyH5uJhRUYK3+vU9nMOxez5WbIlC1TtpByKAPMX+sht
|
32
32
|
gib3AoIT8jh/2w==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2016-08-
|
34
|
+
date: 2016-08-27 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: nomorebeer
|
@@ -93,7 +93,7 @@ dependencies:
|
|
93
93
|
- - ">="
|
94
94
|
- !ruby/object:Gem::Version
|
95
95
|
version: 2.7.5
|
96
|
-
description:
|
96
|
+
description:
|
97
97
|
email: arthur.poulet@mailoo.org
|
98
98
|
executables:
|
99
99
|
- manga_fetch
|
metadata.gz.sig
CHANGED
Binary file
|