narou 2.6.1 → 2.7.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/ChangeLog.md +65 -0
- data/README.md +69 -22
- data/lib/command.rb +1 -0
- data/lib/command/alias.rb +2 -2
- data/lib/command/convert.rb +3 -3
- data/lib/command/csv.rb +108 -0
- data/lib/command/download.rb +13 -1
- data/lib/command/freeze.rb +1 -1
- data/lib/command/init.rb +5 -1
- data/lib/command/inspect.rb +1 -1
- data/lib/command/mail.rb +1 -1
- data/lib/command/send.rb +2 -2
- data/lib/command/setting.rb +17 -1
- data/lib/command/tag.rb +28 -9
- data/lib/command/update.rb +57 -30
- data/lib/commandbase.rb +3 -2
- data/lib/commandline.rb +2 -2
- data/lib/converterbase.rb +70 -7
- data/lib/database.rb +1 -1
- data/lib/device.rb +3 -0
- data/lib/device/ibooks.rb +2 -2
- data/lib/device/ibunko.rb +4 -0
- data/lib/diffviewer.rb +2 -2
- data/lib/downloader.rb +16 -9
- data/lib/helper.rb +53 -22
- data/lib/inventory.rb +6 -2
- data/lib/narou.rb +13 -6
- data/lib/novelconverter.rb +35 -13
- data/lib/novelsetting.rb +7 -1
- data/lib/version.rb +1 -1
- data/lib/web/appserver.rb +78 -8
- data/lib/web/public/resources/common.ui.js +0 -39
- data/lib/web/public/resources/dataTables.colVis.js +1 -1
- data/lib/web/public/resources/default-style.css +1 -1
- data/lib/web/public/resources/help/bookmarklet1.png +0 -0
- data/lib/web/public/resources/help/bookmarklet2.png +0 -0
- data/lib/web/public/resources/images/dl_button0.gif +0 -0
- data/lib/web/public/resources/images/dl_button1.gif +0 -0
- data/lib/web/public/resources/narou.library.js +268 -36
- data/lib/web/public/resources/narou.queue.js +51 -0
- data/lib/web/public/resources/narou.ui.js +156 -59
- data/lib/web/settingmessages.rb +2 -1
- data/lib/web/views/{js/widget.erb → bookmarklet/download.js.erb} +1 -1
- data/lib/web/views/bookmarklet/insert_button.js.erb +133 -0
- data/lib/web/views/help.haml +31 -14
- data/lib/web/views/index.haml +62 -0
- data/lib/web/views/layout.haml +8 -7
- data/lib/web/views/parts/csv_import.haml +68 -0
- data/lib/web/views/parts/download_form.haml +89 -0
- data/lib/web/views/settings.haml +8 -3
- data/lib/web/views/style.scss +200 -14
- data/lib/web/views/{widget.haml → widget/download.haml} +18 -4
- data/lib/web/views/widget/drag_and_drop.haml +97 -0
- data/lib/web/worker.rb +39 -1
- data/narou.gemspec +56 -56
- data/preset/custom_chuki_tag.txt +1 -1
- data/preset/doubledash.png +0 -0
- data/preset/singledash.png +0 -0
- data/preset/vertical_font.css +1 -1
- data/spec/convert_spec.rb +5 -1
- data/spec/data/convert_test/auto_join_line/correct_test_auto_join_line.txt +6 -0
- data/spec/data/convert_test/auto_join_line/test_auto_join_line.txt +8 -0
- data/spec/data/convert_test/double_dash_to_image/correct_test_double_dash_to_image.txt +14 -0
- data/spec/data/convert_test/double_dash_to_image/setting.ini +1 -0
- data/spec/data/convert_test/double_dash_to_image/test_double_dash_to_image.txt +12 -0
- data/spec/worker_spec.rb +21 -2
- metadata +97 -60
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3ad5855c414296921dcea81e7edfa60fba1bf355
|
4
|
+
data.tar.gz: b9a258222bc33cc182851275e8484545be3de585
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d8fbd19bb073510f960484d31a0ed7d681ca3f392a3fca8d3f8fbe68917d35498a45f5a77acf78bded6156f5770a9ef360b77ee47e3228c9f3488fc306ed693f
|
7
|
+
data.tar.gz: 92f111efe1afe91ac89ceb6a9453618b7f647a2ef62c7c1b1be09792a3a66443328ae111b7de0fd6570ac865d1dd5595f8328189e8e1b31187d8992f01fe2e75
|
data/ChangeLog.md
CHANGED
@@ -2,6 +2,70 @@
|
|
2
2
|
更新履歴 - ChangeLog
|
3
3
|
====================
|
4
4
|
|
5
|
+
2.7.0 : 2015/08/23
|
6
|
+
------------------
|
7
|
+
#### 追加機能
|
8
|
+
- setting.ini に `enable_double_dash_to_image` を追加しました
|
9
|
+
+ 2倍ダッシュ(――)を画像に差し替えます。細めに調整してあるので、Kindle の
|
10
|
+
デフォルトフォントの様にダッシュが太い環境でご使用ください(iBooksだと崩れる
|
11
|
+
ので使わない方が良いです)
|
12
|
+
+ `narou init` が必要です
|
13
|
+
- `csv` コマンドを実装しました。管理している小説の情報をCSV形式で出力したり、
|
14
|
+
インポートしたり出来ます。詳細は `narou csv -h` を参照して下さい
|
15
|
+
- 容量節約のための設定 `economy` を追加しました。変換後の作業ファイルの削除等を
|
16
|
+
制御できます
|
17
|
+
+ 設定は `narou s economy=設定値をカンマ区切り` or WEB UI の環境設定>詳細
|
18
|
+
- cleanup_temp : 変換後に作業ファイルを削除
|
19
|
+
- send_delete : 送信後に書籍ファイルを削除
|
20
|
+
- nosave_diff : 差分ファイルを保存しない
|
21
|
+
- nosave_raw : rawデータを保存しない
|
22
|
+
- ネタバレ防止設定 `guard-spoiler` を追加しました。ダウンロード時に各話タイトル
|
23
|
+
を伏せ字で表示します
|
24
|
+
+ 設定は `narou s guard-spoiler=true` or WEB UI の環境設定>詳細
|
25
|
+
- 処理の中断関係を強化しました
|
26
|
+
+ update 中に中断した場合は以降の更新は全てキャンセルされるようになります
|
27
|
+
+ 変換中に処理を中断した場合、次回の update コマンド実行時に再変換されます
|
28
|
+
|
29
|
+
#### WEB UI
|
30
|
+
- タグの色を変更出来るようにしました
|
31
|
+
- 「処理の中断」ボタンをコンソール右上に追加しました。現在処理しているものも
|
32
|
+
含めて、全てのキューを破棄します
|
33
|
+
- 「個別>差分を表示」で表示されるダイアログに「差分を消去」ボタンを追加しました
|
34
|
+
- リンクのドラッグ&ドロップに対応しました。Downloadボタンを押すか「ツール>D&D
|
35
|
+
ウィンドウを開く」を実行して下さい
|
36
|
+
+ 文章内リンク及びMacとWindowsのショートカットファイル(複数可)に対応
|
37
|
+
+ IEにおいて、ドメイン間でリンクをD&Dするためには設定が必要です。
|
38
|
+
http://whiteleaf.hatenablog.com/entry/ie_dnd_setting を参照して下さい
|
39
|
+
- 「ツール>CSV形式でリストをダウンロード」を追加しました
|
40
|
+
- 「ツール>CSVファイルからインポート」を追加しました
|
41
|
+
- 新しいブックマークレット「DLボタンを設置」を追加しました。WEB UIのヘルプから
|
42
|
+
取得できます
|
43
|
+
- 選択モードにハイブリッド選択モードを追加しました。クリックで選択、ドラッグで
|
44
|
+
範囲選択が出来ます
|
45
|
+
- hotentry が有効な場合に Send ボタンに「hotentry を送信」を追加するようにしました
|
46
|
+
- ブックマークレットで表示されるウィンドウにキューアイコンを表示するように変更
|
47
|
+
- fix: FirefoxとIEで小説リスト上のタグ検索の解除ボタンを押した場合、ツールチップが
|
48
|
+
消えない場合があったのを修正
|
49
|
+
- fix: IEでメニューのタグ一覧が自動で更新されていなかったのを修正
|
50
|
+
- fix: メニューが隠れた際にメニュー部分の背景色が消えていたのを修正
|
51
|
+
- fix: 差分表示で変更後の行が太字になっていないのを修正
|
52
|
+
- fix: リストが自動更新された際に範囲選択モードのままボタンが押せなかったのを修正
|
53
|
+
|
54
|
+
#### 仕様変更
|
55
|
+
- `tag` コマンドで対象小説を指定しなくてもタグの色を変更出来るようにしました
|
56
|
+
- 変換設定の `enable_auto_join_line` が有効な場合で、行末読点の次の行頭に全角
|
57
|
+
スペースが2個以上ある場合は連結しないようにしました
|
58
|
+
- converter.rb 内から処理中の小説に関するデータを取得できるようにしました
|
59
|
+
+ @subtitles: その小説の処理対象の情報(Hash)が入っている配列。hotentry 処理中
|
60
|
+
の場合は新規部分のみしか入っていない
|
61
|
+
+ @current_index: 現在何話目を処理しているか(0から@subtitles.size-1まで)
|
62
|
+
|
63
|
+
#### BugFix
|
64
|
+
- Windowsにおいて日本語を含むフォルダで narou init しようとするとエラーが出て
|
65
|
+
いたのを修正
|
66
|
+
- `update --gl` コマンドでエラーが起きる場合があったのを修正
|
67
|
+
|
68
|
+
|
5
69
|
2.6.1 : 2015/08/03
|
6
70
|
------------------
|
7
71
|
#### 追加機能
|
@@ -32,6 +96,7 @@
|
|
32
96
|
送信します(mail の設定が済んでいる場合のみ)
|
33
97
|
+ 変換設定は各小説の設定がそれぞれ適用されます
|
34
98
|
+ multi-device には未対応です
|
99
|
+
+ 挿絵は表示出来ません
|
35
100
|
- `update` コマンドに凍結済みでも更新する `--force` オプションを追加しました
|
36
101
|
- `setting` コマンドに `--burn` オプションを追加しました
|
37
102
|
+ 指定した小説の setting.ini の未設定項目に共通設定を焼付け(書き込み)ます
|
data/README.md
CHANGED
@@ -25,17 +25,84 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
25
25
|
+ Arcadia http://www.mai-net.net/
|
26
26
|
+ 暁 http://www.akatsuki-novels.com/
|
27
27
|
|
28
|
-
コンソールで操作するアプリケーションですが、ブラウザを使って直感的に操作することができる WEB UI
|
28
|
+
コンソールで操作するアプリケーションですが、ブラウザを使って直感的に操作することができる WEB UI も搭載!([デモページ](http://whiteleaf7.github.io/narou/demo/))
|
29
29
|
|
30
30
|
主な機能は小説家になろうの小説のダウンロード、更新管理、テキスト整形、AozoraEpub3・kindlegen連携によるEPUB/MOBI出力です。
|
31
31
|
|
32
32
|
詳細な説明やインストール方法は **[Narou.rb 説明書](https://github.com/whiteleaf7/narou/wiki)** を御覧ください。
|
33
33
|
|
34
|
-
![ScreenCapture](https://raw.github.com/wiki/whiteleaf7/narou/images/
|
34
|
+
![WEB UI ScreenCapture](https://raw.github.com/wiki/whiteleaf7/narou/images/webui_cap.png)
|
35
|
+
![Console ScreenCapture](https://raw.github.com/wiki/whiteleaf7/narou/images/narou_cap.gif)
|
35
36
|
|
36
37
|
更新履歴 - ChangeLog
|
37
38
|
--------------------
|
38
39
|
|
40
|
+
|
41
|
+
2.7.0 : 2015/08/23
|
42
|
+
------------------
|
43
|
+
#### 追加機能
|
44
|
+
- setting.ini に `enable_double_dash_to_image` を追加しました
|
45
|
+
+ 2倍ダッシュ(――)を画像に差し替えます。細めに調整してあるので、Kindle の
|
46
|
+
デフォルトフォントの様にダッシュが太い環境でご使用ください(iBooksだと崩れる
|
47
|
+
ので使わない方が良いです)
|
48
|
+
+ `narou init` が必要です
|
49
|
+
- `csv` コマンドを実装しました。管理している小説の情報をCSV形式で出力したり、
|
50
|
+
インポートしたり出来ます。詳細は `narou csv -h` を参照して下さい
|
51
|
+
- 容量節約のための設定 `economy` を追加しました。変換後の作業ファイルの削除等を
|
52
|
+
制御できます
|
53
|
+
+ 設定は `narou s economy=設定値をカンマ区切り` or WEB UI の環境設定>詳細
|
54
|
+
- cleanup_temp : 変換後に作業ファイルを削除
|
55
|
+
- send_delete : 送信後に書籍ファイルを削除
|
56
|
+
- nosave_diff : 差分ファイルを保存しない
|
57
|
+
- nosave_raw : rawデータを保存しない
|
58
|
+
- ネタバレ防止設定 `guard-spoiler` を追加しました。ダウンロード時に各話タイトル
|
59
|
+
を伏せ字で表示します
|
60
|
+
+ 設定は `narou s guard-spoiler=true` or WEB UI の環境設定>詳細
|
61
|
+
- 処理の中断関係を強化しました
|
62
|
+
+ update 中に中断した場合は以降の更新は全てキャンセルされるようになります
|
63
|
+
+ 変換中に処理を中断した場合、次回の update コマンド実行時に再変換されます
|
64
|
+
|
65
|
+
#### WEB UI
|
66
|
+
- タグの色を変更出来るようにしました
|
67
|
+
- 「処理の中断」ボタンをコンソール右上に追加しました。現在処理しているものも
|
68
|
+
含めて、全てのキューを破棄します
|
69
|
+
- 「個別>差分を表示」で表示されるダイアログに「差分を消去」ボタンを追加しました
|
70
|
+
- リンクのドラッグ&ドロップに対応しました。Downloadボタンを押すか「ツール>D&D
|
71
|
+
ウィンドウを開く」を実行して下さい
|
72
|
+
+ 文章内リンク及びMacとWindowsのショートカットファイル(複数可)に対応
|
73
|
+
+ IEにおいて、ドメイン間でリンクをD&Dするためには設定が必要です。
|
74
|
+
http://whiteleaf.hatenablog.com/entry/ie_dnd_setting を参照して下さい
|
75
|
+
- 「ツール>CSV形式でリストをダウンロード」を追加しました
|
76
|
+
- 「ツール>CSVファイルからインポート」を追加しました
|
77
|
+
- 新しいブックマークレット「DLボタンを設置」を追加しました。WEB UIのヘルプから
|
78
|
+
取得できます
|
79
|
+
- 選択モードにハイブリッド選択モードを追加しました。クリックで選択、ドラッグで
|
80
|
+
範囲選択が出来ます
|
81
|
+
- hotentry が有効な場合に Send ボタンに「hotentry を送信」を追加するようにしました
|
82
|
+
- ブックマークレットで表示されるウィンドウにキューアイコンを表示するように変更
|
83
|
+
- fix: FirefoxとIEで小説リスト上のタグ検索の解除ボタンを押した場合、ツールチップが
|
84
|
+
消えない場合があったのを修正
|
85
|
+
- fix: IEでメニューのタグ一覧が自動で更新されていなかったのを修正
|
86
|
+
- fix: メニューが隠れた際にメニュー部分の背景色が消えていたのを修正
|
87
|
+
- fix: 差分表示で変更後の行が太字になっていないのを修正
|
88
|
+
- fix: リストが自動更新された際に範囲選択モードのままボタンが押せなかったのを修正
|
89
|
+
|
90
|
+
#### 仕様変更
|
91
|
+
- `tag` コマンドで対象小説を指定しなくてもタグの色を変更出来るようにしました
|
92
|
+
- 変換設定の `enable_auto_join_line` が有効な場合で、行末読点の次の行頭に全角
|
93
|
+
スペースが2個以上ある場合は連結しないようにしました
|
94
|
+
- converter.rb 内から処理中の小説に関するデータを取得できるようにしました
|
95
|
+
+ @subtitles: その小説の処理対象の情報(Hash)が入っている配列。hotentry 処理中
|
96
|
+
の場合は新規部分のみしか入っていない
|
97
|
+
+ @current_index: 現在何話目を処理しているか(0から@subtitles.size-1まで)
|
98
|
+
|
99
|
+
#### BugFix
|
100
|
+
- Windowsにおいて日本語を含むフォルダで narou init しようとするとエラーが出て
|
101
|
+
いたのを修正
|
102
|
+
- `update --gl` コマンドでエラーが起きる場合があったのを修正
|
103
|
+
|
104
|
+
|
105
|
+
|
39
106
|
2.6.1 : 2015/08/03
|
40
107
|
------------------
|
41
108
|
#### 追加機能
|
@@ -104,26 +171,6 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
104
171
|
|
105
172
|
|
106
173
|
|
107
|
-
2.5.2 : 2015/07/23
|
108
|
-
------------------
|
109
|
-
#### 仕様変更
|
110
|
-
- タグに一部の記号を設定出来ないようにしました
|
111
|
-
- IDとタグがかぶった場合(404等)、IDを優先するように変更しました。かぶっている
|
112
|
-
状態でタグを明示的に指定する場合は `tag:タグ名` と指定して下さい
|
113
|
-
+ 例: `narou u tag:404` 404タグが付いた小説を更新する
|
114
|
-
|
115
|
-
#### Bug Fix
|
116
|
-
- IDと同じタグがある場合に操作が不可能になる不具合を修正
|
117
|
-
|
118
|
-
|
119
|
-
2.5.1 : 2015/07/10
|
120
|
-
------------------
|
121
|
-
#### Bug Fix
|
122
|
-
- WEB UI において個別変換設定ページに移動するとエラーがでる問題を修正
|
123
|
-
- `inspect` コマンドを使用するとエラーがでる問題を修正
|
124
|
-
|
125
|
-
|
126
|
-
|
127
174
|
----
|
128
175
|
|
129
176
|
過去の更新履歴は[こちらを参照](https://github.com/whiteleaf7/narou/blob/master/ChangeLog.md)
|
data/lib/command.rb
CHANGED
data/lib/command/alias.rb
CHANGED
@@ -38,7 +38,7 @@ module Command
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def output_aliases_list
|
41
|
-
aliases = Inventory.load("alias"
|
41
|
+
aliases = Inventory.load("alias")
|
42
42
|
database = Database.instance
|
43
43
|
aliases.each do |name, id|
|
44
44
|
title = database[id]["title"] rescue "(すでに削除されています)"
|
@@ -52,7 +52,7 @@ module Command
|
|
52
52
|
puts @opt.help
|
53
53
|
return
|
54
54
|
end
|
55
|
-
aliases = Inventory.load("alias"
|
55
|
+
aliases = Inventory.load("alias")
|
56
56
|
argv.each_with_index do |arg, i|
|
57
57
|
Helper.print_horizontal_rule if i > 0
|
58
58
|
alias_name, target = arg.split("=", 2)
|
data/lib/command/convert.rb
CHANGED
@@ -220,9 +220,8 @@ module Command
|
|
220
220
|
end
|
221
221
|
end
|
222
222
|
rescue Interrupt
|
223
|
-
puts
|
224
223
|
puts "変換を中断しました"
|
225
|
-
exit Narou::
|
224
|
+
exit Narou::EXIT_INTERRUPT
|
226
225
|
end
|
227
226
|
|
228
227
|
#
|
@@ -262,7 +261,8 @@ module Command
|
|
262
261
|
verbose: @options["verbose"],
|
263
262
|
no_epub: @options["no-epub"],
|
264
263
|
no_mobi: @options["no-mobi"],
|
265
|
-
no_strip: @options["no-strip"]
|
264
|
+
no_strip: @options["no-strip"],
|
265
|
+
no_cleanup_txt: @argument_target_type == :file
|
266
266
|
})
|
267
267
|
end
|
268
268
|
|
data/lib/command/csv.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
#
|
3
|
+
# Copyright 2013 whiteleaf. All rights reserved.
|
4
|
+
#
|
5
|
+
|
6
|
+
require "csv"
|
7
|
+
require_relative "../database"
|
8
|
+
|
9
|
+
module Command
|
10
|
+
# ライブラリのCSVコマンドと混同を避けるために小文字混じり
|
11
|
+
class Csv < CommandBase
|
12
|
+
def self.oneline_help
|
13
|
+
"小説リストをCSV形式で出力したりインポートしたりします"
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialize
|
17
|
+
super("[optioins]")
|
18
|
+
@opt.separator <<-EOS
|
19
|
+
|
20
|
+
・現在管理している小説の情報をCSV形式で出力したり、逆にインポートが出来ます
|
21
|
+
・インポートするCSVファイルには最低限 url というヘッダーが必要です
|
22
|
+
|
23
|
+
Examples:
|
24
|
+
narou csv # CSV形式でそのまま表示
|
25
|
+
narou csv -o novels.csv # novels.csv というファイル名で保存
|
26
|
+
narou csv -i novels.csv # ファイルから小説をインポート
|
27
|
+
|
28
|
+
Options:
|
29
|
+
EOS
|
30
|
+
@opt.on("-o", "--output FILE", "指定したファイル名で保存") { |filename|
|
31
|
+
@options["filename"] = filename
|
32
|
+
@mode = :output
|
33
|
+
}
|
34
|
+
@opt.on("-i", "--import FILE", "指定したファイルからインポート") { |filename|
|
35
|
+
@options["filename"] = filename
|
36
|
+
@mode = :import
|
37
|
+
}
|
38
|
+
end
|
39
|
+
|
40
|
+
def execute(argv)
|
41
|
+
@mode = :output
|
42
|
+
super
|
43
|
+
|
44
|
+
self.__send__ @mode
|
45
|
+
end
|
46
|
+
|
47
|
+
#
|
48
|
+
# CSV形式で出力する
|
49
|
+
# stream には出力先のIOオブジェクトを指定。nilだったら$stdoutに出力
|
50
|
+
#
|
51
|
+
def output(stream = nil)
|
52
|
+
stream ||= @options["filename"] ? File.open(@options["filename"], "w:UTF-8") : $stdout
|
53
|
+
stream.puts(generate)
|
54
|
+
stream.close if @options["filename"]
|
55
|
+
end
|
56
|
+
|
57
|
+
#
|
58
|
+
# 小説の情報をCSV形式の文字列で取得
|
59
|
+
#
|
60
|
+
def generate
|
61
|
+
database_values = Database.instance.get_object.values
|
62
|
+
CSV.generate do |csv|
|
63
|
+
csv << %w(id title author sitename url novel_type tags frozen last_update general_lastup)
|
64
|
+
database_values.each do |data|
|
65
|
+
tags = data["tags"] || []
|
66
|
+
csv << [
|
67
|
+
data["id"],
|
68
|
+
data["title"],
|
69
|
+
data["author"],
|
70
|
+
data["sitename"],
|
71
|
+
data["toc_url"],
|
72
|
+
data["novel_type"] == 2 ? "短編" : "連載",
|
73
|
+
tags.join(" "),
|
74
|
+
Narou.novel_frozen?(data["id"]),
|
75
|
+
data["last_update"].to_i,
|
76
|
+
data["general_lastup"].to_i
|
77
|
+
]
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
#
|
83
|
+
# CSV形式のファイルからインポートする
|
84
|
+
# header行にurlという項目が必要
|
85
|
+
# data にはインポートしたいIOオブジェクトかCSV形式の文字列を指定。
|
86
|
+
# nil なら --import オプションで指定されたファイルから入力
|
87
|
+
#
|
88
|
+
def import(data = nil)
|
89
|
+
if data
|
90
|
+
source = data
|
91
|
+
elsif @options["filename"]
|
92
|
+
source = File.read(@options["filename"])
|
93
|
+
else
|
94
|
+
raise ArgumentError, "need a CSV data"
|
95
|
+
end
|
96
|
+
csv = CSV.new(source, headers: true, converters: :numeric, header_converters: :symbol)
|
97
|
+
table = csv.read
|
98
|
+
table[:url].each do |url|
|
99
|
+
next unless url
|
100
|
+
Download.execute!([url])
|
101
|
+
Helper.print_horizontal_rule
|
102
|
+
end
|
103
|
+
rescue CSV::MalformedCSVError => e
|
104
|
+
puts "不正なCSVデータです(#{e.message})"
|
105
|
+
exit Narou::EXIT_ERROR_CODE
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
data/lib/command/download.rb
CHANGED
@@ -136,7 +136,14 @@ module Command
|
|
136
136
|
next
|
137
137
|
end
|
138
138
|
unless @options["no-convert"]
|
139
|
-
Convert.execute!([download_target])
|
139
|
+
convert_status = Convert.execute!([download_target])
|
140
|
+
if convert_status > 0
|
141
|
+
# 変換に失敗したか、中断された
|
142
|
+
data = Downloader.get_data_by_target(download_target) # 新規はDL後に取得しないとデータが存在しない
|
143
|
+
data["_convert_failure"] = true
|
144
|
+
# 中断された場合には残りのダウンロードも中止する
|
145
|
+
raise Interrupt if convert_status == Narou::EXIT_INTERRUPT
|
146
|
+
end
|
140
147
|
end
|
141
148
|
if @options["freeze"]
|
142
149
|
Freeze.execute!([download_target])
|
@@ -146,6 +153,11 @@ module Command
|
|
146
153
|
end
|
147
154
|
end
|
148
155
|
exit mistook_count if mistook_count > 0
|
156
|
+
rescue Interrupt
|
157
|
+
puts "ダウンロードを中断しました"
|
158
|
+
exit Narou::EXIT_INTERRUPT
|
159
|
+
ensure
|
160
|
+
Database.instance.save_database
|
149
161
|
end
|
150
162
|
|
151
163
|
def self.oneline_help
|
data/lib/command/freeze.rb
CHANGED
data/lib/command/init.rb
CHANGED
@@ -118,7 +118,11 @@ module Command
|
|
118
118
|
print "(現在の場所:#{@global_setting["aozoraepub3dir"]}"
|
119
119
|
end
|
120
120
|
print ")\n>"
|
121
|
-
while input = $stdin.gets
|
121
|
+
while input = $stdin.gets
|
122
|
+
if Helper.os_windows?
|
123
|
+
input.force_encoding(Encoding::Windows_31J).encode!(Encoding::UTF_8)
|
124
|
+
end
|
125
|
+
input = input.strip.gsub(/"/, "")
|
122
126
|
path = File.expand_path(input)
|
123
127
|
case
|
124
128
|
when input == ":keep"
|
data/lib/command/inspect.rb
CHANGED
@@ -32,7 +32,7 @@ module Command
|
|
32
32
|
def execute(argv)
|
33
33
|
super
|
34
34
|
if argv.empty?
|
35
|
-
latest_id = Inventory.load("latest_convert"
|
35
|
+
latest_id = Inventory.load("latest_convert")["id"]
|
36
36
|
if latest_id
|
37
37
|
data = Downloader.get_data_by_target(latest_id)
|
38
38
|
display_log(data["title"])
|
data/lib/command/mail.rb
CHANGED
data/lib/command/send.rb
CHANGED
@@ -75,7 +75,7 @@ module Command
|
|
75
75
|
exit Narou::EXIT_ERROR_CODE
|
76
76
|
end
|
77
77
|
|
78
|
-
@options["hotentry"] = Inventory.load("local_setting"
|
78
|
+
@options["hotentry"] = Inventory.load("local_setting")["hotentry"]
|
79
79
|
send_all = false
|
80
80
|
titles = {}
|
81
81
|
if argv.empty?
|
@@ -152,7 +152,7 @@ module Command
|
|
152
152
|
end
|
153
153
|
rescue Device::SendFailure, Interrupt
|
154
154
|
puts "送信を中断しました"
|
155
|
-
exit Narou::
|
155
|
+
exit Narou::EXIT_INTERRUPT
|
156
156
|
end
|
157
157
|
|
158
158
|
def process_backup_bookmark(device)
|