ncode-syosetu 0.0.1 → 0.0.2
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/.travis.yml +1 -0
- data/bin/ncode2mobi.rb +14 -0
- data/lib/ncode_syosetu/builder.rb +1 -0
- data/lib/ncode_syosetu/builder/mobi.rb +28 -0
- data/lib/ncode_syosetu/client.rb +18 -5
- data/lib/ncode_syosetu/version.rb +1 -1
- data/ncode_syosetu.gemspec +4 -2
- data/spec/ncode_syosetu/builder/epub3_spec.rb +0 -1
- data/spec/ncode_syosetu/builder/mobi_spec.rb +18 -0
- metadata +39 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 10b33f30c6ef7d271eedf9939d48ebbaef4981dd
|
4
|
+
data.tar.gz: 4ea3ba4763ea0262383572856bbdc478c91eb475
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 499f89dc0565ee74c2ff55b77c33e18ee63eb672bbc2d76e45c3da6666cb588b1ef111819276ffce6a3568843d9abd99f6e7b5440002c498319d077447db3d36
|
7
|
+
data.tar.gz: c76abbf1d1cf7e362b7280ae184a4e9d657713a10100911cc6427da3335852993b2ceedefd66488e2a175969e457fb04e87891883c593575c8c6e448364ff737
|
data/.travis.yml
CHANGED
data/bin/ncode2mobi.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
4
|
+
require 'ncode_syosetu'
|
5
|
+
|
6
|
+
if ARGV.size == 0
|
7
|
+
puts "ncode2mobi.rb ncode [ncode...]"
|
8
|
+
exit
|
9
|
+
end
|
10
|
+
|
11
|
+
ARGV.each do |ncode|
|
12
|
+
novel = NcodeSyosetu.client.get(ncode)
|
13
|
+
novel.write_mobi("#{ncode}.mobi")
|
14
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require "kindlegen"
|
2
|
+
require "tempfile"
|
3
|
+
|
4
|
+
module NcodeSyosetu
|
5
|
+
module Builder
|
6
|
+
class Mobi
|
7
|
+
def self.write(novel, mobi_path)
|
8
|
+
mobi_pathname = Pathname.new(mobi_path)
|
9
|
+
mobi_basename = mobi_pathname.basename.to_s
|
10
|
+
Dir.mktmpdir do |tmpdir|
|
11
|
+
epub_path = File.join(tmpdir, "#{mobi_basename}.epub")
|
12
|
+
NcodeSyosetu::Builder::Epub3.write(novel, epub_path)
|
13
|
+
STDERR.puts Kindlegen.run(epub_path,
|
14
|
+
"-verbose",
|
15
|
+
"-locale", "ja",
|
16
|
+
"-o", mobi_basename)
|
17
|
+
File.rename(File.join(tmpdir, mobi_basename), mobi_path)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
NcodeSyosetu::Model::Novel.class_eval do
|
24
|
+
def write_mobi(file)
|
25
|
+
NcodeSyosetu::Builder::Mobi.write(self, file)
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
data/lib/ncode_syosetu/client.rb
CHANGED
@@ -3,6 +3,15 @@ require "logger"
|
|
3
3
|
|
4
4
|
module NcodeSyosetu
|
5
5
|
class Client
|
6
|
+
class NotFound < StandardError
|
7
|
+
attr_reader :url
|
8
|
+
|
9
|
+
def initialize(url, error_message = nil)
|
10
|
+
super(error_message)
|
11
|
+
@url = url
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
6
15
|
def initialize(logger: Logger.new(STDOUT), sleep: 0.5)
|
7
16
|
@mechanize = Mechanize.new
|
8
17
|
@logger = logger
|
@@ -25,15 +34,12 @@ module NcodeSyosetu
|
|
25
34
|
|
26
35
|
def get_toc(ncode)
|
27
36
|
url = toc_url(ncode)
|
28
|
-
|
29
|
-
NcodeSyosetu::Model::Toc.new(@mechanize.get(url))
|
37
|
+
NcodeSyosetu::Model::Toc.new(get_content(toc_url(ncode)))
|
30
38
|
end
|
31
39
|
|
32
40
|
def get_episode(ncode, title, number)
|
33
41
|
sleep(@sleep)
|
34
|
-
|
35
|
-
@logger.info("GET #{url}...")
|
36
|
-
NcodeSyosetu::Model::Episode.new(title, number, @mechanize.get(url))
|
42
|
+
NcodeSyosetu::Model::Episode.new(title, number, get_content(episode_url(ncode, number)))
|
37
43
|
end
|
38
44
|
|
39
45
|
def toc_url(ncode)
|
@@ -43,5 +49,12 @@ module NcodeSyosetu
|
|
43
49
|
def episode_url(ncode, number)
|
44
50
|
"http://#{NcodeSyosetu::NCODE_HOST_NAME}/#{ncode}/#{number}"
|
45
51
|
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def get_content(url)
|
56
|
+
@logger.info("GET #{url}...")
|
57
|
+
@mechanize.get(url)
|
58
|
+
end
|
46
59
|
end
|
47
60
|
end
|
data/ncode_syosetu.gemspec
CHANGED
@@ -19,13 +19,15 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "mechanize", "~> 2.7.3"
|
22
|
-
spec.add_dependency "gepub", "
|
22
|
+
spec.add_dependency "gepub", "0.6.4.6"
|
23
|
+
spec.add_dependency "kindlegen", "~> 2.9.0"
|
23
24
|
|
24
|
-
spec.add_development_dependency "bundler", "~> 1.5.
|
25
|
+
spec.add_development_dependency "bundler", "~> 1.5.1"
|
25
26
|
spec.add_development_dependency "rake"
|
26
27
|
spec.add_development_dependency "rspec"
|
27
28
|
spec.add_development_dependency "pry"
|
28
29
|
spec.add_development_dependency "guard-rspec"
|
29
30
|
spec.add_development_dependency "spring"
|
30
31
|
spec.add_development_dependency "webmock"
|
32
|
+
spec.add_development_dependency "yard"
|
31
33
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
require "spec_helpers/mock_ncode_data_helper"
|
3
|
+
require "tempfile"
|
4
|
+
|
5
|
+
describe NcodeSyosetu::Builder::Epub3 do
|
6
|
+
include_context "with mock ncode data"
|
7
|
+
|
8
|
+
let(:ncode) { "n00000" }
|
9
|
+
let(:novel) { NcodeSyosetu.client.get(ncode) }
|
10
|
+
|
11
|
+
describe ".write" do
|
12
|
+
it "writes mobi" do
|
13
|
+
Tempfile.open("mobi") do |file|
|
14
|
+
NcodeSyosetu::Builder::Mobi.write(novel, file.path)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ncode-syosetu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- hogelog
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-02-
|
11
|
+
date: 2014-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mechanize
|
@@ -28,30 +28,44 @@ dependencies:
|
|
28
28
|
name: gepub
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.6.4.6
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.6.4.6
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: kindlegen
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.9.0
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.9.0
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
44
58
|
requirements:
|
45
59
|
- - "~>"
|
46
60
|
- !ruby/object:Gem::Version
|
47
|
-
version: 1.5.
|
61
|
+
version: 1.5.1
|
48
62
|
type: :development
|
49
63
|
prerelease: false
|
50
64
|
version_requirements: !ruby/object:Gem::Requirement
|
51
65
|
requirements:
|
52
66
|
- - "~>"
|
53
67
|
- !ruby/object:Gem::Version
|
54
|
-
version: 1.5.
|
68
|
+
version: 1.5.1
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,11 +150,26 @@ dependencies:
|
|
136
150
|
- - ">="
|
137
151
|
- !ruby/object:Gem::Version
|
138
152
|
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: yard
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - ">="
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - ">="
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
139
167
|
description: Ncode syosetu scraper
|
140
168
|
email:
|
141
169
|
- konbu.komuro@gmail.com
|
142
170
|
executables:
|
143
171
|
- ncode2epub.rb
|
172
|
+
- ncode2mobi.rb
|
144
173
|
extensions: []
|
145
174
|
extra_rdoc_files: []
|
146
175
|
files:
|
@@ -153,9 +182,11 @@ files:
|
|
153
182
|
- README.md
|
154
183
|
- Rakefile
|
155
184
|
- bin/ncode2epub.rb
|
185
|
+
- bin/ncode2mobi.rb
|
156
186
|
- lib/ncode_syosetu.rb
|
157
187
|
- lib/ncode_syosetu/builder.rb
|
158
188
|
- lib/ncode_syosetu/builder/epub3.rb
|
189
|
+
- lib/ncode_syosetu/builder/mobi.rb
|
159
190
|
- lib/ncode_syosetu/client.rb
|
160
191
|
- lib/ncode_syosetu/model.rb
|
161
192
|
- lib/ncode_syosetu/model/episode.rb
|
@@ -167,6 +198,7 @@ files:
|
|
167
198
|
- spec/data/n00000/1.html
|
168
199
|
- spec/data/n00000/index.html
|
169
200
|
- spec/ncode_syosetu/builder/epub3_spec.rb
|
201
|
+
- spec/ncode_syosetu/builder/mobi_spec.rb
|
170
202
|
- spec/ncode_syosetu/client_spec.rb
|
171
203
|
- spec/spec_helper.rb
|
172
204
|
- spec/spec_helpers/mock_ncode_data_helper.rb
|
@@ -198,6 +230,7 @@ test_files:
|
|
198
230
|
- spec/data/n00000/1.html
|
199
231
|
- spec/data/n00000/index.html
|
200
232
|
- spec/ncode_syosetu/builder/epub3_spec.rb
|
233
|
+
- spec/ncode_syosetu/builder/mobi_spec.rb
|
201
234
|
- spec/ncode_syosetu/client_spec.rb
|
202
235
|
- spec/spec_helper.rb
|
203
236
|
- spec/spec_helpers/mock_ncode_data_helper.rb
|