ncode-syosetu 0.0.1 → 0.0.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: ff2aa9194e1415320cd8793822c1ee929176aba4
4
- data.tar.gz: a01ad542929fde267baf9640eb461322303caa34
3
+ metadata.gz: 10b33f30c6ef7d271eedf9939d48ebbaef4981dd
4
+ data.tar.gz: 4ea3ba4763ea0262383572856bbdc478c91eb475
5
5
  SHA512:
6
- metadata.gz: 4f13ee3a7e55d5bc2bcfbd32960ff3d5b87318dd5b7fbdbd3f4a3b062cc3025bbe6f8a5ae0329d91a3f56f399edf12bb69c7dae78e96fee0fd725836fe334c65
7
- data.tar.gz: 04dc39cf944e19c66befa36b26256de46d39e94f02e61410d4427771b643531616d6a62f03363b1da0bc9607f99bfb705c2387cca20ec857cebdba778c7a62c5
6
+ metadata.gz: 499f89dc0565ee74c2ff55b77c33e18ee63eb672bbc2d76e45c3da6666cb588b1ef111819276ffce6a3568843d9abd99f6e7b5440002c498319d077447db3d36
7
+ data.tar.gz: c76abbf1d1cf7e362b7280ae184a4e9d657713a10100911cc6427da3335852993b2ceedefd66488e2a175969e457fb04e87891883c593575c8c6e448364ff737
data/.travis.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  language: ruby
2
2
  rvm:
3
+ - 2.0.0
3
4
  - 2.1.0
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
@@ -1,4 +1,5 @@
1
1
  require "ncode_syosetu/builder/epub3"
2
+ require "ncode_syosetu/builder/mobi"
2
3
 
3
4
  module NcodeSyosetu
4
5
  module Builder
@@ -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
@@ -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
- @logger.info("GET #{url}...")
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
- url = episode_url(ncode, number)
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
@@ -1,3 +1,3 @@
1
1
  module NcodeSyosetu
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
@@ -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", "~> 0.6.4.6"
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.2"
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
@@ -16,4 +16,3 @@ describe NcodeSyosetu::Builder::Epub3 do
16
16
  end
17
17
  end
18
18
  end
19
-
@@ -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.1
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-01 00:00:00.000000000 Z
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.2
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.2
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