narou 2.9.5 → 3.0.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 +4 -4
- data/.gitignore +7 -0
- data/.reek +34 -0
- data/.rspec +1 -0
- data/.rubocop.yml +9 -1
- data/ChangeLog.md +90 -0
- data/Gemfile +4 -0
- data/README.md +85 -8
- data/lib/command/convert.rb +1 -1
- data/lib/command/list.rb +59 -73
- data/lib/command/list/novel_decorator.rb +107 -0
- data/lib/command/send.rb +23 -13
- data/lib/command/setting.rb +5 -1
- data/lib/command/update.rb +104 -138
- data/lib/command/update/general_lastup_updater.rb +105 -0
- data/lib/command/update/interval.rb +29 -0
- data/lib/command/web.rb +1 -1
- data/lib/commandbase.rb +24 -17
- data/lib/converterbase.rb +10 -5
- data/lib/database.rb +16 -5
- data/lib/device.rb +5 -1
- data/lib/device/library/linux.rb +68 -8
- data/lib/downloader.rb +24 -23
- data/lib/extension.rb +16 -3
- data/lib/helper.rb +26 -3
- data/lib/html.rb +1 -1
- data/lib/inspector.rb +9 -0
- data/lib/inventory.rb +20 -6
- data/lib/logger.rb +8 -2
- data/lib/mailer.rb +2 -1
- data/lib/narou.rb +28 -18
- data/lib/narou/api.rb +62 -31
- data/lib/novelconverter.rb +8 -1
- data/lib/novelinfo.rb +8 -7
- data/lib/novelsetting.rb +1 -0
- data/lib/progressbar.rb +6 -2
- data/lib/sitesetting.rb +2 -1
- data/lib/version.rb +1 -1
- data/lib/web/appserver.rb +72 -9
- data/lib/web/public/resources/narou.library.js +130 -13
- data/lib/web/public/resources/narou.ui.js +96 -9
- data/lib/web/settingmessages.rb +2 -1
- data/lib/web/views/_about.haml +15 -2
- data/lib/web/views/index.haml +12 -3
- data/lib/web/views/layout.haml +2 -1
- data/lib/web/views/style.scss +12 -0
- data/narou.gemspec +88 -11
- data/narou.rb +7 -1
- data/preset/mail_setting.yaml +40 -6
- data/webnovel/kakuyomu.jp.yaml +8 -8
- metadata +95 -139
- data/spec/README.txt +0 -4
- data/spec/convert_spec.rb +0 -119
- data/spec/converterbase_spec.rb +0 -298
- data/spec/data/convert_test/auto_indent/correct_test_auto_indent.txt +0 -28
- data/spec/data/convert_test/auto_indent/test_auto_indent.txt +0 -32
- data/spec/data/convert_test/auto_join_bracket/correct_test_auto_join_bracket.txt +0 -24
- data/spec/data/convert_test/auto_join_bracket/test_auto_join_bracket.txt +0 -28
- data/spec/data/convert_test/auto_join_line/correct_test_auto_join_line.txt +0 -43
- data/spec/data/convert_test/auto_join_line/test_auto_join_line.txt +0 -59
- data/spec/data/convert_test/convert_page_break/correct_test_convert_page_break.txt +0 -22
- data/spec/data/convert_test/convert_page_break/setting.ini +0 -5
- data/spec/data/convert_test/convert_page_break/test_convert_page_break.txt +0 -60
- data/spec/data/convert_test/double_dash_to_image/correct_test_double_dash_to_image.txt +0 -14
- data/spec/data/convert_test/double_dash_to_image/setting.ini +0 -1
- data/spec/data/convert_test/double_dash_to_image/test_double_dash_to_image.txt +0 -12
- data/spec/data/convert_test/english/correct_test_english.txt +0 -27
- data/spec/data/convert_test/english/test_english.txt +0 -27
- data/spec/data/convert_test/force_indent_special_chapter/correct_test_force_indent_special_chapter.txt +0 -64
- data/spec/data/convert_test/force_indent_special_chapter/test_force_indent_special_chapter.txt +0 -61
- data/spec/data/convert_test/horizontal_ellipsis/correct_test_horizontal_ellipsis.txt +0 -53
- data/spec/data/convert_test/horizontal_ellipsis/test_horizontal_ellipsis.txt +0 -57
- data/spec/data/convert_test/insert_separator/correct_test_insert_separator.txt +0 -13
- data/spec/data/convert_test/insert_separator/setting.ini +0 -3
- data/spec/data/convert_test/insert_separator/test_insert_separator.txt +0 -12
- data/spec/data/convert_test/insert_separator_and_replace_txt/correct_test_insert_separator_and_replace_txt.txt +0 -12
- data/spec/data/convert_test/insert_separator_and_replace_txt/setting.ini +0 -3
- data/spec/data/convert_test/insert_separator_and_replace_txt/test_insert_separator_and_replace_txt.txt +0 -11
- data/spec/data/convert_test/kanji_num/correct_test_kanji_num.txt +0 -50
- data/spec/data/convert_test/kanji_num/test_kanji_num.txt +0 -56
- data/spec/data/convert_test/nonokagi/correct_test_nonokagi.txt +0 -30
- data/spec/data/convert_test/nonokagi/test_nonokagi.txt +0 -34
- data/spec/data/convert_test/replace/correct_test_replace.txt +0 -13
- data/spec/data/convert_test/replace/test_replace.txt +0 -14
- data/spec/data/convert_test/ruby/correct_test_ruby.txt +0 -161
- data/spec/data/convert_test/ruby/test_ruby.txt +0 -205
- data/spec/data/convert_test/ruby_youon/correct_test_ruby_youon.txt +0 -13
- data/spec/data/convert_test/ruby_youon/setting.ini +0 -2
- data/spec/data/convert_test/ruby_youon/test_ruby_youon.txt +0 -14
- data/spec/data/convert_test/sesame/correct_test_sesame.txt +0 -41
- data/spec/data/convert_test/sesame/test_sesame.txt +0 -52
- data/spec/data/convert_test/to_odd_leader/correct_test_to_odd_leader.txt +0 -21
- data/spec/data/convert_test/to_odd_leader/test_to_odd_leader.txt +0 -21
- data/spec/data/html_test.html +0 -5
- data/spec/data/html_test.txt +0 -4
- data/spec/data/test.ini +0 -10
- data/spec/device_spec.rb +0 -39
- data/spec/downloader_spec.rb +0 -37
- data/spec/eventable_spec.rb +0 -172
- data/spec/exit_code_spec.rb +0 -67
- data/spec/generator/convert_spec_gen.rb +0 -96
- data/spec/generator/num_to_kanji_test_gen.rb +0 -33
- data/spec/helper_spec.rb +0 -90
- data/spec/html_spec.rb +0 -83
- data/spec/ini_spec.rb +0 -145
- data/spec/input_spec.rb +0 -76
- data/spec/logger_spec.rb +0 -92
- data/spec/novelinfo_spec.rb +0 -15
- data/spec/novelsetting_spec.rb +0 -35
- data/spec/num_to_kanji_spec.rb +0 -2482
- data/spec/spec_helper.rb +0 -16
- data/spec/worker_spec.rb +0 -75
@@ -23,12 +23,14 @@ $(document).ready(function() {
|
|
23
23
|
id: false, last_update: false, title: true, author: false, sitename: false,
|
24
24
|
toc_url: false, novel_type: false, tags: false, status: false, menu: true,
|
25
25
|
download: true, folder: false, update_button: false, general_lastup: false,
|
26
|
+
general_all_no: false, last_check_date: false,
|
26
27
|
}
|
27
28
|
// PC
|
28
29
|
: {
|
29
30
|
id: true, last_update: true, title: true, author: true, sitename: true,
|
30
|
-
toc_url: true, novel_type:
|
31
|
-
download:
|
31
|
+
toc_url: true, novel_type: false, tags: true, status: true, menu: true,
|
32
|
+
download: false, folder: true, update_button: true, general_lastup: true,
|
33
|
+
general_all_no: false, last_check_date: false,
|
32
34
|
});
|
33
35
|
|
34
36
|
$.fn.dataTable.Api.register("fireChangeSelect()", function() {
|
@@ -95,7 +97,7 @@ $(document).ready(function() {
|
|
95
97
|
stateDuration: 0, // tableの状態保存を永続化
|
96
98
|
paginationType: "full_numbers",
|
97
99
|
lengthMenu: [[20, 50, 100, 200, 500, -1], [20, 50, 100, 200, 500, "全"]],
|
98
|
-
order: [[
|
100
|
+
order: [[ 2, "desc" ]], // 初期状態は「最新話掲載日」でソート
|
99
101
|
columns: [
|
100
102
|
// ID
|
101
103
|
{ title: "ID",
|
@@ -136,19 +138,46 @@ $(document).ready(function() {
|
|
136
138
|
orderSequence: [ "desc", "asc" ], visible: cell_visible.general_lastup,
|
137
139
|
render: function(data, type, row) {
|
138
140
|
if (type === "display" || type === "filter") {
|
139
|
-
if (!data)
|
140
|
-
return "";
|
141
|
+
if (!data) return "";
|
141
142
|
var now = new Date;
|
142
143
|
var date = new Date(data * 1000);
|
143
144
|
var diff_time = (now - date) / 1000;
|
144
145
|
var display = Narou.formatDate(date, "YYYY/MM/DD<br>hh:mm");
|
145
146
|
var klass = "";
|
147
|
+
var outerClass = "";
|
146
148
|
for (var i = 0;; i++) {
|
147
149
|
var value = GENERAL_LASTUP_CLASSES[i];
|
148
150
|
klass = value[1];
|
149
151
|
if (value[0] === -1 || diff_time <= value[0]) break;
|
150
152
|
}
|
151
|
-
|
153
|
+
|
154
|
+
// 更新日より最新話掲載日が新しい場合、新着が来ていると分かる表示をする
|
155
|
+
if (data > row.last_update) {
|
156
|
+
outerClass = "hint-new-arrival";
|
157
|
+
}
|
158
|
+
|
159
|
+
return '<div class="' + outerClass + '"><span class="general-lastup ' + klass + '">' + display + '</span></div>';
|
160
|
+
}
|
161
|
+
else if (type === "sort") {
|
162
|
+
return data * 10000 + (row.id | 0);
|
163
|
+
}
|
164
|
+
return data;
|
165
|
+
}
|
166
|
+
},
|
167
|
+
// 更新を確認した日時(Update時やgeneral_lastupチェック時に更新)
|
168
|
+
{
|
169
|
+
title: "更新チェ<br>ック日",
|
170
|
+
data: "last_check_date", className: "text-center",
|
171
|
+
orderSequence: [ "desc", "asc" ], visible: cell_visible.last_check_date,
|
172
|
+
render: function(data, type, row) {
|
173
|
+
if (type === "display" || type === "filter") {
|
174
|
+
if (!data)
|
175
|
+
return "";
|
176
|
+
var now = new Date;
|
177
|
+
var date = new Date(data * 1000);
|
178
|
+
var diff_time = (now - date) / 1000;
|
179
|
+
var display = Narou.formatDate(date, "YYYY/MM/DD<br>hh:mm");
|
180
|
+
return display;
|
152
181
|
}
|
153
182
|
else if (type === "sort") {
|
154
183
|
return data * 10000 + (row.id | 0);
|
@@ -173,6 +202,18 @@ $(document).ready(function() {
|
|
173
202
|
{ title: "タグ",
|
174
203
|
data: "tags", orderSequence: [ "desc", "asc" ], width: "70px",
|
175
204
|
visible: cell_visible.tags },
|
205
|
+
// 話数
|
206
|
+
{ title: "話数",
|
207
|
+
data: "general_all_no", visible: cell_visible.general_all_no,
|
208
|
+
className: "text-center", searchable: false, orderSequence: [ "desc", "asc" ],
|
209
|
+
render: function(data, type, row) {
|
210
|
+
data = data | 0;
|
211
|
+
if (type === "display") {
|
212
|
+
return data + "話";
|
213
|
+
}
|
214
|
+
return data;
|
215
|
+
}
|
216
|
+
},
|
176
217
|
// 状態
|
177
218
|
{ title: "状態",
|
178
219
|
data: "status", visible: cell_visible.status },
|
@@ -260,9 +301,15 @@ $(document).ready(function() {
|
|
260
301
|
searchable: false, orderable: false,
|
261
302
|
},
|
262
303
|
// 凍結状態(内部データ用)
|
263
|
-
{
|
304
|
+
{
|
305
|
+
title: "凍結", data: "frozen", visible: false, system_column: true,
|
306
|
+
searchable: false,
|
307
|
+
},
|
264
308
|
// 新着時間(内部データ用)
|
265
|
-
{
|
309
|
+
{
|
310
|
+
title: "新着時間", data: "new_arrivals_date", visible: false, system_column: true,
|
311
|
+
searchable: false
|
312
|
+
},
|
266
313
|
].map(function(hash) {
|
267
314
|
// 検索用に name 要素を追加
|
268
315
|
hash.name = hash.data;
|
@@ -1162,13 +1209,44 @@ $(document).ready(function() {
|
|
1162
1209
|
|
1163
1210
|
/*
|
1164
1211
|
* ボタン
|
1165
|
-
* Update >
|
1212
|
+
* Update > 最新話掲載日を確認
|
1166
1213
|
*/
|
1167
1214
|
$(".button-update-general-lastup").on("click", function(e) {
|
1168
1215
|
e.preventDefault();
|
1169
1216
|
action.updateGeneralLastup();
|
1170
1217
|
});
|
1171
1218
|
|
1219
|
+
|
1220
|
+
/*
|
1221
|
+
* ボタン
|
1222
|
+
* な
|
1223
|
+
* 最新話掲載日をなろうAPIで確認
|
1224
|
+
*/
|
1225
|
+
$(".button-update-general-lastup-narou").on("click", function(e) {
|
1226
|
+
e.preventDefault();
|
1227
|
+
action.updateGeneralLastupNarou();
|
1228
|
+
});
|
1229
|
+
|
1230
|
+
/*
|
1231
|
+
* ボタン
|
1232
|
+
* 他
|
1233
|
+
* その他の小説の最新話掲載日を確認
|
1234
|
+
*/
|
1235
|
+
$(".button-update-general-lastup-other").on("click", function(e) {
|
1236
|
+
e.preventDefault();
|
1237
|
+
action.updateGeneralLastupOther();
|
1238
|
+
});
|
1239
|
+
|
1240
|
+
/*
|
1241
|
+
* ボタン
|
1242
|
+
* (repeatアイコン)
|
1243
|
+
* modified タグが付いた小説を更新
|
1244
|
+
*/
|
1245
|
+
$(".button-update-general-lastup-update-modified").on("click", function(e) {
|
1246
|
+
e.preventDefault();
|
1247
|
+
action.updateGeneralLastupUpdateModified();
|
1248
|
+
});
|
1249
|
+
|
1172
1250
|
/*
|
1173
1251
|
* ボタン
|
1174
1252
|
* Update > 凍結済みも更新
|
@@ -1178,6 +1256,15 @@ $(document).ready(function() {
|
|
1178
1256
|
action.updateForce();
|
1179
1257
|
});
|
1180
1258
|
|
1259
|
+
/*
|
1260
|
+
* ボタン
|
1261
|
+
* Update > タグを指定して更新
|
1262
|
+
*/
|
1263
|
+
$(".button-update-by-tag").on("click", function(e) {
|
1264
|
+
e.preventDefault();
|
1265
|
+
action.updateByTag();
|
1266
|
+
});
|
1267
|
+
|
1181
1268
|
/*
|
1182
1269
|
* ボタン
|
1183
1270
|
* Send
|
data/lib/web/settingmessages.rb
CHANGED
@@ -18,7 +18,8 @@ module Narou
|
|
18
18
|
"<b>%NEW</b> : 最新データの差分用ファイルパス\n" \
|
19
19
|
"<b>%OLD</b> : 古い方の差分用ファイルパス",
|
20
20
|
"no-color" => "コンソールのカラー表示を無効にする\n※要WEB UIサーバ再起動",
|
21
|
-
"economy" => "容量節約に関する設定"
|
21
|
+
"economy" => "容量節約に関する設定",
|
22
|
+
"send.without-freeze" => "一括送信時に凍結された小説は対象外にする。(個別送信時は凍結済みでも送信可能)"
|
22
23
|
}
|
23
24
|
end
|
24
25
|
|
data/lib/web/views/_about.haml
CHANGED
@@ -2,6 +2,19 @@
|
|
2
2
|
+function() {
|
3
3
|
var action = new Narou.Action;
|
4
4
|
|
5
|
+
function checkVersionIsUpdated(latest, current) {
|
6
|
+
var latestNumbers = latest.split(".");
|
7
|
+
var currentNumbers = current.split(".");
|
8
|
+
for (var i = 0; i < 3; i++) {
|
9
|
+
var leftNum = latestNumbers[i] | 0;
|
10
|
+
var rightNum = currentNumbers[i] | 0;
|
11
|
+
if (leftNum !== rightNum) {
|
12
|
+
return leftNum > rightNum;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
return false;
|
16
|
+
}
|
17
|
+
|
5
18
|
function getCurrentVersion() {
|
6
19
|
var dfd = jQuery.Deferred();
|
7
20
|
$.ajax({
|
@@ -111,7 +124,7 @@
|
|
111
124
|
)
|
112
125
|
.done(function(current_version, latest_version) {
|
113
126
|
$result.children(".checking").hide();
|
114
|
-
if (latest_version
|
127
|
+
if (checkVersionIsUpdated(latest_version, current_version)) {
|
115
128
|
$("#latest-version").text(latest_version);
|
116
129
|
$result.children(".need-an-update").show();
|
117
130
|
}
|
@@ -150,7 +163,7 @@
|
|
150
163
|
%div
|
151
164
|
Version #{@narourb_version}
|
152
165
|
%div
|
153
|
-
Copyright 2013 whiteleaf. All rights reserved.
|
166
|
+
Copyright © 2013-#{Narou.last_commit_year} whiteleaf. All rights reserved.
|
154
167
|
#result-of-version-checking(style="margin-top:10px")
|
155
168
|
.checking
|
156
169
|
%span.rotate-progress
|
data/lib/web/views/index.haml
CHANGED
@@ -185,7 +185,7 @@
|
|
185
185
|
%button.close(type="button" data-dismiss="alert")
|
186
186
|
%span(aria-hidden="true") ×
|
187
187
|
%span.sr-only Close
|
188
|
-
%h2 Welcome
|
188
|
+
%h2 Welcome to Narou.rb WEB UI
|
189
189
|
%p 最初に簡単な操作説明があるヘルプをご覧下さい。なお、このメッセージは今回のみ表示されます。
|
190
190
|
%p(style="margin-top:20px")
|
191
191
|
%a.btn.btn-primary(href="/help" role="button") ヘルプを見る »
|
@@ -218,12 +218,21 @@
|
|
218
218
|
%span.caret
|
219
219
|
%span.sr-only Toggle Dropdown
|
220
220
|
%ul.dropdown-menu(role="menu")
|
221
|
+
%li
|
222
|
+
%a.button-update-general-lastup(href="#") 最新話掲載日を確認
|
223
|
+
%li
|
224
|
+
%a.button-update-by-tag(href="#") タグを指定して更新
|
221
225
|
%li
|
222
226
|
%a.button-update-view(href="#") 表示されている小説を更新
|
223
227
|
%li
|
224
228
|
%a.button-update-force(href="#") 凍結済みでも更新
|
225
|
-
|
226
|
-
|
229
|
+
.btn-group
|
230
|
+
%button.button-update-general-lastup-narou.btn.btn-success(type="button" data-toggle="tooltip" title="最新話掲載日をなろうAPIで確認")
|
231
|
+
な
|
232
|
+
%button.button-update-general-lastup-other.btn.btn-success(type="button" data-toggle="tooltip" title="その他の小説の最新話掲載日を確認")
|
233
|
+
他
|
234
|
+
%button.button-update-general-lastup-update-modified.btn.btn-success(type="button" data-toggle="tooltip" title="modifiedタグが付いた小説を更新")
|
235
|
+
%span.glyphicon.glyphicon-refresh
|
227
236
|
.btn-group
|
228
237
|
%button.button-send.btn.btn-warning(type="button" data-toggle="tooltip") Send
|
229
238
|
- if Inventory.load("local_setting")["hotentry"]
|
data/lib/web/views/layout.haml
CHANGED
@@ -6,7 +6,8 @@
|
|
6
6
|
%meta{:content => "width=device-width, initial-scale=1", :name => "viewport"}/
|
7
7
|
%meta{:content => "whiteleaf", :name => "author"}/
|
8
8
|
%meta{:content => "none", :name => "robots"}/
|
9
|
-
%title
|
9
|
+
%title
|
10
|
+
= [@title, "Narou.rb WEB UI"].compact.join(" - ")
|
10
11
|
%link{:href => "/favicon.ico", :rel => "shortcut icon"}/
|
11
12
|
- if @bootstrap_theme
|
12
13
|
%link{:href => "/theme/#{@bootstrap_theme}/bootstrap.min.css", :rel => "stylesheet"}/
|
data/lib/web/views/style.scss
CHANGED
@@ -301,6 +301,18 @@ table#novel-list {
|
|
301
301
|
/* 上記の日付以上を過ぎている */
|
302
302
|
.gl-other {
|
303
303
|
}
|
304
|
+
|
305
|
+
.hint-new-arrival {
|
306
|
+
position: relative;
|
307
|
+
|
308
|
+
&:before {
|
309
|
+
position: absolute;
|
310
|
+
content: "●";
|
311
|
+
color: rgba(#e478e1, 0.6);
|
312
|
+
top: -6px;
|
313
|
+
left: -1px;
|
314
|
+
}
|
315
|
+
}
|
304
316
|
}
|
305
317
|
|
306
318
|
.context-menu-target-cover {
|
data/narou.gemspec
CHANGED
@@ -32,17 +32,94 @@ Gem::Specification.new do |gem|
|
|
32
32
|
install_message = <<-EOS
|
33
33
|
#{"*" * 60}
|
34
34
|
|
35
|
-
|
36
|
-
|
35
|
+
3.0.0 : 2016/11/25
|
36
|
+
-------------------
|
37
|
+
#### 追加機能
|
38
|
+
- update コマンドに --ignore-all オプションを追加しました
|
39
|
+
+ 更新対象小説を指定しない場合の全件アップデート処理を無効にします
|
40
|
+
+ `narou l | narou u --ignore-all` のように PIPE で繋いだ時、処理件数が偶然
|
41
|
+
0件になった場合に意図せず全件更新にならない為に使用します
|
42
|
+
- コマンド使用時に `^tag:NAME` でタグの除外指定が出来るようになりました。
|
43
|
+
先に実装された WEB UI での除外検索は `-tag:NAME` ですが、コマンドラインでは
|
44
|
+
-tag とするとオプションと誤認識されてしまう問題があり、^ に変更しました。
|
45
|
+
+ これに合わせて、WEB UI でも ^tag: を使えるようになります(従来の -tag も
|
46
|
+
使えます)
|
47
|
+
- WEB UI 関連
|
48
|
+
- Update ボタンに「タグを指定して更新」を追加しました
|
49
|
+
- Update ボタンの「最新話更新日を確認」を刷新しました。なろうAPIを使用して
|
50
|
+
一括で更新されたかを確認することた出来るようになります
|
51
|
+
+ コマンドライン版の `narou update --gl` も同様の機能に変わっています。
|
52
|
+
詳細は narou u -h を参照
|
53
|
+
+ > “実際に小説のデータが修正されてからなろうAPIに反映されるまで平均5分
|
54
|
+
程度(最大2時間)の誤差があります。”
|
55
|
+
|
56
|
+
([公式サイト](http://dev.syosetu.com/man/api/)から引用)
|
57
|
+
+ ダイアログ内の各チェックリストの項目を独立させたものが、「な」「他」
|
58
|
+
「(更新アイコン)」ボタンに独立させてあります。詳細はマウスホーバーの説明
|
59
|
+
を参照
|
60
|
+
+ 最新話掲載日を確認した結果、新着がありそうな小説には「最新話掲載日」の
|
61
|
+
日付の左上あたりに目印が表示されます
|
62
|
+
- 小説リストに「話数」を追加しました
|
63
|
+
- 小説リストに「更新チェック日」を追加しました
|
64
|
+
- Linux でも Eject ボタンに対応しました
|
65
|
+
+ デスクトップにログインした状態での udisks-daemon または udisksd による
|
66
|
+
自動マウントにのみ対応しています
|
67
|
+
+ 使用中のデスクトップの外部で `narou web` を動かしている場合(例えばOS
|
68
|
+
起動時に自動起動させた場合やログインし直した場合)、権限の問題により
|
69
|
+
Eject が効かない場合があります
|
70
|
+
- 設定に `normalize-filename` を追加しました。ファイル名をNFCで正規化します。
|
71
|
+
Dropbox 使用時などに合成文字列関係で問題がある場合などに使用して下さい。
|
72
|
+
正規化後のファイル名が以前の物と変わった場合、別ファイルと認識されるので理解
|
73
|
+
の上で有効にして下さい
|
74
|
+
- 調査ログ保存時にエラー・警告・INFOの個数を表示するようにしました。
|
75
|
+
(`convert.inspect` が false の場合)
|
76
|
+
- setting.ini の title_date_format に、小説のタグを埋め込める書式 $ntag を追加
|
77
|
+
しました。小説にタグがついている場合、全てのタグをカンマ区切りで埋め込めます
|
78
|
+
|
37
79
|
#### 仕様変更
|
38
|
-
- WEB UI
|
39
|
-
|
40
|
-
+
|
41
|
-
|
80
|
+
- WEB UI の小説リストの初期表示状態を項目数増加に伴い整理しました
|
81
|
+
+ 初期ソートを「最新話掲載日」に変更
|
82
|
+
+ 種別、DL、更新チェック日、話数は初期状態では非表示
|
83
|
+
+ 項目追加に伴い表示のカスタマイズがリセットされるので再設定をお願いします
|
84
|
+
- 現在ユーザーフォルダに保存されている .narousetting フォルダ(グローバル設定用)
|
85
|
+
を .narou フォルダと同じ場所に移動/コピーした場合、そちらを優先して読みに
|
86
|
+
行くようになりました
|
87
|
+
+ 全てのデータが一つのフォルダにまとめることが出来るようになるので、別PCへの
|
88
|
+
データ移行がしやすくなります
|
89
|
+
+ また、現在はサーバー設定がグローバル設定で保存されているため、小説フォルダ
|
90
|
+
を分けても WEB UI サーバのアドレスが同じになってしまっていましたが、別々の
|
91
|
+
アドレス/ポートにすることが可能になります
|
92
|
+
- 複数のタグを同時に指定した場合、同じ小説が複数回対象になっていたのを一度のみ
|
93
|
+
対象になるように変更しました
|
94
|
+
+ 例) A と B というタグをもつ小説があったとして、`narou u A B` で二度更新され
|
95
|
+
てしまっていたのが、一度のみ更新されるようになる
|
96
|
+
- send --without-freeze オプションを指定時、対象小説を指定した場合でも凍結時は
|
97
|
+
送信されなくなりました。(send.without-freeze を設定していても同じ)
|
98
|
+
+ WEB UI ではこれまでと同様に一括時のみ凍結済みは送信されず、個別指定時は凍結
|
99
|
+
済みでも送信出来ます
|
100
|
+
- send --without-freeze オプションの短縮形として -w を設定しました
|
101
|
+
- send で送信時、対象小説を指定した/しないに関わらずタイムスタンプを必ず比較
|
102
|
+
して新しければ送信するように変更しました
|
103
|
+
+ 必ず送信したい場合は --force オプションを指定して下さい
|
104
|
+
- 栞のバックアップ・レストア時にタイムスタンプを見て新しい場合のみコピーする
|
105
|
+
ように変更しました
|
42
106
|
|
43
107
|
#### 修正内容
|
44
|
-
-
|
45
|
-
|
108
|
+
- カクヨムの情報が一部取得出来なくなっていた
|
109
|
+
- mail コマンド送信時に添付ファイルに @ が付いている場合、全角の@に置換する様
|
110
|
+
にしました
|
111
|
+
- WEB UI でタグ検索時にフィルター末尾に自動で半角空白を挿入するようにしました
|
112
|
+
- list コマンドで検索やタグによる絞り込みと<limit>の指定による表示個数を制限
|
113
|
+
を併用した場合に、<limit>で指定した分のみしか絞り込み対象になっていなかった
|
114
|
+
- list --filter series を指定時に一つも連載小説が表示されていなかった
|
115
|
+
- Linux 環境で send コマンドが送信出来ない場合があった #119
|
116
|
+
- 小説IDが一桁の場合に、download.use-subdirectory で作られるサブフォルダに半角
|
117
|
+
スペースが含まれてしまっていた
|
118
|
+
- WEB UI のフィルターのおいて、本来表示されない内部データにまでマッチングして
|
119
|
+
しまう不具合
|
120
|
+
- update.logging オプションが有効な場合に、アップデートをしない時でもログを
|
121
|
+
保存してしまう場合がある不具合
|
122
|
+
- その他動作の安定性を向上などの細かい修正
|
46
123
|
|
47
124
|
#{"*" * 60}
|
48
125
|
EOS
|
@@ -50,9 +127,9 @@ Gem::Specification.new do |gem|
|
|
50
127
|
|
51
128
|
gem.required_ruby_version = ">=2.1.0"
|
52
129
|
|
53
|
-
gem.files
|
54
|
-
gem.executables
|
55
|
-
|
130
|
+
gem.files = `git ls-files`.split("\n").reject { |fn| fn =~ %r!^spec/|^"spec! } << Narou.create_git_commit_version
|
131
|
+
gem.executables = gem.files.grep(%r!^bin/!).map { |f| File.basename(f) }
|
132
|
+
|
56
133
|
gem.add_runtime_dependency 'termcolorlight', '~> 1.0', '>= 1.1.1'
|
57
134
|
gem.add_runtime_dependency 'rubyzip', '~> 1.1', '>= 1.1.0'
|
58
135
|
gem.add_runtime_dependency 'mail', '2.5.4'
|
data/narou.rb
CHANGED
@@ -24,7 +24,10 @@ require_relative "lib/inventory"
|
|
24
24
|
|
25
25
|
$development = Narou.commit_version.!
|
26
26
|
begin
|
27
|
-
|
27
|
+
if $development
|
28
|
+
require "pry"
|
29
|
+
require "awesome_print"
|
30
|
+
end
|
28
31
|
rescue LoadError
|
29
32
|
end
|
30
33
|
|
@@ -44,6 +47,9 @@ begin
|
|
44
47
|
CommandLine.run(ARGV.map { |v| v.dup })
|
45
48
|
rescue SystemExit => e
|
46
49
|
exit e.status
|
50
|
+
rescue SyntaxError => e
|
51
|
+
warn e
|
52
|
+
exit Narou::EXIT_ERROR_CODE
|
47
53
|
rescue rescue_level => e
|
48
54
|
warn $@.shift + ": #{e.message.encode(Encoding::UTF_8)} (#{e.class})"
|
49
55
|
if $display_backtrace
|
data/preset/mail_setting.yaml
CHANGED
@@ -5,15 +5,27 @@
|
|
5
5
|
# ご自分の環境に適宜書き換えて下さい。
|
6
6
|
# ------------------------------------------------------------
|
7
7
|
# Send to Kindle で使う場合の注意点
|
8
|
-
#
|
9
|
-
#
|
8
|
+
# 送ったファイルがどんどんパーソナル・ドキュメントに保存されていくので、
|
9
|
+
# hotentry を有効にした場合などは特に大量に溜まって管理が大変になるので、
|
10
|
+
# パーソナル・ドキュメントの保存は無効にしたほうがよいでしょう。
|
11
|
+
#
|
12
|
+
# コンテンツと端末の管理>設定
|
13
|
+
# https://www.amazon.co.jp/mn/dcw/myx.html/ref=kinw_myk_redirect#/home/settings/payment
|
14
|
+
# > パーソナル・ドキュメント設定 > パーソナル・ドキュメントの保存
|
15
|
+
# > 保存設定を編集
|
16
|
+
#
|
17
|
+
# 上記で無効に出来ます(デフォルトでは有効になっています)
|
18
|
+
#
|
19
|
+
# また、同じファイル名で送信したとしても Kindle には別の本として受信されます。
|
20
|
+
#
|
10
21
|
|
11
22
|
# toのアドレスは
|
12
|
-
#
|
13
|
-
#
|
23
|
+
# https://www.amazon.co.jp/mn/dcw/myx.html/ref=kinw_myk_redirect#/home/settings/payment
|
24
|
+
# コンテンツと端末の管理 > パーソナル・ドキュメント設定 > Send-to-Kindle Eメールアドレスの設定
|
14
25
|
# に書いてあります。
|
15
|
-
#
|
16
|
-
:
|
26
|
+
# 自分のメールアドレス(from)が承認済みEメールアドレス一覧にあることを確認して下さい。
|
27
|
+
:from : youraccount@gmail.com
|
28
|
+
:to : youraccount@kindle.com
|
17
29
|
|
18
30
|
# 件名を「変換」にすると Kindleフォーマット(.azw) に変換される
|
19
31
|
:subject : ""
|
@@ -32,3 +44,25 @@
|
|
32
44
|
|
33
45
|
# 設定が終わったらこの項目を true にして下さい
|
34
46
|
:complete : false
|
47
|
+
|
48
|
+
|
49
|
+
# 下記は Yahoo! メールで送るための参考設定です。
|
50
|
+
#
|
51
|
+
# # Yahoo! メールはFromを正しく設定しないと送信出来ない
|
52
|
+
# :from : ヤフーID@yahoo.co.jp
|
53
|
+
# :to : hogehoge@kindle.com
|
54
|
+
#
|
55
|
+
# :subject : ""
|
56
|
+
#
|
57
|
+
# :via : smtp
|
58
|
+
# :via_options :
|
59
|
+
# :address : smtp.mail.yahoo.co.jp
|
60
|
+
# :port : 587
|
61
|
+
# :enable_starttls_auto : true
|
62
|
+
# :user_name : ヤフーID
|
63
|
+
# :password : パスワード
|
64
|
+
# :authentication : :plain
|
65
|
+
# :domain : yahoo.co.jp
|
66
|
+
#
|
67
|
+
# # 設定が終わったらこの項目を true にして下さい
|
68
|
+
# :complete : false
|