narou 3.4.7.1 → 3.6.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of narou might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 40f1f0d7736259e40738de61af66039fd1344c00bd21fb7e30e2cdec8a9d1f86
4
- data.tar.gz: 3744f318af16e36ed8018fd948a38f6e03eee6716b4dfc3d8c45e33d56cd0738
3
+ metadata.gz: b9fcbe89c262fd6d8234351075c7bb9228498751df529c4f6def90d45cb6bca6
4
+ data.tar.gz: 1d3033f43c00d3dcfe3fcace49bc8e24915b91965716214ffe3e19a7b0a0f392
5
5
  SHA512:
6
- metadata.gz: 1d1a1e57cc5bf72066079265f6fa2d7b1ebe17f4c822fc8d0338afd6bad661cdc484a5f986e5f6c3702f789c31b19f57d86720140ae06e0e7f5039607e69527a
7
- data.tar.gz: b3dafdecd49cf9ccebd2812948377e0bedbabf02a084001eeb941e82ac84d41344a66f534646869e891ba64f40ae51b43b8096898a92774d2e22adc88c518580
6
+ metadata.gz: 11d21bbf7d64ce68a99e61988ca1c79f74b61832af90a52aea62d9a1e5e270164c7d364eca64188af5c390bdcb4beeefc633089f5fc6b27a084aa7d6d1848b5f
7
+ data.tar.gz: 39222977f49fc571f61d617503a4d14af9b8072f7f83265330b3244682e3fc38644ee644388a85ab65a6d4e5da9fee2b22e85134df502afc2deb1e48677fd59b
@@ -12,8 +12,8 @@ jobs:
12
12
  - checkout
13
13
 
14
14
  - run:
15
- name: Which bundler?
16
- command: bundle -v
15
+ name: Install bundler 2.1.4
16
+ command: gem install bundler:2.1.4
17
17
 
18
18
  # Restore bundle cache
19
19
  - restore_cache:
@@ -8,7 +8,7 @@ AllCops:
8
8
  - "narou.gemspec"
9
9
  - "spec/**/*"
10
10
  DisplayCopNames: true
11
- TargetRubyVersion: 2.3
11
+ TargetRubyVersion: 2.5
12
12
 
13
13
  Metrics/ClassLength:
14
14
  CountComments: false
@@ -30,7 +30,7 @@ Metrics/BlockNesting:
30
30
  Metrics/CyclomaticComplexity:
31
31
  Max: 8
32
32
 
33
- Metrics/LineLength:
33
+ Layout/LineLength:
34
34
  Max: 140
35
35
  AllowURI: true
36
36
  URISchemes:
@@ -56,9 +56,6 @@ Style/AndOr:
56
56
  Style/BlockDelimiters:
57
57
  Enabled: false
58
58
 
59
- Style/BracesAroundHashParameters:
60
- Enabled: false
61
-
62
59
  Style/CollectionMethods:
63
60
  PreferredMethods:
64
61
  detect: "detect"
@@ -106,7 +103,7 @@ Style/NumericLiterals:
106
103
 
107
104
  # has_ から始まるメソッドは許可する
108
105
  Naming/PredicateName:
109
- NamePrefixBlacklist:
106
+ ForbiddenPrefixes:
110
107
  - "is_"
111
108
  - "have_"
112
109
  NamePrefix:
@@ -116,7 +113,7 @@ Naming/PredicateName:
116
113
  Style/GlobalVars:
117
114
  Enabled: false
118
115
 
119
- Layout/IndentFirstHashElement:
116
+ Layout/FirstHashElementIndentation:
120
117
  Enabled: false
121
118
 
122
119
  Layout/LeadingCommentSpace:
@@ -137,7 +134,7 @@ Style/NegatedIf:
137
134
  Style/Not:
138
135
  Enabled: true
139
136
 
140
- PercentLiteralDelimiters:
137
+ Style/PercentLiteralDelimiters:
141
138
  PreferredDelimiters:
142
139
  "%": "!!"
143
140
  "%i": "()"
@@ -158,7 +155,7 @@ Style/RedundantReturn:
158
155
  Style/RedundantSelf:
159
156
  Enabled: false
160
157
 
161
- SignalException:
158
+ Style/SignalException:
162
159
  EnforcedStyle: only_raise
163
160
 
164
161
  Layout/SpaceAfterComma:
@@ -179,10 +176,10 @@ Style/StringLiterals:
179
176
  Style/SymbolProc:
180
177
  Enabled: true
181
178
 
182
- Layout/Tab:
179
+ Layout/IndentationStyle:
183
180
  Enabled: true
184
181
 
185
- Layout/TrailingBlankLines:
182
+ Layout/TrailingEmptyLines:
186
183
  Enabled: false
187
184
 
188
185
  Style/TrailingCommaInArrayLiteral:
@@ -197,7 +194,7 @@ Style/TrivialAccessors:
197
194
  Style/UnlessElse:
198
195
  Enabled: true
199
196
 
200
- VariableName:
197
+ Naming/VariableName:
201
198
  EnforcedStyle: snake_case
202
199
 
203
200
  Style/WordArray:
@@ -221,13 +218,13 @@ Style/FrozenStringLiteralComment:
221
218
  Layout/MultilineOperationIndentation:
222
219
  Enabled: false
223
220
 
224
- Layout/IndentHeredoc:
221
+ Layout/HeredocIndentation:
225
222
  Enabled: true
226
223
 
227
224
  Style/NumericPredicate:
228
225
  Enabled: false
229
226
 
230
- Lint/HandleExceptions:
227
+ Lint/SuppressedException:
231
228
  Enabled: false
232
229
 
233
230
  Lint/RescueException:
@@ -241,3 +238,6 @@ Style/FormatStringToken:
241
238
 
242
239
  Layout/EmptyLineAfterGuardClause:
243
240
  Enabled: false
241
+
242
+ Style/StderrPuts:
243
+ Enabled: false
@@ -1,6 +1,35 @@
1
1
  更新履歴 - ChangeLog
2
2
  ====================
3
3
 
