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.

Files changed (64) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/ChangeLog.md +54 -0
  4. data/LICENSE.txt +26 -0
  5. data/README.md +70 -84
  6. data/lib/command/alias.rb +7 -0
  7. data/lib/command/convert.rb +40 -61
  8. data/lib/command/download.rb +9 -1
  9. data/lib/command/mail.rb +24 -13
  10. data/lib/command/send.rb +18 -2
  11. data/lib/command/setting.rb +152 -34
  12. data/lib/command/tag.rb +5 -0
  13. data/lib/command/update.rb +137 -4
  14. data/lib/converterbase.rb +12 -6
  15. data/lib/database.rb +1 -1
  16. data/lib/device/ibooks.rb +6 -5
  17. data/lib/downloader.rb +85 -83
  18. data/lib/helper.rb +3 -2
  19. data/lib/html.rb +3 -0
  20. data/lib/logger.rb +20 -12
  21. data/lib/narou.rb +16 -0
  22. data/lib/novelconverter.rb +209 -75
  23. data/lib/novelinfo.rb +1 -1
  24. data/lib/novelsetting.rb +53 -29
  25. data/lib/template.rb +4 -3
  26. data/lib/version.rb +1 -1
  27. data/lib/web/appserver.rb +46 -32
  28. data/lib/web/public/resources/common.ui.js +2 -4
  29. data/lib/web/public/resources/default-style.css +37 -0
  30. data/lib/web/public/resources/narou.library.js +48 -57
  31. data/lib/web/public/resources/narou.ui.js +71 -39
  32. data/lib/web/public/theme/Cerulean/bootstrap.min.css +11 -0
  33. data/lib/web/public/theme/Cerulean/style.css +49 -0
  34. data/lib/web/public/theme/Darkly/bootstrap.min.css +11 -0
  35. data/lib/web/public/theme/Darkly/style.css +53 -0
  36. data/lib/web/public/theme/Readable/bootstrap.min.css +11 -0
  37. data/lib/web/public/theme/Readable/style.css +53 -0
  38. data/lib/web/public/theme/Slate/bootstrap.min.css +11 -0
  39. data/lib/web/public/theme/Slate/style.css +40 -0
  40. data/lib/web/public/theme/Superhero/bootstrap.min.css +11 -0
  41. data/lib/web/public/theme/Superhero/style.css +40 -0
  42. data/lib/web/public/theme/United/bootstrap.min.css +11 -0
  43. data/lib/web/public/theme/United/style.css +47 -0
  44. data/lib/web/public/theme/fonts/glyphicons-halflings-regular.eot +0 -0
  45. data/lib/web/public/theme/fonts/glyphicons-halflings-regular.svg +288 -0
  46. data/lib/web/public/theme/fonts/glyphicons-halflings-regular.ttf +0 -0
  47. data/lib/web/public/theme/fonts/glyphicons-halflings-regular.woff +0 -0
  48. data/lib/web/public/theme/fonts/glyphicons-halflings-regular.woff2 +0 -0
  49. data/lib/web/settingmessages.rb +5 -0
  50. data/lib/web/views/index.haml +15 -19
  51. data/lib/web/views/layout.haml +6 -1
  52. data/lib/web/views/novels/setting.haml +76 -75
  53. data/lib/web/views/settings.haml +111 -107
  54. data/lib/web/views/style.scss +6 -21
  55. data/narou.gemspec +49 -6
  56. data/narou.rb +3 -1
  57. data/preset/ncode.syosetu.com/n7975cr/setting.ini +7 -0
  58. data/spec/README.txt +4 -0
  59. data/spec/data/convert_test/ruby/correct_test_ruby.txt +4 -4
  60. data/template/hotentry.txt.erb +28 -0
  61. data/template/ibunko_novel.txt.erb +4 -2
  62. data/template/novel.txt.erb +6 -3
  63. data/template/setting.ini.erb +18 -2
  64. metadata +73 -8
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5f366fa5ff83bdcf0e9e0a560fc18bfcc2e438c0
4
- data.tar.gz: eafbd2dc2904fe5097a409c9d8b0d21e4afcab01
3
+ metadata.gz: 89a2b2ad93d0503491152f2d230341bff5941dd0
4
+ data.tar.gz: 3c1b210e68c9b7184f4838659e3db86e043a8105
5
5
  SHA512:
6
- metadata.gz: baff723f901ac7618ed6c92e05864a69e5b07de2523d5a6ffe508daf6ba13f16e2e89f316475a8c4f40bdc49d220ccf131cae6e5178b5fc05572fb6340cf9f09
7
- data.tar.gz: 0ea1bba4a4236b94ff1c587e4a9917b5125378057f3ae70b5cd614231b0cb3ea9906f52089fb265000cce1a1fdada3b94909aa8096d9806bd8c4dff2a0809b52
6
+ metadata.gz: 5f64f4a98200beadb980315d5a79c7309fdc395e0568f9430325c94e3309498b2d7fd8a546cec9d287632d80df252f98c0580bda89ee6386f9613cdcbe70ec1a
7
+ data.tar.gz: 60115d92175cf4cccc2c9eaec09677a59364161d95ac2752d062246278cd41c4bf2671bfd271ba36825cf60d22d281115d0942cf34c108d58fe0963d2c35c2e9
data/.gitignore CHANGED
@@ -24,6 +24,7 @@ trash/
24
24
  .sass-cache/
25
25
  log/
26
26
  misc/
27
+ hotentry/
27
28
  replace.txt
28
29
 
29
30
  \#*\#
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
- [ノクターンノベルズ](http://noc.syosetu.com/)及び[ムーンライトノベルズ](http://mnlt.syosetu.com/)にも対応しています。
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
- **NEW!!**
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
+ - ハーメルンで&lt; &gt;に囲まれた文字が消える不具合を修正
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
@@ -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
- if copied_file_path
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 false if @options["no-epub"]
280
- # epub
281
- status = NovelConverter.txt_to_epub(@converted_txt_path, @use_dakuten_font, nil, @device, @options["verbose"])
282
- return nil if status != :success
283
- if @device && @device.kobo?
284
- epub_ext = @device.ebook_file_ext
285
- else
286
- epub_ext = ".epub"
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
- return File.join(copy_to_dir, File.basename(src_path))
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