narou 3.0.5.1 → 3.1.1
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/ChangeLog.md +18 -0
- data/README.md +10 -135
- data/lib/command.rb +1 -0
- data/lib/command/clean.rb +97 -0
- data/lib/command/update.rb +17 -22
- data/lib/command/update/hotentry_manager.rb +38 -0
- data/lib/commandbase.rb +8 -4
- data/lib/downloader.rb +1 -1
- data/lib/helper.rb +2 -1
- data/lib/narou.rb +2 -2
- data/lib/sitesetting.rb +2 -5
- data/lib/version.rb +1 -1
- data/lib/web/appserver.rb +17 -3
- data/lib/web/public/resources/narou.library.js +14 -2
- data/lib/web/public/resources/narou.ui.js +9 -1
- data/lib/web/views/_about.haml +2 -1
- data/lib/web/views/index.haml +2 -1
- data/narou.gemspec +10 -130
- metadata +15 -134
- data/preset/ncode.syosetu.com/n5115cq/converter.rb +0 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1b88dda14d27df87b223b955080399ab463b85c
|
4
|
+
data.tar.gz: 775e0021c08b61a3514933bc9985a6a6e5388ce4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 916f254b9ebd6929c347d91bf64e8e601695df500ae9858c68c1c1c408cbcdefb30b970c7aa7460a570de7cfc6a7605762490a69798b272424563de5c8c99ea6
|
7
|
+
data.tar.gz: d7eee8b807d27cd7ce2912495f526fc6c52c5991b94263a73d408fdbc8d4ed90688fe3794e9e2233ad2145461527299dd0061434badd5d28adebe54a77868651
|
data/ChangeLog.md
CHANGED
@@ -2,12 +2,28 @@
|
|
2
2
|
更新履歴 - ChangeLog
|
3
3
|
====================
|
4
4
|
|
5
|
+
3.1.1 : 2017/04/05
|
6
|
+
------------------
|
7
|
+
#### 追加機能
|
8
|
+
- `clean` コマンドを実装しました。サブタイトルの変更等により参照されなくなった
|
9
|
+
ゴミファイルを削除することが出来ます。詳細は `narou clean -h`を参照して下さい
|
10
|
+
- WEB UI からメールを送信する機能を追加しました
|
11
|
+
+ Other ボタンと、個別メニューに追加されます
|
12
|
+
|
13
|
+
#### 修正内容
|
14
|
+
- Ruby 2.4 対応
|
15
|
+
- WEB UI のアバウトダイアログで、最新バージョンチェックが正しく動かなくなる場合
|
16
|
+
があったのを修正
|
17
|
+
- WEB UI から「凍結済みでも更新」が使用出来ずにエラーが出ていたのを修正
|
18
|
+
|
19
|
+
|
5
20
|
3.0.5.1 : 2017/01/17
|
6
21
|
--------------------
|
7
22
|
#### 修正内容
|
8
23
|
- 小説を管理しているフォルダのフルパスに . が含まれている場合にmailコマンドが
|
9
24
|
エラーを出す不具合
|
10
25
|
|
26
|
+
|
11
27
|
3.0.5 : 2017/01/16
|
12
28
|
-------------------
|
13
29
|
#### 仕様変更
|
@@ -27,6 +43,8 @@
|
|
27
43
|
3.0.3 : 2016/12/03
|
28
44
|
-------------------
|
29
45
|
#### 仕様変更
|
46
|
+
- WEB UI において、Update時に今まではすべての更新処理が終わるまで小説リストに
|
47
|
+
情報が反映されなかったのが、1つの作品毎に反映されるようになりました
|
30
48
|
- カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
|
31
49
|
目次の一番新しい話の日付を割り当てるように変更
|
32
50
|
|
data/README.md
CHANGED
@@ -33,144 +33,19 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
33
33
|
更新履歴 - ChangeLog
|
34
34
|
--------------------
|
35
35
|
|
36
|
-
3.
|
37
|
-
|
38
|
-
#### 修正内容
|
39
|
-
- 小説を管理しているフォルダのフルパスに . が含まれている場合にmailコマンドが
|
40
|
-
エラーを出す不具合
|
41
|
-
|
42
|
-
|
43
|
-
3.0.5 : 2017/01/16
|
44
|
-
-------------------
|
45
|
-
#### 仕様変更
|
46
|
-
- mail で送信するファイル名を `小説ID.拡張子` で固定するように変更しました
|
47
|
-
+ メールに添付するファイル名に使えない文字が使われる可能性を排除するため
|
48
|
-
|
49
|
-
#### 修正内容
|
50
|
-
- mail コマンドで送信できない小説がある
|
51
|
-
|
52
|
-
|
53
|
-
3.0.4 : 2016/12/22
|
54
|
-
-------------------
|
55
|
-
#### 修正内容
|
56
|
-
- ハーメルンのR18小説がダウンロード出来ない問題
|
57
|
-
|
58
|
-
|
59
|
-
3.0.3 : 2016/12/03
|
60
|
-
-------------------
|
61
|
-
#### 仕様変更
|
62
|
-
- カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
|
63
|
-
目次の一番新しい話の日付を割り当てるように変更
|
64
|
-
|
65
|
-
#### 修正内容
|
66
|
-
- その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
|
67
|
-
+ カクヨムの小説が含まれていると発生していた
|
68
|
-
|
69
|
-
|
70
|
-
3.0.2 : 2016/11/29
|
71
|
-
-------------------
|
72
|
-
#### 修正内容
|
73
|
-
- narou init が正常に実行できない場合がある
|
74
|
-
|
75
|
-
|
76
|
-
3.0.1 : 2016/11/28
|
77
|
-
-------------------
|
78
|
-
#### 修正内容
|
79
|
-
- 削除された小説を更新しようとするとクラッシュする場合がある
|
80
|
-
|
81
|
-
|
82
|
-
3.0.0 : 2016/11/25
|
83
|
-
-------------------
|
36
|
+
3.1.1 : 2017/04/05
|
37
|
+
------------------
|
84
38
|
#### 追加機能
|
85
|
-
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
- コマンド使用時に `^tag:NAME` でタグの除外指定が出来るようになりました。
|
90
|
-
先に実装された WEB UI での除外検索は `-tag:NAME` ですが、コマンドラインでは
|
91
|
-
-tag とするとオプションと誤認識されてしまう問題があり、^ に変更しました。
|
92
|
-
+ これに合わせて、WEB UI でも ^tag: を使えるようになります(従来の -tag も
|
93
|
-
使えます)
|
94
|
-
- WEB UI 関連
|
95
|
-
- Update ボタンに「タグを指定して更新」を追加しました
|
96
|
-
- Update ボタンの「最新話更新日を確認」を刷新しました。なろうAPIを使用して
|
97
|
-
一括で更新されたかを確認することが出来るようになります
|
98
|
-
+ コマンドライン版の `narou update --gl` も同様の機能に変わっています。
|
99
|
-
詳細は narou u -h を参照
|
100
|
-
+ > “実際に小説のデータが修正されてからなろうAPIに反映されるまで平均5分
|
101
|
-
程度(最大2時間)の誤差があります。”
|
102
|
-
|
103
|
-
([公式サイト](http://dev.syosetu.com/man/api/)から引用)
|
104
|
-
+ ダイアログ内の各チェックリストの項目を独立させたものが、「な」「他」
|
105
|
-
「(更新アイコン)」ボタンに独立させてあります。詳細はマウスホーバーの説明
|
106
|
-
を参照
|
107
|
-
+ 最新話掲載日を確認した結果、新着がありそうな小説には「最新話掲載日」の
|
108
|
-
日付の左上あたりに目印が表示されます
|
109
|
-
- 小説リストに「話数」を追加しました
|
110
|
-
- 小説リストに「更新チェック日」を追加しました
|
111
|
-
- Linux でも Eject ボタンに対応しました
|
112
|
-
+ デスクトップにログインした状態での udisks-daemon または udisksd による
|
113
|
-
自動マウントにのみ対応しています
|
114
|
-
+ 使用中のデスクトップの外部で `narou web` を動かしている場合(例えばOS
|
115
|
-
起動時に自動起動させた場合やログインし直した場合)、権限の問題により
|
116
|
-
Eject が効かない場合があります
|
117
|
-
- 設定に `normalize-filename` を追加しました。ファイル名をNFCで正規化します。
|
118
|
-
Dropbox 使用時などに合成文字列関係で問題がある場合などに使用して下さい。
|
119
|
-
正規化後のファイル名が以前の物と変わった場合、別ファイルと認識されるので理解
|
120
|
-
の上で有効にして下さい
|
121
|
-
- 調査ログ保存時にエラー・警告・INFOの個数を表示するようにしました。
|
122
|
-
(`convert.inspect` が false の場合)
|
123
|
-
- setting.ini の title_date_format に、小説のタグを埋め込める書式 $ntag を追加
|
124
|
-
しました。小説にタグがついている場合、全てのタグをカンマ区切りで埋め込めます
|
125
|
-
|
126
|
-
#### 仕様変更
|
127
|
-
- WEB UI の小説リストの初期表示状態を項目数増加に伴い整理しました
|
128
|
-
+ 初期ソートを「最新話掲載日」に変更
|
129
|
-
+ 種別、DL、更新チェック日、話数は初期状態では非表示
|
130
|
-
+ 項目追加に伴い表示のカスタマイズがリセットされるので再設定をお願いします
|
131
|
-
- 現在ユーザーフォルダに保存されている .narousetting フォルダ(グローバル設定用)
|
132
|
-
を .narou フォルダと同じ場所に移動/コピーした場合、そちらを優先して読みに
|
133
|
-
行くようになりました
|
134
|
-
+ 全てのデータが一つのフォルダにまとめることが出来るようになるので、別PCへの
|
135
|
-
データ移行がしやすくなります
|
136
|
-
+ また、現在はサーバー設定がグローバル設定で保存されているため、小説フォルダ
|
137
|
-
を分けても WEB UI サーバのアドレスが同じになってしまっていましたが、別々の
|
138
|
-
アドレス/ポートにすることが可能になります
|
139
|
-
- 複数のタグを同時に指定した場合、同じ小説が複数回対象になっていたのを一度のみ
|
140
|
-
対象になるように変更しました
|
141
|
-
+ 例) A と B というタグをもつ小説があったとして、`narou u A B` で二度更新され
|
142
|
-
てしまっていたのが、一度のみ更新されるようになる
|
143
|
-
- send --without-freeze オプションを指定時、対象小説を指定した場合でも凍結時は
|
144
|
-
送信されなくなりました。(send.without-freeze を設定していても同じ)
|
145
|
-
+ WEB UI ではこれまでと同様に一括時のみ凍結済みは送信されず、個別指定時は凍結
|
146
|
-
済みでも送信出来ます
|
147
|
-
- send --without-freeze オプションの短縮形として -w を設定しました
|
148
|
-
- send で送信時、対象小説を指定した/しないに関わらずタイムスタンプを必ず比較
|
149
|
-
して新しければ送信するように変更しました
|
150
|
-
+ 必ず送信したい場合は --force オプションを指定して下さい
|
151
|
-
- 栞のバックアップ・レストア時にタイムスタンプを見て新しい場合のみコピーする
|
152
|
-
ように変更しました
|
39
|
+
- `clean` コマンドを実装しました。サブタイトルの変更等により参照されなくなった
|
40
|
+
ゴミファイルを削除することが出来ます。詳細は `narou clean -h`を参照して下さい
|
41
|
+
- WEB UI からメールを送信する機能を追加しました
|
42
|
+
+ Other ボタンと、個別メニューに追加されます
|
153
43
|
|
154
44
|
#### 修正内容
|
155
|
-
-
|
156
|
-
-
|
157
|
-
|
158
|
-
- WEB UI
|
159
|
-
- list コマンドで検索やタグによる絞り込みと<limit>の指定による表示個数を制限
|
160
|
-
を併用した場合に、<limit>で指定した分のみしか絞り込み対象になっていなかった
|
161
|
-
- list --filter series を指定時に一つも連載小説が表示されていなかった
|
162
|
-
- Linux 環境で send コマンドが送信出来ない場合があった #119
|
163
|
-
- 小説IDが一桁の場合に、download.use-subdirectory で作られるサブフォルダに半角
|
164
|
-
スペースが含まれてしまっていた
|
165
|
-
- WEB UI のフィルターのおいて、本来表示されない内部データにまでマッチングして
|
166
|
-
しまう不具合
|
167
|
-
- update.logging オプションが有効な場合に、アップデートをしない時でもログを
|
168
|
-
保存してしまう場合がある不具合
|
169
|
-
- その他動作の安定性を向上などの細かい修正
|
170
|
-
|
171
|
-
----
|
172
|
-
|
173
|
-
過去の更新履歴は[こちらを参照](https://github.com/whiteleaf7/narou/blob/master/ChangeLog.md)
|
45
|
+
- Ruby 2.4 対応
|
46
|
+
- WEB UI のアバウトダイアログで、最新バージョンチェックが正しく動かなくなる場合
|
47
|
+
があったのを修正
|
48
|
+
- WEB UI から「凍結済みでも更新」が使用出来ずにエラーが出ていたのを修正
|
174
49
|
|
175
50
|
----
|
176
51
|
|
data/lib/command.rb
CHANGED
@@ -0,0 +1,97 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require "fileutils"
|
4
|
+
require_relative "../downloader"
|
5
|
+
require_relative "../database"
|
6
|
+
require_relative "../inventory"
|
7
|
+
|
8
|
+
module Command
|
9
|
+
class Clean < CommandBase
|
10
|
+
def self.oneline_help
|
11
|
+
"ゴミファイルを削除します"
|
12
|
+
end
|
13
|
+
|
14
|
+
def initialize
|
15
|
+
super("[<target> ...] [options]")
|
16
|
+
@opt.separator <<-EOS
|
17
|
+
|
18
|
+
・サブタイトルの変更等により参照されなくなったゴミファイルを削除します。
|
19
|
+
・対象小説を指定しなかった場合は直前に変換した小説について検査します。
|
20
|
+
|
21
|
+
Examples:
|
22
|
+
narou clean # 直前に変換した小説について検査
|
23
|
+
narou clean 6
|
24
|
+
narou clean 6 -f # 実際に削除
|
25
|
+
narou clean --all # 全小説について検査
|
26
|
+
narou clean -af # 全小説について検査して、実際に削除
|
27
|
+
Options:
|
28
|
+
EOS
|
29
|
+
|
30
|
+
@opt.on("-f", "--force", "指定した小説のゴミファイルを実際に削除する") {
|
31
|
+
@options["force"] = true
|
32
|
+
}
|
33
|
+
@opt.on("-n", "--dry-run", "指定した小説のゴミファイルを表示する") {
|
34
|
+
@options["force"] = false
|
35
|
+
}
|
36
|
+
@opt.on("-a", "--all", "全小説を検査する") {
|
37
|
+
@options["all"] = true
|
38
|
+
}
|
39
|
+
end
|
40
|
+
|
41
|
+
def execute(argv)
|
42
|
+
super
|
43
|
+
if @options["all"]
|
44
|
+
clean_all_directories(@options["force"])
|
45
|
+
return
|
46
|
+
end
|
47
|
+
if argv.empty?
|
48
|
+
latest_id = Inventory.load("latest_convert")["id"]
|
49
|
+
if latest_id
|
50
|
+
dir = Downloader.get_novel_data_dir_by_target(latest_id)
|
51
|
+
clean_directory(dir, @options["force"])
|
52
|
+
end
|
53
|
+
return
|
54
|
+
end
|
55
|
+
tagname_to_ids(argv)
|
56
|
+
argv.each do |target|
|
57
|
+
dir = Downloader.get_novel_data_dir_by_target(target)
|
58
|
+
if dir
|
59
|
+
clean_directory(dir, @options["force"])
|
60
|
+
else
|
61
|
+
error "#{target} は存在しません"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def clean_all_directories(is_remove)
|
67
|
+
Database.instance.each_key do |id|
|
68
|
+
next if Narou.novel_frozen?(id)
|
69
|
+
dir = Downloader.get_novel_data_dir_by_target(id)
|
70
|
+
clean_directory(dir, is_remove)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def clean_directory(dir, is_remove)
|
75
|
+
return unless File.directory?(dir)
|
76
|
+
return unless File.exist?(File.join(dir, Downloader::TOC_FILE_NAME))
|
77
|
+
orphans = find_orphans(dir)
|
78
|
+
orphans.each do |path|
|
79
|
+
puts path
|
80
|
+
FileUtils.remove_entry_secure(path) if is_remove
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
def find_orphans(dir)
|
85
|
+
orphans = []
|
86
|
+
toc = Downloader.get_toc_data(dir)
|
87
|
+
items = toc["subtitles"].map { |item| "#{item['index']} #{item['file_subtitle']}" }
|
88
|
+
Dir.glob(File.join(dir, Downloader::RAW_DATA_DIR_NAME, "*.txt")).each do |path|
|
89
|
+
orphans.push(path) unless items.include?(File.basename(path, ".*"))
|
90
|
+
end
|
91
|
+
Dir.glob(File.join(dir, Downloader::SECTION_SAVE_DIR_NAME, "*.yaml")).each do |path|
|
92
|
+
orphans.push(path) unless items.include?(File.basename(path, ".*"))
|
93
|
+
end
|
94
|
+
orphans
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
data/lib/command/update.rb
CHANGED
@@ -9,12 +9,15 @@ require_relative "../database"
|
|
9
9
|
require_relative "../downloader"
|
10
10
|
require_relative "../template"
|
11
11
|
require_relative "../novelconverter"
|
12
|
+
require_relative "../eventable"
|
12
13
|
require_relative "update/interval"
|
13
14
|
require_relative "update/general_lastup_updater"
|
15
|
+
require_relative "update/hotentry_manager"
|
14
16
|
|
15
17
|
module Command
|
16
18
|
class Update < CommandBase
|
17
19
|
extend Memoist
|
20
|
+
include Narou::Eventable
|
18
21
|
|
19
22
|
LOG_DIR_NAME = "log"
|
20
23
|
LOG_NUM_LIMIT = 30 # ログの保存する上限数
|
@@ -132,6 +135,16 @@ module Command
|
|
132
135
|
Narou::UPDATE_SORT_KEYS.keys.include?(key)
|
133
136
|
end
|
134
137
|
|
138
|
+
def sort_key
|
139
|
+
key = @options["sort-by"]
|
140
|
+
return nil unless key
|
141
|
+
key.downcase!
|
142
|
+
return key if valid_sort_key?(key)
|
143
|
+
error "#{key} は正しいキーではありません。次の中から選択して下さい\n " \
|
144
|
+
"#{Narou.update_sort_key_summaries(17)}"
|
145
|
+
exit Narou::EXIT_ERROR_CODE
|
146
|
+
end
|
147
|
+
|
135
148
|
# rubocop:disable Metrics/BlockLength
|
136
149
|
def execute(argv)
|
137
150
|
super
|
@@ -145,22 +158,9 @@ module Command
|
|
145
158
|
end
|
146
159
|
tagname_to_ids(update_target_list)
|
147
160
|
|
148
|
-
sort_key = @options["sort-by"]
|
149
|
-
if sort_key
|
150
|
-
sort_key.downcase!
|
151
|
-
unless valid_sort_key?(sort_key)
|
152
|
-
error "#{sort_key} は正しいキーではありません。次の中から選択して下さい\n " \
|
153
|
-
"#{Narou.update_sort_key_summaries(17)}"
|
154
|
-
exit Narou::EXIT_ERROR_CODE
|
155
|
-
end
|
156
|
-
end
|
157
161
|
flush_cache # memoist のキャッシュ削除
|
158
162
|
|
159
|
-
|
160
|
-
@options["hotentry"] = inv["hotentry"]
|
161
|
-
@options["hotentry.auto-mail"] = inv["hotentry.auto-mail"]
|
162
|
-
hotentry = {}
|
163
|
-
|
163
|
+
hotentry_manager = HotentryManager.new
|
164
164
|
interval = Interval.new(@options["interval"])
|
165
165
|
|
166
166
|
begin
|
@@ -182,13 +182,7 @@ module Command
|
|
182
182
|
end
|
183
183
|
interval.wait
|
184
184
|
downloader = Downloader.new(target)
|
185
|
-
|
186
|
-
if @options["hotentry"]
|
187
|
-
downloader.on(:newarrival) do |hash|
|
188
|
-
entry = hotentry[hash[:id]] ||= []
|
189
|
-
entry << hash[:subtitle_info]
|
190
|
-
end
|
191
|
-
end
|
185
|
+
hotentry_manager.connect(downloader)
|
192
186
|
|
193
187
|
delete_modified_tag = -> do
|
194
188
|
tags = data["tags"] || []
|
@@ -200,6 +194,7 @@ module Command
|
|
200
194
|
case result.status
|
201
195
|
when :ok
|
202
196
|
delete_modified_tag.call
|
197
|
+
trigger(:success, data)
|
203
198
|
if @options["no-convert"] ||
|
204
199
|
(@options["convert-only-new-arrival"] && !result.new_arrivals)
|
205
200
|
interval.force_wait
|
@@ -236,7 +231,7 @@ module Command
|
|
236
231
|
end
|
237
232
|
end
|
238
233
|
|
239
|
-
process_hotentry(
|
234
|
+
process_hotentry(hotentry_manager.hotentries)
|
240
235
|
end
|
241
236
|
ensure
|
242
237
|
save_log(update_log)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright 2013 whiteleaf. All rights reserved.
|
4
|
+
#
|
5
|
+
|
6
|
+
class HotentryManager
|
7
|
+
attr_reader :hotentries
|
8
|
+
|
9
|
+
def initialize
|
10
|
+
inv = Inventory.load("local_setting")
|
11
|
+
self.enable = inv["hotentry"]
|
12
|
+
self.auto_mail = inv["hotentry.auto-mail"]
|
13
|
+
self.hotentries = {}
|
14
|
+
end
|
15
|
+
|
16
|
+
def connect(downloader)
|
17
|
+
return unless enable?
|
18
|
+
downloader.on(:newarrival, &method(:store_entry))
|
19
|
+
end
|
20
|
+
|
21
|
+
def enable?
|
22
|
+
enable
|
23
|
+
end
|
24
|
+
|
25
|
+
def auto_mail?
|
26
|
+
auto_mail
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
attr_accessor :enable, :auto_mail
|
32
|
+
attr_writer :hotentries
|
33
|
+
|
34
|
+
def store_entry(hash)
|
35
|
+
entry = hotentries[hash[:id]] ||= []
|
36
|
+
entry << hash[:subtitle_info]
|
37
|
+
end
|
38
|
+
end
|
data/lib/commandbase.rb
CHANGED
@@ -100,17 +100,21 @@ module Command
|
|
100
100
|
end
|
101
101
|
|
102
102
|
#
|
103
|
-
#
|
104
|
-
#
|
103
|
+
# コマンドを実行するが、アプリケーションは終了させない
|
104
|
+
# (SystemExit を補足し、終了コードを返り値とする)
|
105
105
|
#
|
106
|
-
def
|
107
|
-
|
106
|
+
def execute!(argv)
|
107
|
+
execute(argv)
|
108
108
|
rescue SystemExit => e
|
109
109
|
e.status
|
110
110
|
else
|
111
111
|
0
|
112
112
|
end
|
113
113
|
|
114
|
+
def self.execute!(argv)
|
115
|
+
self.new.execute!(argv)
|
116
|
+
end
|
117
|
+
|
114
118
|
def self.oneline_help
|
115
119
|
""
|
116
120
|
end
|
data/lib/downloader.rb
CHANGED
data/lib/helper.rb
CHANGED
@@ -247,8 +247,9 @@ module Helper
|
|
247
247
|
result
|
248
248
|
end
|
249
249
|
|
250
|
+
INTEGER_CLASS = RUBY_VERSION >= "2.4.0" ? Integer : Fixnum
|
250
251
|
TYPE_OF_VALUE = {
|
251
|
-
TrueClass => :boolean, FalseClass => :boolean,
|
252
|
+
TrueClass => :boolean, FalseClass => :boolean, INTEGER_CLASS => :integer,
|
252
253
|
Float => :float, String => :string
|
253
254
|
}
|
254
255
|
|
data/lib/narou.rb
CHANGED
@@ -35,7 +35,7 @@ module Narou
|
|
35
35
|
@@is_web = false
|
36
36
|
|
37
37
|
def last_commit_year
|
38
|
-
|
38
|
+
2017
|
39
39
|
end
|
40
40
|
|
41
41
|
def get_root_dir
|
@@ -294,7 +294,7 @@ module Narou
|
|
294
294
|
#
|
295
295
|
def latest_version
|
296
296
|
response = `gem search ^narou$`.split("\n")
|
297
|
-
if response.last =~ /\Anarou \((
|
297
|
+
if response.last =~ /\Anarou \(([0-9.]+).*?\)\z/
|
298
298
|
$1
|
299
299
|
end
|
300
300
|
end
|
data/lib/sitesetting.rb
CHANGED
@@ -63,11 +63,8 @@ class SiteSetting
|
|
63
63
|
def replace_group_values(key, option_values = {})
|
64
64
|
dest = option_values[key] || @match_values[key] || @yaml_setting[key]
|
65
65
|
return dest if is_container?(dest)
|
66
|
-
|
67
|
-
|
68
|
-
rescue TypeError
|
69
|
-
return dest
|
70
|
-
end
|
66
|
+
return dest unless dest.respond_to?(:gsub!)
|
67
|
+
result = dest.dup
|
71
68
|
values = @yaml_setting.merge(@match_values).merge(option_values)
|
72
69
|
result.gsub!(/\\\\k<(.+?)>/) do |match|
|
73
70
|
value = values[$1]
|
data/lib/version.rb
CHANGED
data/lib/web/appserver.rb
CHANGED
@@ -575,6 +575,13 @@ class Narou::AppServer < Sinatra::Base
|
|
575
575
|
end
|
576
576
|
end
|
577
577
|
|
578
|
+
post "/api/mail" do
|
579
|
+
ids = select_valid_novel_ids(params["ids"]) || []
|
580
|
+
Narou::Worker.push do
|
581
|
+
CommandLine.run!(["mail", ids])
|
582
|
+
end
|
583
|
+
end
|
584
|
+
|
578
585
|
post "/api/update" do
|
579
586
|
ids = select_valid_novel_ids(params["ids"]) || []
|
580
587
|
opt_arguments = []
|
@@ -582,7 +589,11 @@ class Narou::AppServer < Sinatra::Base
|
|
582
589
|
opt_arguments << "--force"
|
583
590
|
end
|
584
591
|
Narou::Worker.push do
|
585
|
-
|
592
|
+
cmd = Command::Update.new
|
593
|
+
cmd.on(:success) do
|
594
|
+
@@push_server.send_all(:"table.reload")
|
595
|
+
end
|
596
|
+
cmd.execute!([ids, opt_arguments].flatten)
|
586
597
|
@@push_server.send_all(:"table.reload")
|
587
598
|
end
|
588
599
|
end
|
@@ -598,7 +609,11 @@ class Narou::AppServer < Sinatra::Base
|
|
598
609
|
end
|
599
610
|
pass if tag_params.empty?
|
600
611
|
Narou::Worker.push do
|
601
|
-
|
612
|
+
cmd = Command::Update.new
|
613
|
+
cmd.on(:success) do
|
614
|
+
@@push_server.send_all(:"table.reload")
|
615
|
+
end
|
616
|
+
cmd.execute!(tag_params)
|
602
617
|
@@push_server.send_all(:"table.reload")
|
603
618
|
end
|
604
619
|
end
|
@@ -933,4 +948,3 @@ class Narou::AppServer < Sinatra::Base
|
|
933
948
|
haml :"widget/notepad", layout: nil
|
934
949
|
end
|
935
950
|
end
|
936
|
-
|
@@ -350,7 +350,8 @@ var Narou = (function() {
|
|
350
350
|
|
351
351
|
_default_commands: [
|
352
352
|
"setting", "diff", "edit_tag", "freeze_toggle", "update",
|
353
|
-
"send", "remove", "convert", "inspect", "folder", "backup"
|
353
|
+
"send", "remove", "convert", "inspect", "folder", "backup",
|
354
|
+
"mail"
|
354
355
|
],
|
355
356
|
|
356
357
|
items: [
|
@@ -368,6 +369,7 @@ var Narou = (function() {
|
|
368
369
|
{ label: "保存フォルダを開く", command: "folder" },
|
369
370
|
{ label: "バックアップを作成", command: "backup" },
|
370
371
|
{ label: "再ダウンロード", command: "download_force" },
|
372
|
+
{ label: "メールで送信", command: "mail" },
|
371
373
|
],
|
372
374
|
|
373
375
|
events: {
|
@@ -444,6 +446,12 @@ var Narou = (function() {
|
|
444
446
|
this.action.downloadForce(this.target_id);
|
445
447
|
}.bind(this));
|
446
448
|
},
|
449
|
+
|
450
|
+
mail: function() {
|
451
|
+
this.openConsoleDialog(function() {
|
452
|
+
this.action.mail(this.target_id);
|
453
|
+
}.bind(this));
|
454
|
+
},
|
447
455
|
},
|
448
456
|
|
449
457
|
initializeMenuEvents: function() {
|
@@ -553,6 +561,11 @@ var Narou = (function() {
|
|
553
561
|
$.post("/api/download_force", { "ids": ids });
|
554
562
|
},
|
555
563
|
|
564
|
+
mail: function() {
|
565
|
+
var ids = this._getSelectedIds(arguments);
|
566
|
+
$.post("/api/mail", { "ids": ids });
|
567
|
+
},
|
568
|
+
|
556
569
|
update: function() {
|
557
570
|
var ids = this._getSelectedIds(arguments);
|
558
571
|
$.post("/api/update", { "ids": ids });
|
@@ -1802,4 +1815,3 @@ var Narou = (function() {
|
|
1802
1815
|
|
1803
1816
|
return Narou;
|
1804
1817
|
})();
|
1805
|
-
|
@@ -1366,6 +1366,15 @@ $(document).ready(function() {
|
|
1366
1366
|
action.settingBurn();
|
1367
1367
|
});
|
1368
1368
|
|
1369
|
+
/*
|
1370
|
+
* ボタン
|
1371
|
+
* Other > 選択した小説をメールで送信
|
1372
|
+
*/
|
1373
|
+
$(".button-mail").on("click", function(e) {
|
1374
|
+
e.preventDefault();
|
1375
|
+
action.mail();
|
1376
|
+
});
|
1377
|
+
|
1369
1378
|
/*
|
1370
1379
|
* ボタン
|
1371
1380
|
* Eject
|
@@ -1508,4 +1517,3 @@ $(document).ready(function() {
|
|
1508
1517
|
});
|
1509
1518
|
|
1510
1519
|
});
|
1511
|
-
|
data/lib/web/views/_about.haml
CHANGED
@@ -5,7 +5,8 @@
|
|
5
5
|
function checkVersionIsUpdated(latest, current) {
|
6
6
|
var latestNumbers = latest.split(".");
|
7
7
|
var currentNumbers = current.split(".");
|
8
|
-
|
8
|
+
var maxVersionLength = Math.max(latestNumbers.length, currentNumbers.length);
|
9
|
+
for (var i = 0; i < maxVersionLength; i++) {
|
9
10
|
var leftNum = latestNumbers[i] | 0;
|
10
11
|
var rightNum = currentNumbers[i] | 0;
|
11
12
|
if (leftNum !== rightNum) {
|
data/lib/web/views/index.haml
CHANGED
@@ -274,6 +274,8 @@
|
|
274
274
|
%a.button-backup(href="#") 選択した小説のバックアップを作成
|
275
275
|
%li
|
276
276
|
%a.button-setting-burn(href="#") 選択した小説の設定の未設定項目に共通設定を焼付ける
|
277
|
+
%li
|
278
|
+
%a.button-mail(href="#") 選択した小説をメールで送信
|
277
279
|
.btn-group.eject-group.hide
|
278
280
|
%button.button-eject.btn.btn-default(type="button" data-toggle="tooltip" title="端末を取り出す")
|
279
281
|
Eject
|
@@ -343,4 +345,3 @@
|
|
343
345
|
%a#select-color-menu-white(href="#")
|
344
346
|
%big
|
345
347
|
%span.label.label-white.label-fixed-width White
|
346
|
-
|
data/narou.gemspec
CHANGED
@@ -32,139 +32,19 @@ Gem::Specification.new do |gem|
|
|
32
32
|
install_message = <<-EOS
|
33
33
|
#{"*" * 60}
|
34
34
|
|
35
|
-
3.
|
36
|
-
|
37
|
-
#### 仕様変更
|
38
|
-
- mail で送信するファイル名を `小説ID.拡張子` で固定するように変更しました
|
39
|
-
+ メールに添付するファイル名に使えない文字が使われる可能性を排除するため
|
40
|
-
|
41
|
-
#### 修正内容
|
42
|
-
- mail コマンドで送信できない小説がある
|
43
|
-
|
44
|
-
3.0.5.1 : 2017/01/17
|
45
|
-
--------------------
|
46
|
-
#### 修正内容
|
47
|
-
- 小説を管理しているフォルダのフルパスに . が含まれている場合にmailコマンドが
|
48
|
-
エラーを出す不具合
|
49
|
-
|
50
|
-
|
51
|
-
3.0.4 : 2016/12/22
|
52
|
-
-------------------
|
53
|
-
#### 修正内容
|
54
|
-
- ハーメルンのR18小説がダウンロード出来ない問題
|
55
|
-
|
56
|
-
|
57
|
-
3.0.3 : 2016/12/03
|
58
|
-
-------------------
|
59
|
-
#### 仕様変更
|
60
|
-
- カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
|
61
|
-
目次の一番新しい話の日付を割り当てるように変更
|
62
|
-
|
63
|
-
#### 修正内容
|
64
|
-
- その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
|
65
|
-
+ カクヨムの小説が含まれていると発生していた
|
66
|
-
|
67
|
-
|
68
|
-
3.0.2 : 2016/11/29
|
69
|
-
-------------------
|
70
|
-
#### 修正内容
|
71
|
-
- narou init が正常に実行できない場合がある
|
72
|
-
|
73
|
-
|
74
|
-
3.0.1 : 2016/11/28
|
75
|
-
-------------------
|
76
|
-
#### 修正内容
|
77
|
-
- 削除された小説を更新しようとするとクラッシュする場合がある
|
78
|
-
|
79
|
-
|
80
|
-
3.0.0 : 2016/11/25
|
81
|
-
-------------------
|
35
|
+
3.1.1 : 2017/04/05
|
36
|
+
------------------
|
82
37
|
#### 追加機能
|
83
|
-
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
- コマンド使用時に `^tag:NAME` でタグの除外指定が出来るようになりました。
|
88
|
-
先に実装された WEB UI での除外検索は `-tag:NAME` ですが、コマンドラインでは
|
89
|
-
-tag とするとオプションと誤認識されてしまう問題があり、^ に変更しました。
|
90
|
-
+ これに合わせて、WEB UI でも ^tag: を使えるようになります(従来の -tag も
|
91
|
-
使えます)
|
92
|
-
- WEB UI 関連
|
93
|
-
- Update ボタンに「タグを指定して更新」を追加しました
|
94
|
-
- Update ボタンの「最新話更新日を確認」を刷新しました。なろうAPIを使用して
|
95
|
-
一括で更新されたかを確認することが出来るようになります
|
96
|
-
+ コマンドライン版の `narou update --gl` も同様の機能に変わっています。
|
97
|
-
詳細は narou u -h を参照
|
98
|
-
+ > “実際に小説のデータが修正されてからなろうAPIに反映されるまで平均5分
|
99
|
-
程度(最大2時間)の誤差があります。”
|
100
|
-
|
101
|
-
([公式サイト](http://dev.syosetu.com/man/api/)から引用)
|
102
|
-
+ ダイアログ内の各チェックリストの項目を独立させたものが、「な」「他」
|
103
|
-
「(更新アイコン)」ボタンに独立させてあります。詳細はマウスホーバーの説明
|
104
|
-
を参照
|
105
|
-
+ 最新話掲載日を確認した結果、新着がありそうな小説には「最新話掲載日」の
|
106
|
-
日付の左上あたりに目印が表示されます
|
107
|
-
- 小説リストに「話数」を追加しました
|
108
|
-
- 小説リストに「更新チェック日」を追加しました
|
109
|
-
- Linux でも Eject ボタンに対応しました
|
110
|
-
+ デスクトップにログインした状態での udisks-daemon または udisksd による
|
111
|
-
自動マウントにのみ対応しています
|
112
|
-
+ 使用中のデスクトップの外部で `narou web` を動かしている場合(例えばOS
|
113
|
-
起動時に自動起動させた場合やログインし直した場合)、権限の問題により
|
114
|
-
Eject が効かない場合があります
|
115
|
-
- 設定に `normalize-filename` を追加しました。ファイル名をNFCで正規化します。
|
116
|
-
Dropbox 使用時などに合成文字列関係で問題がある場合などに使用して下さい。
|
117
|
-
正規化後のファイル名が以前の物と変わった場合、別ファイルと認識されるので理解
|
118
|
-
の上で有効にして下さい
|
119
|
-
- 調査ログ保存時にエラー・警告・INFOの個数を表示するようにしました。
|
120
|
-
(`convert.inspect` が false の場合)
|
121
|
-
- setting.ini の title_date_format に、小説のタグを埋め込める書式 $ntag を追加
|
122
|
-
しました。小説にタグがついている場合、全てのタグをカンマ区切りで埋め込めます
|
123
|
-
|
124
|
-
#### 仕様変更
|
125
|
-
- WEB UI の小説リストの初期表示状態を項目数増加に伴い整理しました
|
126
|
-
+ 初期ソートを「最新話掲載日」に変更
|
127
|
-
+ 種別、DL、更新チェック日、話数は初期状態では非表示
|
128
|
-
+ 項目追加に伴い表示のカスタマイズがリセットされるので再設定をお願いします
|
129
|
-
- 現在ユーザーフォルダに保存されている .narousetting フォルダ(グローバル設定用)
|
130
|
-
を .narou フォルダと同じ場所に移動/コピーした場合、そちらを優先して読みに
|
131
|
-
行くようになりました
|
132
|
-
+ 全てのデータが一つのフォルダにまとめることが出来るようになるので、別PCへの
|
133
|
-
データ移行がしやすくなります
|
134
|
-
+ また、現在はサーバー設定がグローバル設定で保存されているため、小説フォルダ
|
135
|
-
を分けても WEB UI サーバのアドレスが同じになってしまっていましたが、別々の
|
136
|
-
アドレス/ポートにすることが可能になります
|
137
|
-
- 複数のタグを同時に指定した場合、同じ小説が複数回対象になっていたのを一度のみ
|
138
|
-
対象になるように変更しました
|
139
|
-
+ 例) A と B というタグをもつ小説があったとして、`narou u A B` で二度更新され
|
140
|
-
てしまっていたのが、一度のみ更新されるようになる
|
141
|
-
- send --without-freeze オプションを指定時、対象小説を指定した場合でも凍結時は
|
142
|
-
送信されなくなりました。(send.without-freeze を設定していても同じ)
|
143
|
-
+ WEB UI ではこれまでと同様に一括時のみ凍結済みは送信されず、個別指定時は凍結
|
144
|
-
済みでも送信出来ます
|
145
|
-
- send --without-freeze オプションの短縮形として -w を設定しました
|
146
|
-
- send で送信時、対象小説を指定した/しないに関わらずタイムスタンプを必ず比較
|
147
|
-
して新しければ送信するように変更しました
|
148
|
-
+ 必ず送信したい場合は --force オプションを指定して下さい
|
149
|
-
- 栞のバックアップ・レストア時にタイムスタンプを見て新しい場合のみコピーする
|
150
|
-
ように変更しました
|
38
|
+
- `clean` コマンドを実装しました。サブタイトルの変更等により参照されなくなった
|
39
|
+
ゴミファイルを削除することが出来ます。詳細は `narou clean -h`を参照して下さい
|
40
|
+
- WEB UI からメールを送信する機能を追加しました
|
41
|
+
+ Other ボタンと、個別メニューに追加されます
|
151
42
|
|
152
43
|
#### 修正内容
|
153
|
-
-
|
154
|
-
-
|
155
|
-
|
156
|
-
- WEB UI
|
157
|
-
- list コマンドで検索やタグによる絞り込みと<limit>の指定による表示個数を制限
|
158
|
-
を併用した場合に、<limit>で指定した分のみしか絞り込み対象になっていなかった
|
159
|
-
- list --filter series を指定時に一つも連載小説が表示されていなかった
|
160
|
-
- Linux 環境で send コマンドが送信出来ない場合があった #119
|
161
|
-
- 小説IDが一桁の場合に、download.use-subdirectory で作られるサブフォルダに半角
|
162
|
-
スペースが含まれてしまっていた
|
163
|
-
- WEB UI のフィルターのおいて、本来表示されない内部データにまでマッチングして
|
164
|
-
しまう不具合
|
165
|
-
- update.logging オプションが有効な場合に、アップデートをしない時でもログを
|
166
|
-
保存してしまう場合がある不具合
|
167
|
-
- その他動作の安定性を向上などの細かい修正
|
44
|
+
- Ruby 2.4 対応
|
45
|
+
- WEB UI のアバウトダイアログで、最新バージョンチェックが正しく動かなくなる場合
|
46
|
+
があったのを修正
|
47
|
+
- WEB UI から「凍結済みでも更新」が使用出来ずにエラーが出ていたのを修正
|
168
48
|
|
169
49
|
#{"*" * 60}
|
170
50
|
EOS
|
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
|
+
version: 3.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whiteleaf7
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-04-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: termcolorlight
|
@@ -292,6 +292,7 @@ files:
|
|
292
292
|
- lib/command/alias.rb
|
293
293
|
- lib/command/backup.rb
|
294
294
|
- lib/command/browser.rb
|
295
|
+
- lib/command/clean.rb
|
295
296
|
- lib/command/convert.rb
|
296
297
|
- lib/command/csv.rb
|
297
298
|
- lib/command/diff.rb
|
@@ -310,6 +311,7 @@ files:
|
|
310
311
|
- lib/command/tag.rb
|
311
312
|
- lib/command/update.rb
|
312
313
|
- lib/command/update/general_lastup_updater.rb
|
314
|
+
- lib/command/update/hotentry_manager.rb
|
313
315
|
- lib/command/update/interval.rb
|
314
316
|
- lib/command/version.rb
|
315
317
|
- lib/command/web.rb
|
@@ -450,7 +452,6 @@ files:
|
|
450
452
|
- preset/ncode.syosetu.com/n3730bn/converter.rb
|
451
453
|
- preset/ncode.syosetu.com/n4259s/converter.rb
|
452
454
|
- preset/ncode.syosetu.com/n4259s/setting.ini
|
453
|
-
- preset/ncode.syosetu.com/n5115cq/converter.rb
|
454
455
|
- preset/ncode.syosetu.com/n5530cf/converter.rb
|
455
456
|
- preset/ncode.syosetu.com/n7594ct/converter.rb
|
456
457
|
- preset/ncode.syosetu.com/n7975cr/setting.ini
|
@@ -485,139 +486,19 @@ metadata: {}
|
|
485
486
|
post_install_message: |
|
486
487
|
************************************************************
|
487
488
|
|
488
|
-
3.
|
489
|
-
|
490
|
-
#### 仕様変更
|
491
|
-
- mail で送信するファイル名を `小説ID.拡張子` で固定するように変更しました
|
492
|
-
+ メールに添付するファイル名に使えない文字が使われる可能性を排除するため
|
493
|
-
|
494
|
-
#### 修正内容
|
495
|
-
- mail コマンドで送信できない小説がある
|
496
|
-
|
497
|
-
3.0.5.1 : 2017/01/17
|
498
|
-
--------------------
|
499
|
-
#### 修正内容
|
500
|
-
- 小説を管理しているフォルダのフルパスに . が含まれている場合にmailコマンドが
|
501
|
-
エラーを出す不具合
|
502
|
-
|
503
|
-
|
504
|
-
3.0.4 : 2016/12/22
|
505
|
-
-------------------
|
506
|
-
#### 修正内容
|
507
|
-
- ハーメルンのR18小説がダウンロード出来ない問題
|
508
|
-
|
509
|
-
|
510
|
-
3.0.3 : 2016/12/03
|
511
|
-
-------------------
|
512
|
-
#### 仕様変更
|
513
|
-
- カクヨムの小説の最新話掲載日が今までは「最終更新日」から取得していたのを、
|
514
|
-
目次の一番新しい話の日付を割り当てるように変更
|
515
|
-
|
516
|
-
#### 修正内容
|
517
|
-
- その他の小説の最新話掲載日を確認しようとするとクラッシュする場合がある問題
|
518
|
-
+ カクヨムの小説が含まれていると発生していた
|
519
|
-
|
520
|
-
|
521
|
-
3.0.2 : 2016/11/29
|
522
|
-
-------------------
|
523
|
-
#### 修正内容
|
524
|
-
- narou init が正常に実行できない場合がある
|
525
|
-
|
526
|
-
|
527
|
-
3.0.1 : 2016/11/28
|
528
|
-
-------------------
|
529
|
-
#### 修正内容
|
530
|
-
- 削除された小説を更新しようとするとクラッシュする場合がある
|
531
|
-
|
532
|
-
|
533
|
-
3.0.0 : 2016/11/25
|
534
|
-
-------------------
|
489
|
+
3.1.1 : 2017/04/05
|
490
|
+
------------------
|
535
491
|
#### 追加機能
|
536
|
-
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
- コマンド使用時に `^tag:NAME` でタグの除外指定が出来るようになりました。
|
541
|
-
先に実装された WEB UI での除外検索は `-tag:NAME` ですが、コマンドラインでは
|
542
|
-
-tag とするとオプションと誤認識されてしまう問題があり、^ に変更しました。
|
543
|
-
+ これに合わせて、WEB UI でも ^tag: を使えるようになります(従来の -tag も
|
544
|
-
使えます)
|
545
|
-
- WEB UI 関連
|
546
|
-
- Update ボタンに「タグを指定して更新」を追加しました
|
547
|
-
- Update ボタンの「最新話更新日を確認」を刷新しました。なろうAPIを使用して
|
548
|
-
一括で更新されたかを確認することが出来るようになります
|
549
|
-
+ コマンドライン版の `narou update --gl` も同様の機能に変わっています。
|
550
|
-
詳細は narou u -h を参照
|
551
|
-
+ > “実際に小説のデータが修正されてからなろうAPIに反映されるまで平均5分
|
552
|
-
程度(最大2時間)の誤差があります。”
|
553
|
-
|
554
|
-
([公式サイト](http://dev.syosetu.com/man/api/)から引用)
|
555
|
-
+ ダイアログ内の各チェックリストの項目を独立させたものが、「な」「他」
|
556
|
-
「(更新アイコン)」ボタンに独立させてあります。詳細はマウスホーバーの説明
|
557
|
-
を参照
|
558
|
-
+ 最新話掲載日を確認した結果、新着がありそうな小説には「最新話掲載日」の
|
559
|
-
日付の左上あたりに目印が表示されます
|
560
|
-
- 小説リストに「話数」を追加しました
|
561
|
-
- 小説リストに「更新チェック日」を追加しました
|
562
|
-
- Linux でも Eject ボタンに対応しました
|
563
|
-
+ デスクトップにログインした状態での udisks-daemon または udisksd による
|
564
|
-
自動マウントにのみ対応しています
|
565
|
-
+ 使用中のデスクトップの外部で `narou web` を動かしている場合(例えばOS
|
566
|
-
起動時に自動起動させた場合やログインし直した場合)、権限の問題により
|
567
|
-
Eject が効かない場合があります
|
568
|
-
- 設定に `normalize-filename` を追加しました。ファイル名をNFCで正規化します。
|
569
|
-
Dropbox 使用時などに合成文字列関係で問題がある場合などに使用して下さい。
|
570
|
-
正規化後のファイル名が以前の物と変わった場合、別ファイルと認識されるので理解
|
571
|
-
の上で有効にして下さい
|
572
|
-
- 調査ログ保存時にエラー・警告・INFOの個数を表示するようにしました。
|
573
|
-
(`convert.inspect` が false の場合)
|
574
|
-
- setting.ini の title_date_format に、小説のタグを埋め込める書式 $ntag を追加
|
575
|
-
しました。小説にタグがついている場合、全てのタグをカンマ区切りで埋め込めます
|
576
|
-
|
577
|
-
#### 仕様変更
|
578
|
-
- WEB UI の小説リストの初期表示状態を項目数増加に伴い整理しました
|
579
|
-
+ 初期ソートを「最新話掲載日」に変更
|
580
|
-
+ 種別、DL、更新チェック日、話数は初期状態では非表示
|
581
|
-
+ 項目追加に伴い表示のカスタマイズがリセットされるので再設定をお願いします
|
582
|
-
- 現在ユーザーフォルダに保存されている .narousetting フォルダ(グローバル設定用)
|
583
|
-
を .narou フォルダと同じ場所に移動/コピーした場合、そちらを優先して読みに
|
584
|
-
行くようになりました
|
585
|
-
+ 全てのデータが一つのフォルダにまとめることが出来るようになるので、別PCへの
|
586
|
-
データ移行がしやすくなります
|
587
|
-
+ また、現在はサーバー設定がグローバル設定で保存されているため、小説フォルダ
|
588
|
-
を分けても WEB UI サーバのアドレスが同じになってしまっていましたが、別々の
|
589
|
-
アドレス/ポートにすることが可能になります
|
590
|
-
- 複数のタグを同時に指定した場合、同じ小説が複数回対象になっていたのを一度のみ
|
591
|
-
対象になるように変更しました
|
592
|
-
+ 例) A と B というタグをもつ小説があったとして、`narou u A B` で二度更新され
|
593
|
-
てしまっていたのが、一度のみ更新されるようになる
|
594
|
-
- send --without-freeze オプションを指定時、対象小説を指定した場合でも凍結時は
|
595
|
-
送信されなくなりました。(send.without-freeze を設定していても同じ)
|
596
|
-
+ WEB UI ではこれまでと同様に一括時のみ凍結済みは送信されず、個別指定時は凍結
|
597
|
-
済みでも送信出来ます
|
598
|
-
- send --without-freeze オプションの短縮形として -w を設定しました
|
599
|
-
- send で送信時、対象小説を指定した/しないに関わらずタイムスタンプを必ず比較
|
600
|
-
して新しければ送信するように変更しました
|
601
|
-
+ 必ず送信したい場合は --force オプションを指定して下さい
|
602
|
-
- 栞のバックアップ・レストア時にタイムスタンプを見て新しい場合のみコピーする
|
603
|
-
ように変更しました
|
492
|
+
- `clean` コマンドを実装しました。サブタイトルの変更等により参照されなくなった
|
493
|
+
ゴミファイルを削除することが出来ます。詳細は `narou clean -h`を参照して下さい
|
494
|
+
- WEB UI からメールを送信する機能を追加しました
|
495
|
+
+ Other ボタンと、個別メニューに追加されます
|
604
496
|
|
605
497
|
#### 修正内容
|
606
|
-
-
|
607
|
-
-
|
608
|
-
|
609
|
-
- WEB UI
|
610
|
-
- list コマンドで検索やタグによる絞り込みと<limit>の指定による表示個数を制限
|
611
|
-
を併用した場合に、<limit>で指定した分のみしか絞り込み対象になっていなかった
|
612
|
-
- list --filter series を指定時に一つも連載小説が表示されていなかった
|
613
|
-
- Linux 環境で send コマンドが送信出来ない場合があった #119
|
614
|
-
- 小説IDが一桁の場合に、download.use-subdirectory で作られるサブフォルダに半角
|
615
|
-
スペースが含まれてしまっていた
|
616
|
-
- WEB UI のフィルターのおいて、本来表示されない内部データにまでマッチングして
|
617
|
-
しまう不具合
|
618
|
-
- update.logging オプションが有効な場合に、アップデートをしない時でもログを
|
619
|
-
保存してしまう場合がある不具合
|
620
|
-
- その他動作の安定性を向上などの細かい修正
|
498
|
+
- Ruby 2.4 対応
|
499
|
+
- WEB UI のアバウトダイアログで、最新バージョンチェックが正しく動かなくなる場合
|
500
|
+
があったのを修正
|
501
|
+
- WEB UI から「凍結済みでも更新」が使用出来ずにエラーが出ていたのを修正
|
621
502
|
|
622
503
|
************************************************************
|
623
504
|
rdoc_options: []
|
@@ -635,7 +516,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
635
516
|
version: '0'
|
636
517
|
requirements: []
|
637
518
|
rubyforge_project:
|
638
|
-
rubygems_version: 2.
|
519
|
+
rubygems_version: 2.6.8
|
639
520
|
signing_key:
|
640
521
|
specification_version: 4
|
641
522
|
summary: Narou.rb ― 小説家になろうダウンローダ&縦書用整形スクリプト
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
#
|
4
|
-
# 対象小説情報
|
5
|
-
# タイトル: 最果てのパラディン
|
6
|
-
# 作者: 柳野かなた
|
7
|
-
# URL: http://ncode.syosetu.com/n5115cq/
|
8
|
-
#
|
9
|
-
# 詳細については http://bit.ly/1vTEH04 を参照して下さい
|
10
|
-
#
|
11
|
-
converter "n5115cq 最果てのパラディン" do
|
12
|
-
# 各種変換処理がされる「前」の生データに対しての変換処理を記述
|
13
|
-
def before(io, text_type)
|
14
|
-
super
|
15
|
-
if text_type == "body"
|
16
|
-
io.string.gsub!("|《命ず》、《ネー・》", "|《命ず》《ネー・》、")
|
17
|
-
io.string.gsub!(/[||]《([^《》]+)》《((?:\p{Hiragana}|\p{Katakana}|[・ー])+)》/) do |match|
|
18
|
-
@inspector.info("ルビを調整\n" + match)
|
19
|
-
"|≪#{$1}≫《#{$2}》"
|
20
|
-
end
|
21
|
-
end
|
22
|
-
io
|
23
|
-
end
|
24
|
-
|
25
|
-
# 各種変換処理がされた「後」のデータに対しての変換処理を記述
|
26
|
-
def after(io, text_type)
|
27
|
-
super
|
28
|
-
io
|
29
|
-
end
|
30
|
-
end
|