4
+ 3.6.0: 2021/01/02
5
+ -----------------
6
+ #### 修正内容
7
+ - Ruby 3.0 に対応
8
+
9
+
10
+ 3.5.1: 2020/03/21
11
+ -----------------
12
+ #### 修正内容
13
+ - 小説家になろう系列の挿絵をダウンロード時に、サムネイル画像を取得するように
14
+ なってしまっていたのを修正
15
+ - Ruby 2.7 で narou setting -l を実行時に警告が大量に出ていたのを修正
16
+
17
+
18
+ 3.5.0: 2020/02/16
19
+ -----------------
20
+ #### 修正内容
21
+ - Ruby 2.7 に対応
22
+
23
+
24
+ 3.4.8: 2019/11/27
25
+ -----------------
26
+ #### 修正内容
27
+ - 小説タイトルが長すぎる場合、backup コマンドでファイルを作成した際にエラーが
28
+ 出るため、ファイル名を端折る処理を導入
29
+ - `デスマーチからはじまる異世界狂想曲` のプリセットファイルにバグが混入していた
30
+ のを修正
31
+
32
+
4
33
  3.4.7: 2019/10/06
5
34
  -----------------
6
35
  #### 修正内容
data/Gemfile CHANGED
@@ -2,17 +2,3 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in narou.gemspec
4
4
  gemspec
5
-
6
- # development gems
7
-
8
- gem "rspec"
9
- gem "rspec-core"
10
- gem "rspec-retry"
11
- gem "rspec_junit_formatter"
12
- gem "timecop"
13
- gem "pry"
14
- gem "pry-byebug"
15
- gem "better_errors"
16
- gem "binding_of_caller"
17
- gem "awesome_print"
18
- gem "simplecov", require: false, group: :test
@@ -1,154 +1,140 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- narou (3.4.6)
5
- activesupport (~> 5.2)
4
+ narou (3.5.1)
5
+ activesupport (>= 5.2, < 7.0)
6
6
  diff-lcs (~> 1.2, >= 1.2.5)
7
7
  erubis (~> 2.7)
8
- haml (~> 4.0, >= 4.0.7)
8
+ haml (>= 5.1.2, < 6)
9
9
  mail (~> 2.6.0, >= 2.6.6)
10
10
  memoist (~> 0.11.0)
11
11
  open_uri_redirections (~> 0.2, >= 0.2.1)
12
12
  pony (~> 1, >= 1.11)
13
13
  rubyzip (~> 2.0, >= 2.0.0)
14
- sass (~> 3.4, >= 3.4.18)
15
- sinatra (~> 1.4, >= 1.4.5)
16
- sinatra-contrib (~> 1.4, >= 1.4.2)
14
+ sassc (~> 2.4)
15
+ sinatra (~> 2.0, >= 2.0.8.1)
16
+ sinatra-contrib (~> 2.0, >= 2.0.8.1)
17
17
  systemu (~> 2.6, >= 2.6.5)
18
18
  termcolorlight (~> 1.0, >= 1.1.1)
19
- tilt (~> 2.0, >= 2.0.1)
19
+ tilt (~> 2.0, >= 2.0.10)
20
20
  unicode-display_width (~> 1.4)
21
+ webrick (~> 1.7)
21
22
 
22
23
  GEM
23
24
  remote: https://rubygems.org/
24
25
  specs:
25
- activesupport (5.2.3)
26
+ activesupport (6.1.0)
26
27
  concurrent-ruby (~> 1.0, >= 1.0.2)
27
- i18n (>= 0.7, < 2)
28
- minitest (~> 5.1)
29
- tzinfo (~> 1.1)
28
+ i18n (>= 1.6, < 2)
29
+ minitest (>= 5.1)
30
+ tzinfo (~> 2.0)
31
+ zeitwerk (~> 2.3)
30
32
  awesome_print (1.8.0)
31
- backports (3.15.0)
32
- better_errors (2.5.0)
33
- coderay (>= 1.0.0)
34
- erubi (>= 1.0.0)
35
- rack (>= 0.9.0)
36
- binding_of_caller (0.8.0)
37
- debug_inspector (>= 0.0.1)
38
- byebug (10.0.2)
39
- coderay (1.1.2)
40
- concurrent-ruby (1.1.5)
41
- debug_inspector (0.0.3)
42
- diff-lcs (1.3)
43
- docile (1.3.1)
44
- erubi (1.7.1)
33
+ byebug (11.1.3)
34
+ coderay (1.1.3)
35
+ concurrent-ruby (1.1.7)
36
+ diff-lcs (1.4.4)
37
+ docile (1.3.4)
45
38
  erubis (2.7.0)
46
- ffi (1.9.25)
47
- ffi (1.9.25-java)
48
- haml (4.0.7)
39
+ ffi (1.13.1)
40
+ ffi (1.13.1-java)
41
+ haml (5.2.1)
42
+ temple (>= 0.8.0)
49
43
  tilt
50
- i18n (1.6.0)
44
+ i18n (1.8.6)
51
45
  concurrent-ruby (~> 1.0)
52
- json (2.1.0)
53
- json (2.1.0-java)
54
46
  mail (2.6.6)
55
47
  mime-types (>= 1.16, < 4)
56
48
  memoist (0.11.0)
57
- method_source (0.9.2)
58
- mime-types (3.3)
49
+ method_source (1.0.0)
50
+ mime-types (3.3.1)
59
51
  mime-types-data (~> 3.2015)
60
- mime-types-data (3.2019.0904)
61
- minitest (5.12.2)
62
- multi_json (1.13.1)
52
+ mime-types-data (3.2020.1104)
53
+ minitest (5.14.2)
54
+ multi_json (1.15.0)
55
+ mustermann (1.1.1)
56
+ ruby2_keywords (~> 0.0.1)
63
57
  open_uri_redirections (0.2.1)
64
58
  pony (1.13.1)
65
59
  mail (>= 2.0)
