narou 2.5.2 → 2.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 +4 -4
- data/.gitignore +1 -0
- data/ChangeLog.md +54 -0
- data/LICENSE.txt +26 -0
- data/README.md +70 -84
- data/lib/command/alias.rb +7 -0
- data/lib/command/convert.rb +40 -61
- data/lib/command/download.rb +9 -1
- data/lib/command/mail.rb +24 -13
- data/lib/command/send.rb +18 -2
- data/lib/command/setting.rb +152 -34
- data/lib/command/tag.rb +5 -0
- data/lib/command/update.rb +137 -4
- data/lib/converterbase.rb +12 -6
- data/lib/database.rb +1 -1
- data/lib/device/ibooks.rb +6 -5
- data/lib/downloader.rb +85 -83
- data/lib/helper.rb +3 -2
- data/lib/html.rb +3 -0
- data/lib/logger.rb +20 -12
- data/lib/narou.rb +16 -0
- data/lib/novelconverter.rb +209 -75
- data/lib/novelinfo.rb +1 -1
- data/lib/novelsetting.rb +53 -29
- data/lib/template.rb +4 -3
- data/lib/version.rb +1 -1
- data/lib/web/appserver.rb +46 -32
- data/lib/web/public/resources/common.ui.js +2 -4
- data/lib/web/public/resources/default-style.css +37 -0
- data/lib/web/public/resources/narou.library.js +48 -57
- data/lib/web/public/resources/narou.ui.js +71 -39
- data/lib/web/public/theme/Cerulean/bootstrap.min.css +11 -0
- data/lib/web/public/theme/Cerulean/style.css +49 -0
- data/lib/web/public/theme/Darkly/bootstrap.min.css +11 -0
- data/lib/web/public/theme/Darkly/style.css +53 -0
- data/lib/web/public/theme/Readable/bootstrap.min.css +11 -0
- data/lib/web/public/theme/Readable/style.css +53 -0
- data/lib/web/public/theme/Slate/bootstrap.min.css +11 -0
- data/lib/web/public/theme/Slate/style.css +40 -0
- data/lib/web/public/theme/Superhero/bootstrap.min.css +11 -0
- data/lib/web/public/theme/Superhero/style.css +40 -0
- data/lib/web/public/theme/United/bootstrap.min.css +11 -0
- data/lib/web/public/theme/United/style.css +47 -0
- data/lib/web/public/theme/fonts/glyphicons-halflings-regular.eot +0 -0
- data/lib/web/public/theme/fonts/glyphicons-halflings-regular.svg +288 -0
- data/lib/web/public/theme/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/lib/web/public/theme/fonts/glyphicons-halflings-regular.woff +0 -0
- data/lib/web/public/theme/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/lib/web/settingmessages.rb +5 -0
- data/lib/web/views/index.haml +15 -19
- data/lib/web/views/layout.haml +6 -1
- data/lib/web/views/novels/setting.haml +76 -75
- data/lib/web/views/settings.haml +111 -107
- data/lib/web/views/style.scss +6 -21
- data/narou.gemspec +49 -6
- data/narou.rb +3 -1
- data/preset/ncode.syosetu.com/n7975cr/setting.ini +7 -0
- data/spec/README.txt +4 -0
- data/spec/data/convert_test/ruby/correct_test_ruby.txt +4 -4
- data/template/hotentry.txt.erb +28 -0
- data/template/ibunko_novel.txt.erb +4 -2
- data/template/novel.txt.erb +6 -3
- data/template/setting.ini.erb +18 -2
- metadata +73 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 89a2b2ad93d0503491152f2d230341bff5941dd0
|
4
|
+
data.tar.gz: 3c1b210e68c9b7184f4838659e3db86e043a8105
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5f64f4a98200beadb980315d5a79c7309fdc395e0568f9430325c94e3309498b2d7fd8a546cec9d287632d80df252f98c0580bda89ee6386f9613cdcbe70ec1a
|
7
|
+
data.tar.gz: 60115d92175cf4cccc2c9eaec09677a59364161d95ac2752d062246278cd41c4bf2671bfd271ba36825cf60d22d281115d0942cf34c108d58fe0963d2c35c2e9
|
data/.gitignore
CHANGED
data/ChangeLog.md
CHANGED
@@ -2,6 +2,60 @@
|
|
2
2
|
更新履歴 - ChangeLog
|
3
3
|
====================
|
4
4
|
|
5
|
+
2.6.0 : 2015/07/31
|
6
|
+
------------------
|
7
|
+
#### 追加機能
|
8
|
+
- hotnentry 機能を追加しました
|
9
|
+
+ update 時に新着投稿のみを一つにまとめた書籍データを生成します(hotentry
|
10
|
+
フォルダに保存されます。`convert.copy-to` が設定されていてれば、そこにも
|
11
|
+
コピーします)
|
12
|
+
+ `narou s hotentry=true` で有効に出来ます
|
13
|
+
+ この機能は `convert.no-epub` の制限を受けないので、no-epub を有効にしておき
|
14
|
+
update 時に hotnentry のデータのみを変換するで更新時間の短縮等も可能です
|
15
|
+
+ 収録順序を変更したい場合は `update.sort-by` を設定して下さい。更新順に収録
|
16
|
+
されます
|
17
|
+
+ 変換時にデバイスへ送信しなかった場合は `narou send` もしくは `narou send
|
18
|
+
hotentry` にて **最新の** hotnetry データを送信します
|
19
|
+
+ `narou mail hotentry` にて最新の hotentry をメール送信します。また、
|
20
|
+
`narou s hotentry.auto-mail=true` と設定していた場合、変換時に自動でメール
|
21
|
+
送信します(mail の設定が済んでいる場合のみ)
|
22
|
+
+ 変換設定は各小説の設定がそれぞれ適用されます
|
23
|
+
+ multi-device には未対応です
|
24
|
+
- `update` コマンドに凍結済みでも更新する `--force` オプションを追加しました
|
25
|
+
- `setting` コマンドに `--burn` オプションを追加しました
|
26
|
+
+ 指定した小説の setting.ini の未設定項目に共通設定を焼付け(書き込み)ます
|
27
|
+
+ `narou s --burn ID's` として実行して下さい
|
28
|
+
(WEB UIにおいてはOtherボタンに追加)
|
29
|
+
- setting.ini に `title_date_target` を追加しました。小説タイトルに付加する日付
|
30
|
+
の種類を選択できます
|
31
|
+
- 設定プリセット追加
|
32
|
+
+ n7975cr 蜘蛛ですが、なにか?
|
33
|
+
|
34
|
+
#### WEB UI
|
35
|
+
- Download に複数の小説を同時に指定出来るようにしました
|
36
|
+
- 個別変換設定ページのタイトルに小説のタイトルを付けるようにしました
|
37
|
+
- 環境設定画面をタブで整理しました
|
38
|
+
- setting.ini に保存する時にコメントを復元するようにしました
|
39
|
+
- 設定画面の選択肢を「する、しない」から「はい、いいえ」に変更しました
|
40
|
+
- Remove ボタンの通常削除と完全削除をひとつに統合しました
|
41
|
+
- テーマ機能を追加しました(環境設定>一般>theme)
|
42
|
+
+ 実験的機能なので、以降のアップデートで削除される可能性もあります
|
43
|
+
- 凍結表示状態をブラウザを閉じても維持するように変更しました
|
44
|
+
|
45
|
+
#### 仕様変更
|
46
|
+
- タグとエイリアスに hotentry という名前を設定出来ないようにしました
|
47
|
+
- 小説内の調査を `enable_inspect` を有効にしないと実行しないように変更しました
|
48
|
+
(カギ括弧関連の調査が、カギ括弧を多用する小説だとかなりの負荷になるため)
|
49
|
+
- setting.ini 内の `enable_inspect_invalid_openclose_brackets` を廃止し、
|
50
|
+
`enable_inspect` に統合しました
|
51
|
+
|
52
|
+
#### Bug Fix
|
53
|
+
- `enable_insert_char_separator` でルビが消える不具合を修正
|
54
|
+
- 暁の18禁小説がダウンロードできなくなっていたのを修正
|
55
|
+
- ハーメルンで< >に囲まれた文字が消える不具合を修正
|
56
|
+
- 小説家になろうのルビ仕様に追随できていなかった部分を修正
|
57
|
+
- WEB UI の凍結表示状態がおかしくなることがあったのを修正
|
58
|
+
|
5
59
|
|
6
60
|
2.5.2 : 2015/07/23
|
7
61
|
------------------
|
data/LICENSE.txt
CHANGED
@@ -120,3 +120,29 @@ web_socket.rb
|
|
120
120
|
Copyright: Hiroshi Ichikawa <http://gimite.net/en/>
|
121
121
|
Lincense: New BSD Lincense
|
122
122
|
|
123
|
+
----------------------------------------------------------------------
|
124
|
+
|
125
|
+
Bootstrap
|
126
|
+
|
127
|
+
The MIT License (MIT)
|
128
|
+
|
129
|
+
Copyright (c) 2013 Thomas Park
|
130
|
+
|
131
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
132
|
+
of this software and associated documentation files (the "Software"), to deal
|
133
|
+
in the Software without restriction, including without limitation the rights
|
134
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
135
|
+
copies of the Software, and to permit persons to whom the Software is
|
136
|
+
furnished to do so, subject to the following conditions:
|
137
|
+
|
138
|
+
The above copyright notice and this permission notice shall be included in
|
139
|
+
all copies or substantial portions of the Software.
|
140
|
+
|
141
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
142
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
143
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
144
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
145
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
146
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
147
|
+
THE SOFTWARE.
|
148
|
+
|
data/README.md
CHANGED
@@ -3,6 +3,13 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
3
3
|
|
4
4
|
[![Gem Version](https://badge.fury.io/rb/narou.svg)](http://badge.fury.io/rb/narou)
|
5
5
|
|
6
|
+
お知らせ
|
7
|
+
--------
|
8
|
+
Narou.rb の動作環境において、Ruby 2.0.0 でのサポートは2015年8月31日で打ち切ります。
|
9
|
+
すでに Ruby 2.0.0 はセキュリティフィックスのみ提供されており、保守は2016年2月24日に終了すると予告されています。
|
10
|
+
Ruby 2.1.0 以上へのバージョンアップをお願いします
|
11
|
+
|
12
|
+
|
6
13
|
概要 - Summary
|
7
14
|
--------------
|
8
15
|
このアプリは[小説家になろう](http://syosetu.com/)、[小説を読もう!](http://yomou.syosetu.com/)で公開されている小説の管理、
|
@@ -10,12 +17,15 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
10
17
|
横書き用に特化されたWEB小説を違和感なく縦書きで読むことが出来るようになります。
|
11
18
|
また、校正機能もありますので、小説としての一般的な整形ルールに矯正します。(例:感嘆符のあとにはスペースが必ずくる)
|
12
19
|
|
13
|
-
|
20
|
+
対応小説サイト:
|
21
|
+
+ 小説家になろう(小説を読もう) http://syosetu.com/
|
22
|
+
+ ノクターンノベルズ http://noc.syosetu.com/
|
23
|
+
+ ムーンライトノベルズ http://mnlt.syosetu.com/
|
24
|
+
+ ハーメルン http://syosetu.org/
|
25
|
+
+ Arcadia http://www.mai-net.net/
|
26
|
+
+ 暁 http://www.akatsuki-novels.com/
|
14
27
|
|
15
|
-
|
16
|
-
[ハーメルン](http://syosetu.org/)、[Arcadia](http://www.mai-net.net/)(理想郷)、[暁](http://www.akatsuki-novels.com/)にも対応しました!
|
17
|
-
|
18
|
-
全てコンソールで操作するCUIアプリケーションです。
|
28
|
+
コンソールで操作するアプリケーションですが、ブラウザを使って直感的に操作することができる WEB UI も搭載!
|
19
29
|
|
20
30
|
主な機能は小説家になろうの小説のダウンロード、更新管理、テキスト整形、AozoraEpub3・kindlegen連携によるEPUB/MOBI出力です。
|
21
31
|
|
@@ -26,6 +36,61 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
26
36
|
更新履歴 - ChangeLog
|
27
37
|
--------------------
|
28
38
|
|
39
|
+
2.6.0 : 2015/07/31
|
40
|
+
------------------
|
41
|
+
#### 追加機能
|
42
|
+
- hotnentry 機能を追加しました
|
43
|
+
+ update 時に新着投稿のみを一つにまとめた書籍データを生成します(hotentry
|
44
|
+
フォルダに保存されます。`convert.copy-to` が設定されていてれば、そこにも
|
45
|
+
コピーします)
|
46
|
+
+ `narou s hotentry=true` で有効に出来ます
|
47
|
+
+ この機能は `convert.no-epub` の制限を受けないので、no-epub を有効にしておき
|
48
|
+
update 時に hotnentry のデータのみを変換するで更新時間の短縮等も可能です
|
49
|
+
+ 収録順序を変更したい場合は `update.sort-by` を設定して下さい。更新順に収録
|
50
|
+
されます
|
51
|
+
+ 変換時にデバイスへ送信しなかった場合は `narou send` もしくは `narou send
|
52
|
+
hotentry` にて **最新の** hotnetry データを送信します
|
53
|
+
+ `narou mail hotentry` にて最新の hotentry をメール送信します。また、
|
54
|
+
`narou s hotentry.auto-mail=true` と設定していた場合、変換時に自動でメール
|
55
|
+
送信します(mail の設定が済んでいる場合のみ)
|
56
|
+
+ 変換設定は各小説の設定がそれぞれ適用されます
|
57
|
+
+ multi-device には未対応です
|
58
|
+
- `update` コマンドに凍結済みでも更新する `--force` オプションを追加しました
|
59
|
+
- `setting` コマンドに `--burn` オプションを追加しました
|
60
|
+
+ 指定した小説の setting.ini の未設定項目に共通設定を焼付け(書き込み)ます
|
61
|
+
+ `narou s --burn ID's` として実行して下さい
|
62
|
+
(WEB UIにおいてはOtherボタンに追加)
|
63
|
+
- setting.ini に `title_date_target` を追加しました。小説タイトルに付加する日付
|
64
|
+
の種類を選択できます
|
65
|
+
- 設定プリセット追加
|
66
|
+
+ n7975cr 蜘蛛ですが、なにか?
|
67
|
+
|
68
|
+
#### WEB UI
|
69
|
+
- Download に複数の小説を同時に指定出来るようにしました
|
70
|
+
- 個別変換設定ページのタイトルに小説のタイトルを付けるようにしました
|
71
|
+
- 環境設定画面をタブで整理しました
|
72
|
+
- setting.ini に保存する時にコメントを復元するようにしました
|
73
|
+
- 設定画面の選択肢を「する、しない」から「はい、いいえ」に変更しました
|
74
|
+
- Remove ボタンの通常削除と完全削除をひとつに統合しました
|
75
|
+
- テーマ機能を追加しました(環境設定>一般>theme)
|
76
|
+
+ 実験的機能なので、以降のアップデートで削除される可能性もあります
|
77
|
+
- 凍結表示状態をブラウザを閉じても維持するように変更しました
|
78
|
+
|
79
|
+
#### 仕様変更
|
80
|
+
- タグとエイリアスに hotentry という名前を設定出来ないようにしました
|
81
|
+
- 小説内の調査を `enable_inspect` を有効にしないと実行しないように変更しました
|
82
|
+
(カギ括弧関連の調査が、カギ括弧を多用する小説だとかなりの負荷になるため)
|
83
|
+
- setting.ini 内の `enable_inspect_invalid_openclose_brackets` を廃止し、
|
84
|
+
`enable_inspect` に統合しました
|
85
|
+
|
86
|
+
#### Bug Fix
|
87
|
+
- `enable_insert_char_separator` でルビが消える不具合を修正
|
88
|
+
- 暁の18禁小説がダウンロードできなくなっていたのを修正
|
89
|
+
- ハーメルンで< >に囲まれた文字が消える不具合を修正
|
90
|
+
- 小説家になろうのルビ仕様に追随できていなかった部分を修正
|
91
|
+
- WEB UI の凍結表示状態がおかしくなることがあったのを修正
|
92
|
+
|
93
|
+
|
29
94
|
|
30
95
|
2.5.2 : 2015/07/23
|
31
96
|
------------------
|
@@ -46,85 +111,6 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
46
111
|
- `inspect` コマンドを使用するとエラーがでる問題を修正
|
47
112
|
|
48
113
|
|
49
|
-
2.5.0 : 2015/07/10
|
50
|
-
------------------
|
51
|
-
#### 追加機能
|
52
|
-
- WEB UI の個別メニューから「差分を表示」を選択した際に、過去の差分を選択出来る
|
53
|
-
ようにしました
|
54
|
-
- WEB UI の個別メニューに「タグを編集」を追加しました
|
55
|
-
- 変換設定の各項目の共通設定を変更できる default.* 系設定を追加しました
|
56
|
-
+ この共通設定は setting.ini で未設定の項目がある場合に適用されます。また、
|
57
|
-
force.* が設定されていた場合は setting.ini、共通設定ともに無視されます
|
58
|
-
+ 例えば `enable_illust` の共通設定を変更したい場合、
|
59
|
-
`narou s default.enable_illust=false` とすることで変更出来ます
|
60
|
-
(WEB UIからは環境設定のページで隠しオプションを表示)
|
61
|
-
- `convert` コマンドに `--ignore-default` オプションを追加しました。変換時の
|
62
|
-
default.* 系設定を無視します
|
63
|
-
- `convert.copy-to-grouping` オプションを追加しました
|
64
|
-
+ copy-to で指定したフォルダの中に更に device もしくは convert.multi-device
|
65
|
-
で指定した端末毎に振り分けるように出来ます
|
66
|
-
+ 有効にするには `narou s convert.copy-to-grouping=true` を実行して下さい
|
67
|
-
- 全小説を対象にした replace.txt による置換に対応しました
|
68
|
-
+ narou init を使用したフォルダに replace.txt を設置すると認識します。
|
69
|
-
WEB UI においては環境設定にて設定できます
|
70
|
-
- `update` コマンドにアップデートの順番を変更する `--sort-by` オプションが追加
|
71
|
-
されました(短縮 `-s`)
|
72
|
-
+ `narou u --sort-by general_update` のように直接コマンドのオプションとして
|
73
|
-
指定するか、 `narou s update.sort-by=general_update` と設定として保存して
|
74
|
-
下さい
|
75
|
-
+ 指定出来るのは id, last_update(更新日), title(タイトル), author(作者名),
|
76
|
-
new_arrivals_date(新着日), general_lastup(最新話掲載日) です
|
77
|
-
- WEB UI の設定画面において一部項目をセレクトボックスで選択出来るようにしました
|
78
|
-
|
79
|
-
#### 仕様変更
|
80
|
-
- default.* 系設定追加に伴い、新規DL時の setting.ini の全ての項目がコメント
|
81
|
-
アウトされた状態で生成されます。また、WEB UI の個別変換設定画面にて、各項目に
|
82
|
-
「未設定」が追加されます
|
83
|
-
- `setting` コマンド(WEB UIにおける環境設定)の項目の順序・表示を変更しました
|
84
|
-
- `setting` コマンドの一部項目で適切な値が入力されなかった場合にエラーが出る
|
85
|
-
ようになりました
|
86
|
-
- WEB UI の個別メニュー内項目の並び順を変更しました
|
87
|
-
- WEB UI サーバ起動中にコマンドラインで更新した場合でもサーバを再起動せずに変更
|
88
|
-
が反映されるようになりました
|
89
|
-
|
90
|
-
#### Bug Fix
|
91
|
-
- `enable_insert_word_separator` を有効時に `[` が正常に禁則処理されない問題を
|
92
|
-
修正
|
93
|
-
- i文庫形式に変換する際に `enable_illust` の設定が無視されていたのを修正
|
94
|
-
- WEB UI サーバ起動中に converter.rb を編集しても反映されなかったのを修正
|
95
|
-
- 文章中のリンクが正しく飛べない場合があったのを修正
|
96
|
-
|
97
|
-
|
98
|
-
2.4.2 : 2015/06/07
|
99
|
-
------------------
|
100
|
-
#### Bug Fix
|
101
|
-
- WEB UI のタグ検索結果がページリロードで解除されてしまう不具合を修正
|
102
|
-
- WEB UI で最新話掲載日を更新したあとにリストを更新するように修正
|
103
|
-
- 小説家になろうのルビ仕様に追随してない場合があったのを修正
|
104
|
-
- ハーメルン、ムーンライトノベルズの小説をNコードでDL出来ない不具合を修正
|
105
|
-
- v2.4.0以前にDLした短編が更新できなくなっていた不具合を修正
|
106
|
-
|
107
|
-
|
108
|
-
2.4.1 : 2015/05/24
|
109
|
-
------------------
|
110
|
-
#### 追加機能
|
111
|
-
- WEB UI の Update ボタンに「表示されている小説を更新」、「最新話掲載日を更新」
|
112
|
-
という選択肢を追加しました
|
113
|
-
+ 表示されている小説を更新:見える範囲内の小説を選択せずに更新出来る。タグ検
|
114
|
-
索やフィルターで絞り込んだあとにいちいち選択する必要がなくなる
|
115
|
-
+ 最新話掲載日を更新: `narou u --gl` を WEB UI からも実行出来るようにした物
|
116
|
-
|
117
|
-
#### 仕様変更
|
118
|
-
- WEB UI の項目「最新話掲載日」をArcadia及び暁にも対応させました
|
119
|
-
+ それに伴い `narou u --gl` コマンドもArcadiaと暁に対応します
|
120
|
-
- `narou u --gl` コマンドが凍結済み小説は無視するように変更しました
|
121
|
-
- 最新話掲載日の経過日時表記に「3d」(3日以内に掲載)を追加しました
|
122
|
-
|
123
|
-
#### Bug Fix
|
124
|
-
- WEB UI のタグ検索が部分一致になっていたのを完全一致に修正しました
|
125
|
-
- 連続したミュートが正しく変換できていなかったのを修正
|
126
|
-
|
127
|
-
|
128
114
|
|
129
115
|
----
|
130
116
|
|
data/lib/command/alias.rb
CHANGED
@@ -7,6 +7,9 @@ require_relative "../inventory"
|
|
7
7
|
|
8
8
|
module Command
|
9
9
|
class Alias < CommandBase
|
10
|
+
# 禁止ワード
|
11
|
+
BAN_WORD = %w(hotentry)
|
12
|
+
|
10
13
|
def self.oneline_help
|
11
14
|
"小説のIDに紐付けた別名を作成します"
|
12
15
|
end
|
@@ -53,6 +56,10 @@ module Command
|
|
53
56
|
argv.each_with_index do |arg, i|
|
54
57
|
Helper.print_horizontal_rule if i > 0
|
55
58
|
alias_name, target = arg.split("=", 2)
|
59
|
+
if BAN_WORD.include?(alias_name)
|
60
|
+
error "#{alias_name} は使用禁止ワードです"
|
61
|
+
next
|
62
|
+
end
|
56
63
|
unless alias_name =~ /^\w+$/
|
57
64
|
error "別名にはアルファベット・数字・アンダースコアしか使えません"
|
58
65
|
next
|
data/lib/command/convert.rb
CHANGED
@@ -15,6 +15,8 @@ module Command
|
|
15
15
|
"小説を変換します。管理小説以外にテキストファイルも変換可能"
|
16
16
|
end
|
17
17
|
|
18
|
+
attr_accessor :device, :converted_txt_path
|
19
|
+
|
18
20
|
@@sending_error_list = []
|
19
21
|
|
20
22
|
def self.display_sending_error_list
|
@@ -38,6 +40,8 @@ module Command
|
|
38
40
|
end
|
39
41
|
|
40
42
|
def initialize
|
43
|
+
@argument_target_type = :file
|
44
|
+
|
41
45
|
super("<target> [<target2> ...] [options]")
|
42
46
|
@opt.separator <<-EOS
|
43
47
|
|
@@ -185,7 +189,6 @@ module Command
|
|
185
189
|
end
|
186
190
|
|
187
191
|
if File.file?(target.to_s)
|
188
|
-
@argument_target_type = :file
|
189
192
|
res = convert_txt(target)
|
190
193
|
else
|
191
194
|
@argument_target_type = :novel
|
@@ -209,30 +212,7 @@ module Command
|
|
209
212
|
next if ebook_file.nil?
|
210
213
|
if ebook_file
|
211
214
|
copied_file_path = copy_to_converted_file(ebook_file)
|
212
|
-
|
213
|
-
puts copied_file_path.encode(Encoding::UTF_8) + " へコピーしました"
|
214
|
-
end
|
215
|
-
if @device && @device.physical_support? &&
|
216
|
-
@device.connecting? && File.extname(ebook_file) == @device.ebook_file_ext
|
217
|
-
if @argument_target_type == :novel
|
218
|
-
if Send.execute!([@device.name, target]) > 0
|
219
|
-
@@sending_error_list << ebook_file
|
220
|
-
end
|
221
|
-
else
|
222
|
-
puts @device.name + "へ送信しています"
|
223
|
-
copy_to_path = nil
|
224
|
-
begin
|
225
|
-
copy_to_path = @device.copy_to_documents(ebook_file)
|
226
|
-
rescue Device::SendFailure
|
227
|
-
end
|
228
|
-
if copy_to_path
|
229
|
-
puts copy_to_path.encode(Encoding::UTF_8) + " へコピーしました"
|
230
|
-
else
|
231
|
-
error "送信に失敗しました"
|
232
|
-
@@sending_error_list << ebook_file
|
233
|
-
end
|
234
|
-
end
|
235
|
-
end
|
215
|
+
send_file_to_device(ebook_file)
|
236
216
|
end
|
237
217
|
|
238
218
|
if @options["no-open"].! && Narou.web?.!
|
@@ -276,41 +256,14 @@ module Command
|
|
276
256
|
# 変換された整形済みテキストファイルをデバイスに対応した書籍データに変換する
|
277
257
|
#
|
278
258
|
def convert_txt_to_ebook_file
|
279
|
-
return
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
end
|
288
|
-
epub_path = @converted_txt_path.sub(/.txt$/, epub_ext)
|
289
|
-
|
290
|
-
if !@device || !@device.kindle? || @options["no-mobi"]
|
291
|
-
puts File.basename(epub_path) + " を出力しました"
|
292
|
-
puts "<bold><green>EPUBファイルを出力しました</green></bold>".termcolor
|
293
|
-
return epub_path
|
294
|
-
end
|
295
|
-
|
296
|
-
# mobi
|
297
|
-
status = NovelConverter.epub_to_mobi(epub_path, @options["verbose"])
|
298
|
-
return nil if status != :success
|
299
|
-
mobi_path = epub_path.sub(/\.epub$/, @device.ebook_file_ext)
|
300
|
-
|
301
|
-
# strip
|
302
|
-
unless @options["no-strip"]
|
303
|
-
puts "kindlestrip実行中"
|
304
|
-
begin
|
305
|
-
SectionStripper.strip(mobi_path, nil, false)
|
306
|
-
rescue StripException => e
|
307
|
-
error "#{e.message}"
|
308
|
-
end
|
309
|
-
end
|
310
|
-
puts File.basename(mobi_path).encode(Encoding::UTF_8) + " を出力しました"
|
311
|
-
puts "<bold><green>MOBIファイルを出力しました</green></bold>".termcolor
|
312
|
-
|
313
|
-
return mobi_path
|
259
|
+
return NovelConverter.convert_txt_to_ebook_file(@converted_txt_path, {
|
260
|
+
use_dakuten_font: @use_dakuten_font,
|
261
|
+
device: @device,
|
262
|
+
verbose: @options["verbose"],
|
263
|
+
no_epub: @options["no-epub"],
|
264
|
+
no_mobi: @options["no-mobi"],
|
265
|
+
no_strip: @options["no-strip"]
|
266
|
+
})
|
314
267
|
end
|
315
268
|
|
316
269
|
class NoSuchDirectory < StandardError; end
|
@@ -322,7 +275,9 @@ module Command
|
|
322
275
|
copy_to_dir = get_copy_to_directory
|
323
276
|
return nil unless copy_to_dir
|
324
277
|
FileUtils.copy(src_path, copy_to_dir)
|
325
|
-
|
278
|
+
copied_file_path = File.join(copy_to_dir, File.basename(src_path))
|
279
|
+
puts copied_file_path.encode(Encoding::UTF_8) + " へコピーしました"
|
280
|
+
copied_file_path
|
326
281
|
rescue NoSuchDirectory => e
|
327
282
|
error "#{e.message} はフォルダではないかすでに削除されています。コピー出来ませんでした"
|
328
283
|
nil
|
@@ -353,5 +308,29 @@ module Command
|
|
353
308
|
copy_to_dir_with_device
|
354
309
|
end
|
355
310
|
private :get_copy_to_directory
|
311
|
+
|
312
|
+
def send_file_to_device(ebook_file)
|
313
|
+
if @device && @device.physical_support? &&
|
314
|
+
@device.connecting? && File.extname(ebook_file) == @device.ebook_file_ext
|
315
|
+
if @argument_target_type == :novel
|
316
|
+
if Send.execute!([@device.name, @target]) > 0
|
317
|
+
@@sending_error_list << ebook_file
|
318
|
+
end
|
319
|
+
else
|
320
|
+
puts @device.name + "へ送信しています"
|
321
|
+
copy_to_path = nil
|
322
|
+
begin
|
323
|
+
copy_to_path = @device.copy_to_documents(ebook_file)
|
324
|
+
rescue Device::SendFailure
|
325
|
+
end
|
326
|
+
if copy_to_path
|
327
|
+
puts copy_to_path.encode(Encoding::UTF_8) + " へコピーしました"
|
328
|
+
else
|
329
|
+
error "送信に失敗しました"
|
330
|
+
@@sending_error_list << ebook_file
|
331
|
+
end
|
332
|
+
end
|
333
|
+
end
|
334
|
+
end
|
356
335
|
end
|
357
336
|
end
|