66
- pry (0.12.2)
67
- coderay (~> 1.1.0)
68
- method_source (~> 0.9.0)
69
- pry (0.12.2-java)
70
- coderay (~> 1.1.0)
71
- method_source (~> 0.9.0)
60
+ pry (0.13.1)
61
+ coderay (~> 1.1)
62
+ method_source (~> 1.0)
63
+ pry (0.13.1-java)
64
+ coderay (~> 1.1)
65
+ method_source (~> 1.0)
72
66
  spoon (~> 0.0)
73
- pry-byebug (3.6.0)
74
- byebug (~> 10.0)
75
- pry (~> 0.10)
76
- rack (1.6.11)
77
- rack-protection (1.5.5)
67
+ pry-byebug (3.9.0)
68
+ byebug (~> 11.0)
69
+ pry (~> 0.13.0)
70
+ rack (2.2.3)
71
+ rack-protection (2.1.0)
78
72
  rack
79
- rack-test (1.1.0)
80
- rack (>= 1.0, < 3)
81
- rb-fsevent (0.10.3)
82
- rb-inotify (0.10.0)
83
- ffi (~> 1.0)
84
- rspec (3.8.0)
85
- rspec-core (~> 3.8.0)
86
- rspec-expectations (~> 3.8.0)
87
- rspec-mocks (~> 3.8.0)
88
- rspec-core (3.8.0)
89
- rspec-support (~> 3.8.0)
90
- rspec-expectations (3.8.2)
73
+ rspec (3.9.0)
74
+ rspec-core (~> 3.9.0)
75
+ rspec-expectations (~> 3.9.0)
76
+ rspec-mocks (~> 3.9.0)
77
+ rspec-core (3.9.2)
78
+ rspec-support (~> 3.9.3)
79
+ rspec-expectations (3.9.2)
91
80
  diff-lcs (>= 1.2.0, < 2.0)
92
- rspec-support (~> 3.8.0)
93
- rspec-mocks (3.8.0)
81
+ rspec-support (~> 3.9.0)
82
+ rspec-mocks (3.9.1)
94
83
  diff-lcs (>= 1.2.0, < 2.0)
95
- rspec-support (~> 3.8.0)
96
- rspec-retry (0.6.1)
84
+ rspec-support (~> 3.9.0)
85
+ rspec-retry (0.6.2)
97
86
  rspec-core (> 3.3)
98
- rspec-support (3.8.0)
87
+ rspec-support (3.9.3)
99
88
  rspec_junit_formatter (0.4.1)
100
89
  rspec-core (>= 2, < 4, != 2.12.0)
101
- rubyzip (2.0.0)
102
- sass (3.7.4)
103
- sass-listen (~> 4.0.0)
104
- sass-listen (4.0.0)
105
- rb-fsevent (~> 0.9, >= 0.9.4)
106
- rb-inotify (~> 0.9, >= 0.9.7)
107
- simplecov (0.16.1)
90
+ ruby2_keywords (0.0.2)
91
+ rubyzip (2.3.0)
92
+ sassc (2.4.0)
93
+ ffi (~> 1.9)
94
+ simplecov (0.20.0)
108
95
  docile (~> 1.1)
109
- json (>= 1.8, < 3)
110
- simplecov-html (~> 0.10.0)
111
- simplecov-html (0.10.2)
112
- sinatra (1.4.8)
113
- rack (~> 1.5)
114
- rack-protection (~> 1.4)
115
- tilt (>= 1.3, < 3)
116
- sinatra-contrib (1.4.7)
117
- backports (>= 2.0)
96
+ simplecov-html (~> 0.11)
97
+ simplecov_json_formatter (~> 0.1)
98
+ simplecov-html (0.12.3)
99
+ simplecov_json_formatter (0.1.2)
100
+ sinatra (2.1.0)
101
+ mustermann (~> 1.0)
102
+ rack (~> 2.2)
103
+ rack-protection (= 2.1.0)
104
+ tilt (~> 2.0)
105
+ sinatra-contrib (2.1.0)
118
106
  multi_json
119
- rack-protection
120
- rack-test
121
- sinatra (~> 1.4.0)
122
- tilt (>= 1.3, < 3)
107
+ mustermann (~> 1.0)
108
+ rack-protection (= 2.1.0)
109
+ sinatra (= 2.1.0)
110
+ tilt (~> 2.0)
123
111
  spoon (0.0.6)
124
112
  ffi
125
113
  systemu (2.6.5)
114
+ temple (0.8.2)
126
115
  termcolorlight (1.1.1)
127
- thread_safe (0.3.6)
128
- thread_safe (0.3.6-java)
129
116
  tilt (2.0.10)
130
117
  timecop (0.9.1)
131
- tzinfo (1.2.5)
132
- thread_safe (~> 0.1)
133
- unicode-display_width (1.6.0)
118
+ tzinfo (2.0.4)
119
+ concurrent-ruby (~> 1.0)
120
+ unicode-display_width (1.7.0)
121
+ webrick (1.7.0)
122
+ zeitwerk (2.4.2)
134
123
 
135
124
  PLATFORMS
136
125
  java
137
126
  ruby
138
127
 
139
128
  DEPENDENCIES
140
- awesome_print
141
- better_errors
142
- binding_of_caller
129
+ awesome_print (~> 1.8)
143
130
  narou!
144
- pry
145
- pry-byebug
146
- rspec
147
- rspec-core
148
- rspec-retry
149
- rspec_junit_formatter
150
- simplecov
151
- timecop
131
+ pry (~> 0.12)
132
+ pry-byebug (~> 3.8)
133
+ rspec (~> 3.9)
134
+ rspec-retry (~> 0.6)
135
+ rspec_junit_formatter (~> 0.4)
136
+ simplecov (~> 0.20)
137
+ timecop (~> 0.9)
152
138
 
153
139
  BUNDLED WITH
154
- 1.17.2
140
+ 2.2.3
data/README.md CHANGED
@@ -34,16 +34,10 @@ Narou.rb - 小説家になろうのダウンローダ&縦書き整形&管理
34
34
  更新履歴 - ChangeLog
35
35
  --------------------
36
36
 
37
- 3.4.7: 2019/10/06
37
+ 3.6.0: 2021/01/02
38
38
  -----------------
39
39
  #### 修正内容
40
- - 3.4.6 の修正では更新日時が正常に取れていなかったのを修正
41
- - **注意**
42
- 3.4.6 で更新した小説の目次データは壊れているので、そのまま 3.4.7 で更新する
43
- と大量の再ダウンロードが発生します。目次データを復元するコマンドを用意した
44
- のでそれを使用して下さい
45
- - コマンドライン上で `narou restore346` を実行すると、壊れた目次データを復元
46
- 出来ます
40
+ - Ruby 3.0 に対応
47
41
 
48
42
  ----
49
43
 
@@ -31,7 +31,9 @@ module Command
31
31
  end
32
32
 
33
33
  def create_backup_filename(data)
34
- Helper.replace_filename_special_chars(data["title"]) + "_" + Time.now.strftime("%Y%m%d%H%M%S") + ".zip"
34
+ name = Helper.replace_filename_special_chars(data["title"])
35
+ name.slice!(-1) while name.bytesize > 180
36
+ "#{name}_#{Time.now.strftime("%Y%m%d%H%M%S")}.zip"
35
37
  end
36
38
 
37
39
  def create_backup(data)
@@ -118,7 +118,7 @@ module Command
118
118
  settings.each do |scope, scoped_settings|
119
119
  stream_io.puts "[#{scope.capitalize} Variables]"
120
120
  scoped_settings.each do |name, value|
121
- if value =~ / /
121
+ if value.to_s =~ / /
122
122
  value = "'#{value}'"
123
123
  end
124
124
  stream_io.puts "<bold><green>#{name}</green></bold>=#{value}".termcolor
@@ -89,7 +89,7 @@ module Command
89
89
  tag_index = database.tag_indexies
90
90
  all_ids = database.ids
91
91
  expanded_array = array.map { |arg|
92
- if arg =~ /\A\d+\z/
92
+ if arg.to_s =~ /\A\d+\z/
93
93
  # 優先度はID>タグのため、数字のみ指定されたら
94
94
  # そのIDが存在した場合はIDとみなす
95
95
  id = arg.to_i
@@ -51,7 +51,7 @@ module CommandLine
51
51
  def argv_for_windows(argv)
52
52
  return unless Helper.os_windows?
53
53
  argv.map! do |arg|
54
- arg&.encode(Encoding::UTF_8)
54
+ arg.class == Integer ? arg : arg&.encode(Encoding::UTF_8)
55
55
  end
56
56
  end
57
57
 
@@ -995,7 +995,7 @@ class ConverterBase
995
995
  # URL っぽい文字列を一旦別のIDに置き換えてあとで復元することで、変換処理の影響を受けさせない
996
996
  #
997
997
  def replace_url(data)
998
- data.gsub!(URI.regexp(%w(http https))) do |match|
998
+ data.gsub!(URI::DEFAULT_PARSER.make_regexp(%w(http https))) do |match|
999
999
  @url_list << match
1000
1000
  "[#URL=#{@url_list.size - 1}]"
1001
1001
  end
@@ -89,7 +89,7 @@ class Downloader
89
89
  #
90
90
  def self.get_target_type(target)
91
91
  case target
92
- when URI.regexp
92
+ when URI::DEFAULT_PARSER.make_regexp
93
93
  :url
94
94
  when /^n\d+[a-z]+$/i
95
95
  target.downcase!
@@ -725,7 +725,7 @@ class Downloader
725
725
  cookie = @setting["cookie"] || ""
726
726
  open_uri_options = make_open_uri_options("Cookie" => cookie, allow_redirections: :safe)
727
727
  begin
728
- open(toc_url, open_uri_options) do |toc_fp|
728
+ URI.open(toc_url, open_uri_options) do |toc_fp|
729
729
  if toc_fp.base_uri.to_s != toc_url
730
730
  # リダイレクトされた場合。
731
731
  # ノクターン・ムーンライトのNコードを ncode.syosetu.com に渡すと、年齢認証のクッションページに飛ばされる
@@ -1092,7 +1092,7 @@ class Downloader
1092
1092
  save_raw_data(raw, subtitle_info, ".html")
1093
1093
  %w(introduction postscript body).each { |type| @setting[type] = nil }
1094
1094
  @setting.multi_match(raw, "body_pattern", "introduction_pattern", "postscript_pattern")
1095
- element = { "data_type" => "html" }
1095
+ element = { "data_type" => @setting["data_type"] || "html" }
1096
1096
  %w(introduction postscript body).each { |type|
1097
1097
  element[type] = @setting[type].to_s
1098
1098
  }
@@ -1132,7 +1132,7 @@ class Downloader
1132
1132
  cookie = @setting["cookie"] || ""
1133
1133
  begin
1134
1134
  open_uri_options = make_open_uri_options("Cookie" => cookie, allow_redirections: :safe)
1135
- open(url, "r:#{@setting["encoding"]}", open_uri_options) do |fp|
1135
+ URI.open(url, "r:#{@setting["encoding"]}", open_uri_options) do |fp|
1136
1136
  raw = Helper.pretreatment_source(fp.read, @setting["encoding"])
1137
1137
  end
1138
1138
  rescue OpenURI::HTTPError, Errno::ECONNRESET, Errno::ETIMEDOUT, Net::OpenTimeout => e
@@ -464,7 +464,7 @@ module Helper
464
464
  fullpath = File.expand_path(path)
465
465
  cache_data = @@caches[fullpath]
466
466
  if Helper.file_latest?(fullpath) || !cache_data
467
- body = File.read(fullpath, options)
467
+ body = File.read(fullpath, **options)
468
468
  @@caches[fullpath] = body
469
469
  return body
470
470
  else
@@ -493,7 +493,7 @@ module Helper
493
493
  key = generate_key(fullpath, block)
494
494
  cache = @@result_caches[key]
495
495
  if Helper.file_latest?(fullpath) || !cache
496
- data = File.read(fullpath, options)
496
+ data = File.read(fullpath, **options)
497
497
  @@result_caches[key] = result = block.call(data)
498
498
  return result
499
499
  else
@@ -42,8 +42,8 @@ class HTML
42
42
  #
43
43
  # 青空文庫形式に変換
44
44
  #
45
- def to_aozora
46
- @string = br_to_aozora
45
+ def to_aozora(pre_html: false)
46
+ @string = br_to_aozora unless pre_html
47
47
  @string = p_to_aozora
48
48
  @string = ruby_to_aozora
49
49
  unless @strip_decoration_tag
@@ -27,7 +27,7 @@ class Illustration
27
27
  source.gsub!(/[#挿絵((.+?))入る]/) do |match|
28
28
  url = $1
29
29
  url = "https:#{url}" if url.start_with?("//")
30
- if url =~ URI.regexp
30
+ if url =~ URI::DEFAULT_PARSER.make_regexp
31
31
  path = download_image(url)
32
32
  path ? block.call(make_illust_chuki(path)) : ""
33
33
  else
@@ -53,7 +53,9 @@ class Illustration
53
53
  if path = search_image(basename)
54
54
  return path
55
55
  end
56
- open(url, make_open_uri_options(allow_redirections: :safe)) do |fp|
56
+
57
+ url = transform_mitemin_url(url)
58
+ URI.open(url, make_open_uri_options(allow_redirections: :safe)) do |fp|
57
59
  content_type = fp.meta["content-type"]
58
60
  ext = MIME[content_type] or raise UnknownMIMEType, content_type
59
61
  illust_abs_path = create_illust_path(basename) + "." + ext
@@ -77,6 +79,13 @@ class Illustration
77
79
  Dir.glob(path)[0]
78
80
  end
79
81
 
82
+ def transform_mitemin_url(url)
83
+ uri = URI.parse(url)
84
+ return url unless uri.host.end_with?(".mitemin.net")
85
+
86
+ url.sub("viewimagebig", "viewimage")
87
+ end
88
+
80
89
  def create_illust_path(basename)
81
90
  illust_abs_dir = File.join(@setting.archive_path, ILLUST_DIR)
82
91
  Dir.mkdir(illust_abs_dir) unless File.exist?(illust_abs_dir)
@@ -8,10 +8,10 @@ require_relative "helper"
8
8
 
9
9
  BlankConverter = Class.new(ConverterBase) {}
10
10
 
11
- $converter_container = {}
11
+ $latest_converter = nil
12
12
 
13
13
  def converter(title, &block)
14
- $converter_container[title] = Class.new(ConverterBase, &block)
14
+ $latest_converter = Class.new(ConverterBase, &block)
15
15
  end
16
16
 
17
17
  #
@@ -61,11 +61,13 @@ end
61
61
  def load_converter(title, archive_path)
62
62
  converter_path = File.join(archive_path, "converter.rb")
63
63
  if File.exist?(converter_path)
64
+ $latest_converter = nil
64
65
  eval(File.read(converter_path, mode: "r:BOM|UTF-8"), binding, converter_path)
65
66
  else
66
67
  return BlankConverter
67
68
  end
68
- conv = $converter_container[title] || $converter_container[File.basename(archive_path)]
69
+
70
+ conv = $latest_converter
69
71
  if conv
70
72
  return conv
71
73
  else
@@ -44,7 +44,7 @@ module Narou
44
44
  @@is_web = false
45
45
 
46
46
  def last_commit_year
47
- 2019
47
+ 2021
48
48
  end
49
49
 
50
50
  def root_dir
@@ -54,7 +54,7 @@ module Narou
54
54
 
55
55
  def request_api(ncodes, limit = BATCH_LIMIT)
56
56
  url = "#{@api_url}?gzip=#{GZIP_LEVEL}&ncode=#{ncodes.join("-")}&of=#{@of}&lim=#{limit}&out=json"
57
- open(url) do |fp|
57
+ URI.open(url) do |fp|
58
58
  data = Zlib::GzipReader.wrap(fp).read.force_encoding(Encoding::UTF_8)
59
59
  results = JSON.parse(data)
60
60
  return if results[0]["allcount"].zero?
@@ -457,8 +457,8 @@ class NovelConverter
457
457
  processing_title = toc["title"]
458
458
  processing_title += "_#{index}" if index
459
459
  processed_title = decorate_title(processing_title)
460
- tempalte_name = (device && device.ibunko? ? NOVEL_TEXT_TEMPLATE_NAME_FOR_IBUNKO : NOVEL_TEXT_TEMPLATE_NAME)
461
- Template.get(tempalte_name, binding, 1.1)
460
+ template_name = (device && device.ibunko? ? NOVEL_TEXT_TEMPLATE_NAME_FOR_IBUNKO : NOVEL_TEXT_TEMPLATE_NAME)
461
+ Template.get(template_name, binding, 1.1)
462
462
  end
463
463
 
464
464
  #
@@ -698,15 +698,16 @@ class NovelConverter
698
698
  if section["chapter"].length > 0
699
699
  section["chapter"] = @converter.convert(section["chapter"], "chapter")
700
700
  end
701
+
701
702
  @inspector.subtitle = section["subtitle"]
702
703
  section["subtitle"] = @converter.convert(section["subtitle"], "subtitle")
703
704
  element = section["element"]
704
705
  data_type = element.delete("data_type") || "text"
705
706
  @converter.data_type = data_type
706
707
  element.each do |text_type, elm_text|
707
- if data_type == "html"
708
+ if data_type != "text"
708
709
  html.string = elm_text
709
- elm_text = html.to_aozora
710
+ elm_text = html.to_aozora(pre_html: data_type == "pre_html")
710
711
  end
711
712
  element[text_type] = @converter.convert(elm_text, text_type)
712
713
  end
@@ -48,7 +48,7 @@ class NovelInfo
48
48
  else
49
49
  cookie = @setting["cookie"] || ""
50
50
  open_uri_options = make_open_uri_options("Cookie" => cookie, allow_redirections: :safe)
51
- open(info_url, open_uri_options) do |fp|
51
+ URI.open(info_url, open_uri_options) do |fp|
52
52
  info_source = Helper.restore_entity(Helper.pretreatment_source(fp.read, @setting["encoding"]))
53
53
  raise Downloader::DownloaderNotFoundError if Downloader.detect_error_message(@setting, info_source)
54
54
  end
@@ -24,7 +24,7 @@ class SiteSetting
24
24
  load_paths = [
25
25
  Narou.script_dir.join(NOVEL_SITE_SETTING_DIR, "*.yaml"),
26
26
  Narou.root_dir.join(NOVEL_SITE_SETTING_DIR, "*.yaml")
27
- ].uniq.join("\0")
27
+ ].uniq
28
28
  Dir.glob(load_paths) do |path|
29
29
  setting = SiteSetting.load_file(path)
30
30
  name = setting["name"]
@@ -5,5 +5,5 @@
5
5
  #
6
6
 
7
7
  module Narou
8
- VERSION = "3.4.7.1"
8
+ VERSION = "3.6.0"
9
9
  end
@@ -835,8 +835,10 @@ class Narou::AppServer < Sinatra::Base
835
835
 
836
836
  # ダウンロード登録すると同時にグレーのボタン画像を返す
837
837
  get "/api/download4ssl" do
838
+ target = params["target"] or error("need a parameter: `target'")
839
+ opt_mail = "--mail" if query_to_boolean(params["mail"])
838
840
  Narou::WebWorker.push do
839
- CommandLine.run!("download", params["target"])
841
+ CommandLine.run!("download", target, opt_mail)
840
842
  @@push_server.send_all(:"table.reload")
841
843
  end
842
844
  redirect "/resources/images/dl_button1.gif"
@@ -16,8 +16,8 @@ class ProgressBar
16
16
 
17
17
  alias :original_initialize :initialize
18
18
 
19
- def initialize(*args)
20
- original_initialize(*args)
19
+ def initialize(*args, **opt)
20
+ original_initialize(*args, **opt)
21
21
  @@push_server.send_all("progressbar.init" => { target_console: io.target_console })
22
22
  end
23
23
 
@@ -32,16 +32,10 @@ Gem::Specification.new do |gem|
32
32
  install_message = <<-EOS
33
33
  #{"*" * 60}
34
34
 
35
- 3.4.7: 2019/10/06
35
+ 3.6.0: 2021/01/02
36
36
  -----------------
37
37
  #### 修正内容
38
- - 3.4.6 の修正では更新日時が正常に取れていなかったのを修正
39
- - **注意**
40
- 3.4.6 で更新した小説の目次データは壊れているので、そのまま 3.4.7 で更新する
41
- と大量の再ダウンロードが発生します。目次データを復元するコマンドを用意した
42
- のでそれを使用して下さい
43
- - コマンドライン上で `narou restore346` を実行すると、壊れた目次データを復元
44
- 出来ます
38
+ - Ruby 3.0 に対応
45
39
 
46
40
  #{"*" * 60}
47
41
  EOS
@@ -57,16 +51,26 @@ Gem::Specification.new do |gem|
57
51
  gem.add_runtime_dependency 'mail', '~> 2.6.0', '>= 2.6.6'
58
52
  gem.add_runtime_dependency 'pony', '~> 1', '>= 1.11'
59
53
  gem.add_runtime_dependency 'diff-lcs', '~> 1.2', '>= 1.2.5'
60
- gem.add_runtime_dependency 'sinatra', '~> 1.4', '>= 1.4.5'
61
- gem.add_runtime_dependency 'sinatra-contrib', '~> 1.4', '>= 1.4.2'
62
- gem.add_runtime_dependency 'tilt', '~> 2.0', '>= 2.0.1'
63
- gem.add_runtime_dependency 'sass', '~> 3.4', '>= 3.4.18'
64
- gem.add_runtime_dependency 'haml', '~> 4.0', '>= 4.0.7'
54
+ gem.add_runtime_dependency 'sinatra', '~> 2.0', '>= 2.0.8.1'
55
+ gem.add_runtime_dependency 'sinatra-contrib', '~> 2.0', '>= 2.0.8.1'
56
+ gem.add_runtime_dependency 'tilt', '~> 2.0', '>= 2.0.10'
57
+ gem.add_runtime_dependency 'sassc', '~> 2.4'
58
+ gem.add_runtime_dependency 'haml', '>= 5.1.2', '< 6'
65
59
  gem.add_runtime_dependency 'memoist', '~> 0.11.0'
66
60
  gem.add_runtime_dependency 'systemu', '~> 2.6', '>= 2.6.5'
67
61
  gem.add_runtime_dependency 'erubis', '~> 2.7'
68
62
  gem.add_runtime_dependency 'open_uri_redirections', '~> 0.2', '>= 0.2.1'
69
- gem.add_runtime_dependency 'activesupport', '~> 5.2'
63
+ gem.add_runtime_dependency 'activesupport', '>= 5.2', '< 7.0'
70
64
  gem.add_runtime_dependency 'unicode-display_width', '~> 1.4'
65
+ gem.add_runtime_dependency 'webrick', '~> 1.7'
66
+
67
+ gem.add_development_dependency 'rspec', '~> 3.9'
68
+ gem.add_development_dependency 'rspec-retry', '~> 0.6'
69
+ gem.add_development_dependency 'rspec_junit_formatter', '~> 0.4'
70
+ gem.add_development_dependency 'timecop', '~> 0.9'
71
+ gem.add_development_dependency 'pry', '~> 0.12'
72
+ gem.add_development_dependency 'pry-byebug', '~> 3.8'
73
+ gem.add_development_dependency 'awesome_print', '~> 1.8'
74
+ gem.add_development_dependency 'simplecov', '~> 0.20'
71
75
  end
72
76
 
@@ -6,7 +6,7 @@
6
6
  # 作者: 愛七ひろ
7
7
  # URL: http://ncode.syosetu.com/n9902bn/
8
8
  #
9
- converter "n9902bn デスマーチからはじまる異世界狂想曲( web版 )"
9
+ converter "n9902bn デスマーチからはじまる異世界狂想曲( web版 )" do
10
10
  def before(io, text_type)
11
11
  super
12
12
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: narou
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.7.1
4
+ version: 3.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - whiteleaf7
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-07 00:00:00.000000000 Z
11
+ date: 2021-01-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: termcolorlight
@@ -34,22 +34,22 @@ dependencies:
34
34
  name: rubyzip
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: 2.0.0
40
37
  - - "~>"
41
38
  - !ruby/object:Gem::Version
42
39
  version: '2.0'
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 2.0.0
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: 2.0.0
50
47
  - - "~>"
51
48
  - !ruby/object:Gem::Version
52
49
  version: '2.0'
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 2.0.0
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: mail
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -116,40 +116,40 @@ dependencies:
116
116
  requirements:
117
117
  - - "~>"
118
118
  - !ruby/object:Gem::Version
119
- version: '1.4'
119
+ version: '2.0'
120
120
  - - ">="
121
121
  - !ruby/object:Gem::Version
122
- version: 1.4.5
122
+ version: 2.0.8.1
123
123
  type: :runtime
124
124
  prerelease: false
125
125
  version_requirements: !ruby/object:Gem::Requirement
126
126
  requirements:
127
127
  - - "~>"
128
128
  - !ruby/object:Gem::Version
129
- version: '1.4'
129
+ version: '2.0'
130
130
  - - ">="
131
131
  - !ruby/object:Gem::Version
132
- version: 1.4.5
132
+ version: 2.0.8.1
133
133
  - !ruby/object:Gem::Dependency
134
134
  name: sinatra-contrib
135
135
  requirement: !ruby/object:Gem::Requirement
136
136
  requirements:
137
137
  - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '1.4'
139
+ version: '2.0'
140
140
  - - ">="
141
141
  - !ruby/object:Gem::Version
142
- version: 1.4.2
142
+ version: 2.0.8.1
143
143
  type: :runtime
144
144
  prerelease: false
145
145
  version_requirements: !ruby/object:Gem::Requirement
146
146
  requirements:
147
147
  - - "~>"
148
148
  - !ruby/object:Gem::Version
149
- version: '1.4'
149
+ version: '2.0'
150
150
  - - ">="
151
151
  - !ruby/object:Gem::Version
152
- version: 1.4.2
152
+ version: 2.0.8.1
153
153
  - !ruby/object:Gem::Dependency
154
154
  name: tilt
155
155
  requirement: !ruby/object:Gem::Requirement
@@ -159,7 +159,7 @@ dependencies:
159
159
  version: '2.0'
160
160
  - - ">="
161
161
  - !ruby/object:Gem::Version
162
- version: 2.0.1
162
+ version: 2.0.10
163
163
  type: :runtime
164
164
  prerelease: false
165
165
  version_requirements: !ruby/object:Gem::Requirement
@@ -169,47 +169,41 @@ dependencies:
169
169
  version: '2.0'
170
170
  - - ">="
171
171
  - !ruby/object:Gem::Version
172
- version: 2.0.1
172
+ version: 2.0.10
173
173
  - !ruby/object:Gem::Dependency
174
- name: sass
174
+ name: sassc
175
175
  requirement: !ruby/object:Gem::Requirement
176
176
  requirements:
177
177
  - - "~>"
178
178
  - !ruby/object:Gem::Version
179
- version: '3.4'
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- version: 3.4.18
179
+ version: '2.4'
183
180
  type: :runtime
184
181
  prerelease: false
185
182
  version_requirements: !ruby/object:Gem::Requirement
186
183
  requirements:
187
184
  - - "~>"
188
185
  - !ruby/object:Gem::Version
189
- version: '3.4'
190
- - - ">="
191
- - !ruby/object:Gem::Version
192
- version: 3.4.18
186
+ version: '2.4'
193
187
  - !ruby/object:Gem::Dependency
194
188
  name: haml
195
189
  requirement: !ruby/object:Gem::Requirement
196
190
  requirements:
197
- - - "~>"
198
- - !ruby/object:Gem::Version
199
- version: '4.0'
200
191
  - - ">="
201
192
  - !ruby/object:Gem::Version
202
- version: 4.0.7
193
+ version: 5.1.2
194
+ - - "<"
195
+ - !ruby/object:Gem::Version
196
+ version: '6'
203
197
  type: :runtime
204
198
  prerelease: false
205
199
  version_requirements: !ruby/object:Gem::Requirement
206
200
  requirements:
207
- - - "~>"
208
- - !ruby/object:Gem::Version
209
- version: '4.0'
210
201
  - - ">="
211
202
  - !ruby/object:Gem::Version
212
- version: 4.0.7
203
+ version: 5.1.2
204
+ - - "<"
205
+ - !ruby/object:Gem::Version
206
+ version: '6'
213
207
  - !ruby/object:Gem::Dependency
214
208
  name: memoist
215
209
  requirement: !ruby/object:Gem::Requirement
@@ -282,16 +276,22 @@ dependencies:
282
276
  name: activesupport
283
277
  requirement: !ruby/object:Gem::Requirement
284
278
  requirements:
285
- - - "~>"
279
+ - - ">="
286
280
  - !ruby/object:Gem::Version
287
281
  version: '5.2'
282
+ - - "<"
283
+ - !ruby/object:Gem::Version
284
+ version: '7.0'
288
285
  type: :runtime
289
286
  prerelease: false
290
287
  version_requirements: !ruby/object:Gem::Requirement
291
288
  requirements:
292
- - - "~>"
289
+ - - ">="
293
290
  - !ruby/object:Gem::Version
294
291
  version: '5.2'
292
+ - - "<"
293
+ - !ruby/object:Gem::Version
294
+ version: '7.0'
295
295
  - !ruby/object:Gem::Dependency
296
296
  name: unicode-display_width
297
297
  requirement: !ruby/object:Gem::Requirement
@@ -306,6 +306,132 @@ dependencies:
306
306
  - - "~>"
307
307
  - !ruby/object:Gem::Version
308
308
  version: '1.4'
309
+ - !ruby/object:Gem::Dependency
310
+ name: webrick
311
+ requirement: !ruby/object:Gem::Requirement
312
+ requirements:
313
+ - - "~>"
314
+ - !ruby/object:Gem::Version
315
+ version: '1.7'
316
+ type: :runtime
317
+ prerelease: false
318
+ version_requirements: !ruby/object:Gem::Requirement
319
+ requirements:
320
+ - - "~>"
321
+ - !ruby/object:Gem::Version
322
+ version: '1.7'
323
+ - !ruby/object:Gem::Dependency
324
+ name: rspec
325
+ requirement: !ruby/object:Gem::Requirement
326
+ requirements:
327
+ - - "~>"
328
+ - !ruby/object:Gem::Version
329
+ version: '3.9'
330
+ type: :development
331
+ prerelease: false
332
+ version_requirements: !ruby/object:Gem::Requirement
333
+ requirements:
334
+ - - "~>"
335
+ - !ruby/object:Gem::Version
336
+ version: '3.9'
337
+ - !ruby/object:Gem::Dependency
338
+ name: rspec-retry
339
+ requirement: !ruby/object:Gem::Requirement
340
+ requirements:
341
+ - - "~>"
342
+ - !ruby/object:Gem::Version
343
+ version: '0.6'
344
+ type: :development
345
+ prerelease: false
346
+ version_requirements: !ruby/object:Gem::Requirement
347
+ requirements:
348
+ - - "~>"
349
+ - !ruby/object:Gem::Version
350
+ version: '0.6'
351
+ - !ruby/object:Gem::Dependency
352
+ name: rspec_junit_formatter
353
+ requirement: !ruby/object:Gem::Requirement
354
+ requirements:
355
+ - - "~>"
356
+ - !ruby/object:Gem::Version
357
+ version: '0.4'
358
+ type: :development
359
+ prerelease: false
360
+ version_requirements: !ruby/object:Gem::Requirement
361
+ requirements:
362
+ - - "~>"
363
+ - !ruby/object:Gem::Version
364
+ version: '0.4'
365
+ - !ruby/object:Gem::Dependency
366
+ name: timecop
367
+ requirement: !ruby/object:Gem::Requirement
368
+ requirements:
369
+ - - "~>"
370
+ - !ruby/object:Gem::Version
371
+ version: '0.9'
372
+ type: :development
373
+ prerelease: false
374
+ version_requirements: !ruby/object:Gem::Requirement
375
+ requirements:
376
+ - - "~>"
377
+ - !ruby/object:Gem::Version
378
+ version: '0.9'
379
+ - !ruby/object:Gem::Dependency
380
+ name: pry
381
+ requirement: !ruby/object:Gem::Requirement
382
+ requirements:
383
+ - - "~>"
384
+ - !ruby/object:Gem::Version
385
+ version: '0.12'
386
+ type: :development
387
+ prerelease: false
388
+ version_requirements: !ruby/object:Gem::Requirement
389
+ requirements:
390
+ - - "~>"
391
+ - !ruby/object:Gem::Version
392
+ version: '0.12'
393
+ - !ruby/object:Gem::Dependency
394
+ name: pry-byebug
395
+ requirement: !ruby/object:Gem::Requirement
396
+ requirements:
397
+ - - "~>"
398
+ - !ruby/object:Gem::Version
399
+ version: '3.8'
400
+ type: :development
401
+ prerelease: false
402
+ version_requirements: !ruby/object:Gem::Requirement
403
+ requirements:
404
+ - - "~>"
405
+ - !ruby/object:Gem::Version
406
+ version: '3.8'
407
+ - !ruby/object:Gem::Dependency
408
+ name: awesome_print
409
+ requirement: !ruby/object:Gem::Requirement
410
+ requirements:
411
+ - - "~>"
412
+ - !ruby/object:Gem::Version
413
+ version: '1.8'
414
+ type: :development
415
+ prerelease: false
416
+ version_requirements: !ruby/object:Gem::Requirement
417
+ requirements:
418
+ - - "~>"
419
+ - !ruby/object:Gem::Version
420
+ version: '1.8'
421
+ - !ruby/object:Gem::Dependency
422
+ name: simplecov
423
+ requirement: !ruby/object:Gem::Requirement
424
+ requirements:
425
+ - - "~>"
426
+ - !ruby/object:Gem::Version
427
+ version: '0.20'
428
+ type: :development
429
+ prerelease: false
430
+ version_requirements: !ruby/object:Gem::Requirement
431
+ requirements:
432
+ - - "~>"
433
+ - !ruby/object:Gem::Version
434
+ version: '0.20'
309
435
  description: 小説家になろうで公開されている小説の管理、及び電子書籍データへの変換を支援します。縦書用に特化されており、横書き用に特化されたWEB小説を違和感なく縦書で読むことが出来るようになります。
310
436
  email:
311
437
  - 2nd.leaf@gmail.com
@@ -549,16 +675,10 @@ metadata: {}
549
675
  post_install_message: |
550
676
  ************************************************************
551
677
 
552
- 3.4.7: 2019/10/06
678
+ 3.6.0: 2021/01/02
553
679
  -----------------
554
680
  #### 修正内容
555
- - 3.4.6 の修正では更新日時が正常に取れていなかったのを修正
556
- - **注意**
557
- 3.4.6 で更新した小説の目次データは壊れているので、そのまま 3.4.7 で更新する
558
- と大量の再ダウンロードが発生します。目次データを復元するコマンドを用意した
559
- のでそれを使用して下さい
560
- - コマンドライン上で `narou restore346` を実行すると、壊れた目次データを復元
561
- 出来ます
681
+ - Ruby 3.0 に対応
562
682
 
563
683
  ************************************************************
564
684
  rdoc_options: []
@@ -575,7 +695,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
575
695
  - !ruby/object:Gem::Version
576
696
  version: '0'
577
697
  requirements: []
578
- rubygems_version: 3.0.1
698
+ rubygems_version: 3.2.3
579
699
  signing_key:
580
700
  specification_version: 4
581
701
  summary: Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリプト