narou 2.9.2 → 2.9.3
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/.rubocop.yml +1 -1
- data/ChangeLog.md +25 -0
- data/README.md +26 -89
- data/lib/command/convert.rb +14 -11
- data/lib/command/download.rb +1 -1
- data/lib/command/setting.rb +5 -0
- data/lib/command/update.rb +22 -0
- data/lib/converterbase.rb +16 -0
- data/lib/device.rb +6 -1
- data/lib/device/library/mac.rb +1 -1
- data/lib/downloader.rb +4 -0
- data/lib/novelconverter.rb +50 -5
- data/lib/novelsetting.rb +13 -1
- data/lib/version.rb +1 -1
- data/lib/web/appserver.rb +3 -4
- data/lib/web/public/resources/narou.library.js +2 -2
- data/lib/web/public/resources/narou.ui.js +22 -2
- data/narou.gemspec +17 -82
- data/preset/DMincho.ttf +0 -0
- data/preset/vertical_font_with_dakuten.css +108 -0
- data/template/ibunko_novel.txt.erb +7 -1
- data/template/novel.txt.erb +4 -1
- metadata +21 -84
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a8773fbe953a40e96abb21e5b8c6fa965a5c77a9
|
4
|
+
data.tar.gz: 9784598559b9564df19eb2024237155904ede4ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 519b38064639a9196d80123bd6edca2fedb6fbd7f33ba0b35b8d039114fdb3fba0100acbf8b2ff90108fc2361ca0115efcf279fd9316e86a7df2b0a4e97570b1
|
7
|
+
data.tar.gz: 2a1f58c4ae30f99184efbaf393df64e567f8e852b52866d576a9750a558b4d19e996b46402951922db2bb4c2de1ce513ec4aff0f2d607dd49cb105f6d20aff6d
|
data/.rubocop.yml
CHANGED
@@ -385,7 +385,7 @@ Style/TrailingBlankLines:
|
|
385
385
|
# Offense count: 14
|
386
386
|
# Cop supports --auto-correct.
|
387
387
|
# Configuration parameters: EnforcedStyleForMultiline, SupportedStyles.
|
388
|
-
Style/
|
388
|
+
Style/TrailingCommaInLiteral:
|
389
389
|
Enabled: false
|
390
390
|
|
391
391
|
# Offense count: 15
|
data/ChangeLog.md
CHANGED
@@ -2,6 +2,31 @@
|
|
2
2
|
更新履歴 - ChangeLog
|
3
3
|
====================
|
4
4
|
|
5
|
+
2.9.3 : 2016/06/15
|
6
|
+
------------------
|
7
|
+
#### WEB UI
|
8
|
+
- 小説URLもFilterで検索出来るようにしました
|
9
|
+
+ NコードがURLに含まれている為、Nコード検索としても使えます
|
10
|
+
- ダイジェスト化を検知した際にでる選択肢に、「8. 変換する」を追加しました
|
11
|
+
|
12
|
+
#### 仕様変更
|
13
|
+
- `enable_dakuten_font` を復活させました
|
14
|
+
+ AozoraEpub3の一文字濁点フォント機能を使った場合、端末でフォントを切り替えた
|
15
|
+
場合に濁点にならない問題があったため、切り替えた場合でも機能するNarou.rbの
|
16
|
+
濁点フォントを再び使えるようにしました
|
17
|
+
+ setting.ini で enable_dakuten_font = true とすることで有効になり、false の
|
18
|
+
場合は AozoraEPub3 の一文字濁点フォント機能を使用します。
|
19
|
+
(デフォルトでは false で、 AozoraEpub3 の機能を使います)
|
20
|
+
- 更新時に1作品ごとに待機時間が入るようになりました
|
21
|
+
+ `update.interval` で待機秒数を指定出来ます(ただし、最低2.5秒必要です)
|
22
|
+
+ 更新処理の時間も含まれるので、例えば更新処理に1秒かかった場合は待機時間は
|
23
|
+
1.5秒です。2.5秒以上更新や変換にかかった場合は待機時間は発生しません
|
24
|
+
|
25
|
+
#### 修正
|
26
|
+
- i文庫に変換時にカクヨムのサブチャプターが反映されていなかったのを修正
|
27
|
+
- WEB UIのタグを編集ダイアログ内でタグをソートしていなかったのを修正
|
28
|
+
|
29
|
+
|
5
30
|
2.9.2 : 2016/04/08
|
6
31
|
------------------
|
7
32
|
#### 修正
|
data/README.md
CHANGED
@@ -3,13 +3,6 @@ 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
|
-
|
13
6
|
概要 - Summary
|
14
7
|
--------------
|
15
8
|
このアプリは[小説家になろう](http://syosetu.com/)、[小説を読もう!](http://yomou.syosetu.com/)で公開されている小説の管理、
|
@@ -18,12 +11,14 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
18
11
|
また、校正機能もありますので、小説としての一般的な整形ルールに矯正します。(例:感嘆符のあとにはスペースが必ずくる)
|
19
12
|
|
20
13
|
対応小説サイト:
|
21
|
-
+
|
14
|
+
+ 小説家になろう http://syosetu.com/
|
22
15
|
+ ノクターンノベルズ http://noc.syosetu.com/
|
23
16
|
+ ムーンライトノベルズ http://mnlt.syosetu.com/
|
24
|
-
+
|
17
|
+
+ ミッドナイトノベルズ http://mid.syosetu.com/
|
18
|
+
+ ハーメルン https://syosetu.org/
|
25
19
|
+ Arcadia http://www.mai-net.net/
|
26
|
-
+ 暁 http://www.akatsuki-novels.com/
|
20
|
+
+ 暁 http://www.akatsuki-novels.com/ (※300話以上ある作品は未対応)
|
21
|
+
+ カクヨム https://kakuyomu.jp/
|
27
22
|
|
28
23
|
コンソールで操作するアプリケーションですが、ブラウザを使って直感的に操作することができる WEB UI も搭載!([デモページ](http://whiteleaf7.github.io/narou/demo/))
|
29
24
|
|
@@ -37,93 +32,35 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
37
32
|
更新履歴 - ChangeLog
|
38
33
|
--------------------
|
39
34
|
|
40
|
-
2.9.
|
35
|
+
2.9.3 : 2016/06/15
|
41
36
|
------------------
|
37
|
+
#### WEB UI
|
38
|
+
- 小説URLもFilterで検索出来るようにしました
|
39
|
+
+ NコードがURLに含まれている為、Nコード検索としても使えます
|
40
|
+
- ダイジェスト化を検知した際にでる選択肢に、「8. 変換する」を追加しました
|
41
|
+
|
42
42
|
#### 仕様変更
|
43
|
-
-
|
44
|
-
|
45
|
-
|
43
|
+
- `enable_dakuten_font` を復活させました
|
44
|
+
+ AozoraEpub3の一文字濁点フォント機能を使った場合、端末でフォントを切り替えた
|
45
|
+
場合に濁点にならない問題があったため、切り替えた場合でも機能するNarou.rbの
|
46
|
+
濁点フォントを再び使えるようにしました
|
47
|
+
+ setting.ini で enable_dakuten_font = true とすることで有効になり、false の
|
48
|
+
場合は AozoraEPub3 の一文字濁点フォント機能を使用します。
|
49
|
+
(デフォルトでは false で、 AozoraEpub3 の機能を使います)
|
50
|
+
- 更新時に1作品ごとに待機時間が入るようになりました
|
51
|
+
+ `update.interval` で待機秒数を指定出来ます(ただし、最低2.5秒必要です)
|
52
|
+
+ 更新処理の時間も含まれるので、例えば更新処理に1秒かかった場合は待機時間は
|
53
|
+
1.5秒です。2.5秒以上更新や変換にかかった場合は待機時間は発生しません
|
46
54
|
|
47
55
|
#### 修正
|
48
|
-
-
|
49
|
-
-
|
50
|
-
- Internet Explorer で WEB UI が正常に動作しない不具合を修正
|
56
|
+
- i文庫に変換時にカクヨムのサブチャプターが反映されていなかったのを修正
|
57
|
+
- WEB UIのタグを編集ダイアログ内でタグをソートしていなかったのを修正
|
51
58
|
|
52
59
|
|
53
|
-
2.9.
|
60
|
+
2.9.2 : 2016/04/08
|
54
61
|
------------------
|
55
|
-
#### WEB UI
|
56
|
-
- メニュー(歯車アイコン)に「サーバを再起動」を追加しました。WEB UIから直接WEB
|
57
|
-
UIサーバを再起動できるようになります
|
58
|
-
- 「Narou.rbについて」ダイアログで最新バージョンを確認できた場合に、その場で
|
59
|
-
システムの更新及び再起動が出来るようになりました。
|
60
|
-
(sudo が必要な環境の場合はコマンドで更新して下さい)
|
61
|
-
- 小説リスト部分で右クリックすることで個別メニューを呼び出せるようになりました
|
62
|
-
- 各小説をそれぞれ個別に更新出来るボタンを追加しました
|
63
|
-
- 「表示」メニューを拡張しました
|
64
|
-
+ 「変換設定ページは新規タブで開く」を追加しました
|
65
|
-
+ 「ボタンを画面下部に固定」を追加しました
|
66
|
-
+ 「個別メニューを編集」を追加しました
|
67
|
-
- 「ツール」に「メモ帳」を追加しました
|
68
|
-
+ メモはサーバに保存され、各PC間で共有出来ます。個別メニューの編集内容の
|
69
|
-
受渡しや小説URLの一時的プールなどに使うことを想定しています
|
70
|
-
- タグ検索をフィルターに統合しました
|
71
|
-
+ フィルター欄に `tag:タグ名` と入力することでタグ検索が可能になります。
|
72
|
-
(既存のキーワード検索との併用も可能です)
|
73
|
-
+ `tag:タグ名1 tag:タグ名2` と複数入力することで、複数のタグでの絞り込みが
|
74
|
-
可能です
|
75
|
-
+ `-tag:タグ名` と `-` を付けることで、除外タグ検索になります
|
76
|
-
+ メニューのタグか小説リストのタグ名をクリックすることで、フィルター欄に自動
|
77
|
-
で入力されます。また、Altキーを押しながらクリックすることで、除外タグが入力
|
78
|
-
されます
|
79
|
-
- タグの並び順をソートするようにしました
|
80
|
-
- 一部のボタンのアイコンを変更しました
|
81
|
-
- ツールチップを表示してしばらくしたら自動で閉じるようにしました
|
82
|
-
- 表示件数に200、500を追加しました
|
83
|
-
- 電子書籍端末を接続時に、取り外すための Eject ボタンを表示するようにしました
|
84
|
-
(現時点でMacのみサポート)
|
85
|
-
|
86
|
-
#### 追加機能
|
87
|
-
- [カクヨム](https://kakuyomu.jp/)に対応しました
|
88
|
-
+ 各話の更新状況を(目次ページから)取得する方法が現時点で無いので、新着のみ
|
89
|
-
取得出来ます(各話を最新の状態にしたい場合は、強制ダウンロードをする必要が
|
90
|
-
あります)
|
91
|
-
- `narou setting 変数名` コマンドで現在の設定値を確認出来るようになりました。
|
92
|
-
(例 `narou s device`)
|
93
|
-
- `list` コマンドに `--gl` オプションが追加されました
|
94
|
-
+ 表示・ソート対象の日付を更新日から最新話掲載日に切り替えます
|
95
|
-
+ general-lastup の略です
|
96
|
-
- 変換プリセットを追加しました
|
97
|
-
- n5115cq 最果てのパラディン
|
98
|
-
- n7594ct 10年ごしの引きニートを辞めて外出したら自宅ごと異世界に転移してた
|
99
|
-
|
100
|
-
#### 仕様変更
|
101
|
-
- 変換処理で body や introduction 等を処理して最後に subtitle を変換していた
|
102
|
-
のを先に subtitle を処理するように変更しました
|
103
|
-
- converter.rb でサブタイトルで本文の処理内容を調整したい場合に今までの処理順
|
104
|
-
では不可能だったため
|
105
|
-
- title_date_format の $s が古い作品だと5桁になってしまうのを4桁に収まるように
|
106
|
-
調整しました(小説家になろうの最も古い作品が4桁に収まるようにしました)
|
107
|
-
- `あ゛` のような記述を濁点フォントに置き換える処理を廃止し、AozoraEpub3 による
|
108
|
-
一文字フォント置き換え機能に任せるようにしました
|
109
|
-
+ `narou init` が必要です
|
110
|
-
+ この変更に伴い、setting.ini の enable_dakuten_font は廃止されました
|
111
|
-
+ Kindle 端末において、挿絵が表紙画像になってしまう問題がこの仕様変更で改善
|
112
|
-
されます
|
113
|
-
|
114
62
|
#### 修正
|
115
|
-
-
|
116
|
-
(ヘルプからブックマークレットの再取得が必要です)
|
117
|
-
- Windows において、WEB UI の「Narou.rbについて」ダイアログで最新バージョンの
|
118
|
-
確認に失敗する場合がある問題に対応しました
|
119
|
-
- WEB UI の小説リストの項目を入れ替えた後に各種ボタンが反応しなくなるのを修正
|
120
|
-
- 凍結済み小説を強制更新した際に凍結が解除されてしまう場合があったのを修正
|
121
|
-
- thin などがすでにインストール済みの場合に narou web コマンドで WEB UI サーバ
|
122
|
-
を起動できない場合があるので、必ず WEBrick で起動するようにしました
|
123
|
-
- ノクターン・ムーンライト・ミッドナイトノベルズの認証方法変更後、Nコードのみで
|
124
|
-
ダウンロードが出来なくなっていたのを修正
|
125
|
-
- Linux でダウンロード時にエラーが出る場合があったのを修正
|
126
|
-
- その他パフォーマンス等の調整
|
63
|
+
- WEB UIの個別メニュー「差分を表示」が実行出来ない不具合を修正
|
127
64
|
|
128
65
|
|
129
66
|
----
|
data/lib/command/convert.rb
CHANGED
@@ -189,24 +189,25 @@ module Command
|
|
189
189
|
end
|
190
190
|
|
191
191
|
if File.file?(target.to_s)
|
192
|
-
|
192
|
+
res = convert_txt(target)
|
193
193
|
else
|
194
194
|
@argument_target_type = :novel
|
195
195
|
unless Downloader.novel_exists?(target)
|
196
196
|
error "#{target} は存在しません"
|
197
197
|
next
|
198
198
|
end
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
})
|
199
|
+
res = NovelConverter.convert(target, {
|
200
|
+
output_filename: @output_filename,
|
201
|
+
display_inspector: @options["inspect"],
|
202
|
+
ignore_force: @options["ignore-force"],
|
203
|
+
ignore_default: @options["ignore-default"],
|
204
|
+
})
|
206
205
|
@novel_data = Downloader.get_data_by_target(target)
|
206
|
+
@options["yokogaki"] = NovelSetting.load(target)["enable_yokogaki"]
|
207
207
|
end
|
208
|
-
next unless
|
209
|
-
@converted_txt_path = converted_txt_path
|
208
|
+
next unless res
|
209
|
+
@converted_txt_path = res[:converted_txt_path]
|
210
|
+
@use_dakuten_font = res[:use_dakuten_font]
|
210
211
|
|
211
212
|
ebook_file = hook_call(:convert_txt_to_ebook_file)
|
212
213
|
next if ebook_file.nil?
|
@@ -256,12 +257,14 @@ module Command
|
|
256
257
|
#
|
257
258
|
def convert_txt_to_ebook_file
|
258
259
|
return NovelConverter.convert_txt_to_ebook_file(@converted_txt_path, {
|
260
|
+
use_dakuten_font: @use_dakuten_font,
|
259
261
|
device: @device,
|
260
262
|
verbose: @options["verbose"],
|
261
263
|
no_epub: @options["no-epub"],
|
262
264
|
no_mobi: @options["no-mobi"],
|
263
265
|
no_strip: @options["no-strip"],
|
264
|
-
no_cleanup_txt: @argument_target_type == :file
|
266
|
+
no_cleanup_txt: @argument_target_type == :file,
|
267
|
+
yokogaki: @options["yokogaki"]
|
265
268
|
})
|
266
269
|
end
|
267
270
|
|
data/lib/command/download.rb
CHANGED
@@ -9,7 +9,7 @@ require_relative "../input"
|
|
9
9
|
|
10
10
|
module Command
|
11
11
|
class Download < CommandBase
|
12
|
-
SUPPORT_NOVEL_SITES = %w(小説家になろう(小説を読もう) ノクターンノベルズ ムーンライトノベルズ Arcadia ハーメルン 暁)
|
12
|
+
SUPPORT_NOVEL_SITES = %w(小説家になろう(小説を読もう) ノクターンノベルズ ムーンライトノベルズ Arcadia ハーメルン 暁 カクヨム)
|
13
13
|
|
14
14
|
def initialize
|
15
15
|
super("[<target> <target2> ...] [options]")
|
data/lib/command/setting.rb
CHANGED
@@ -6,6 +6,7 @@
|
|
6
6
|
require_relative "../inventory"
|
7
7
|
require_relative "../novelsetting"
|
8
8
|
require_relative "../eventable"
|
9
|
+
require_relative "update"
|
9
10
|
|
10
11
|
module Command
|
11
12
|
class Setting < CommandBase
|
@@ -351,6 +352,10 @@ module Command
|
|
351
352
|
type: :boolean, help: "hotentryをメールで送る(mail設定済みの場合)",
|
352
353
|
tab: :detail
|
353
354
|
},
|
355
|
+
"update.interval" => {
|
356
|
+
type: :float, help: "更新時に各作品間で指定した秒数待機する(処理時間を含む)。最低#{Update::Interval::MIN}秒以上",
|
357
|
+
tab: :general
|
358
|
+
},
|
354
359
|
"update.strong" => {
|
355
360
|
type: :boolean, help: "改稿日当日の連続更新でも更新漏れが起きないように、中身もチェックして更新を検知する(やや処理が重くなる)",
|
356
361
|
tab: :general
|
data/lib/command/update.rb
CHANGED
@@ -14,6 +14,22 @@ module Command
|
|
14
14
|
class Update < CommandBase
|
15
15
|
extend Memoist
|
16
16
|
|
17
|
+
class Interval
|
18
|
+
MIN = 2.5 # 作品間ウェイトの最低秒数(処理時間含む)
|
19
|
+
|
20
|
+
def initialize(interval)
|
21
|
+
@time = Time.now - MIN
|
22
|
+
interval = interval.to_f
|
23
|
+
@interval_time = interval >= MIN ? interval : MIN
|
24
|
+
end
|
25
|
+
|
26
|
+
def wait
|
27
|
+
wait_time = Time.now - @time
|
28
|
+
sleep(@interval_time - wait_time) if wait_time < @interval_time
|
29
|
+
@time = Time.now
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
17
33
|
LOG_DIR_NAME = "log"
|
18
34
|
LOG_NUM_LIMIT = 30 # ログの保存する上限数
|
19
35
|
LOG_FILENAME_FORMAT = "update_log_%s.txt"
|
@@ -139,8 +155,11 @@ module Command
|
|
139
155
|
@options["hotentry.auto-mail"] = inv["hotentry.auto-mail"]
|
140
156
|
hotentry = {}
|
141
157
|
|
158
|
+
interval = Interval.new(@options["interval"])
|
159
|
+
|
142
160
|
update_log = $stdout.capture(quiet: false) do
|
143
161
|
sort_by_key(sort_key, update_target_list).each_with_index do |target, i|
|
162
|
+
interval.wait
|
144
163
|
display_message = nil
|
145
164
|
data = Downloader.get_data_by_target(target)
|
146
165
|
if !data
|
@@ -335,6 +354,7 @@ module Command
|
|
335
354
|
ignore_default = false
|
336
355
|
|
337
356
|
converted_text_array = []
|
357
|
+
use_dakuten_font = false
|
338
358
|
|
339
359
|
Helper.print_horizontal_rule
|
340
360
|
puts "hotentry の変換を開始"
|
@@ -358,6 +378,7 @@ module Command
|
|
358
378
|
setting: setting,
|
359
379
|
text: novel_converter.convert_main_for_novel(subtitles, true)
|
360
380
|
}
|
381
|
+
use_dakuten_font |= novel_converter.use_dakuten_font
|
361
382
|
|
362
383
|
total_progress += last_num + 1
|
363
384
|
end
|
@@ -378,6 +399,7 @@ module Command
|
|
378
399
|
# テキストを書籍データに変換
|
379
400
|
relay_proc = -> {
|
380
401
|
NovelConverter.convert_txt_to_ebook_file(txt_output_path, {
|
402
|
+
use_dakuten_font: use_dakuten_font,
|
381
403
|
device: device
|
382
404
|
})
|
383
405
|
}
|
data/lib/converterbase.rb
CHANGED
@@ -17,6 +17,7 @@ class ConverterBase
|
|
17
17
|
ENGLISH_SENTENCES_CHARACTERS = /[\w.,!?'" &:;_-]+/
|
18
18
|
ENGLISH_SENTENCES_MIN_LENGTH = 8 # この文字数以上アルファベットが続くと半角のまま
|
19
19
|
|
20
|
+
attr_reader :use_dakuten_font
|
20
21
|
attr_accessor :output_text_dir, :subtitles, :data_type
|
21
22
|
attr_accessor :current_index # 現在処理してる subtitles 内でのインデックス
|
22
23
|
|
@@ -38,6 +39,7 @@ class ConverterBase
|
|
38
39
|
@setting = setting
|
39
40
|
@inspector = inspector
|
40
41
|
@illustration = illustration
|
42
|
+
@use_dakuten_font = false
|
41
43
|
@output_text_dir = nil
|
42
44
|
@subtitles = nil
|
43
45
|
@data_type = "text"
|
@@ -451,6 +453,19 @@ class ConverterBase
|
|
451
453
|
data.gsub!("※※", "※[#米印、1-2-8]")
|
452
454
|
end
|
453
455
|
|
456
|
+
#
|
457
|
+
# 濁点のついてない文字に濁点をつける表現を対応
|
458
|
+
#
|
459
|
+
# 濁点つきフォントに部分的に切り替える
|
460
|
+
#
|
461
|
+
def convert_dakuten_char_to_font(data)
|
462
|
+
return unless @setting.enable_dakuten_font
|
463
|
+
data.gsub!(/([ぁ-んァ-ヶι])[゛゙]/) do
|
464
|
+
@use_dakuten_font = true
|
465
|
+
"[#濁点]#{$1}[#濁点終わり]"
|
466
|
+
end
|
467
|
+
end
|
468
|
+
|
454
469
|
#
|
455
470
|
# 小説のルールに沿うように変換
|
456
471
|
#
|
@@ -1131,6 +1146,7 @@ class ConverterBase
|
|
1131
1146
|
convert_special_characters(data)
|
1132
1147
|
convert_fraction_and_date(data)
|
1133
1148
|
modify_kana_ni_to_kanji_ni(data)
|
1149
|
+
convert_dakuten_char_to_font(data)
|
1134
1150
|
end
|
1135
1151
|
|
1136
1152
|
def before_convert(io)
|
data/lib/device.rb
CHANGED
@@ -60,6 +60,7 @@ class Device
|
|
60
60
|
class UnknownDevice < StandardError; end
|
61
61
|
class SendFailure < StandardError; end
|
62
62
|
class DontConneting < StandardError; end
|
63
|
+
class CantEject < StandardError; end
|
63
64
|
|
64
65
|
def self.exists?(device)
|
65
66
|
DEVICES.include?(device.downcase)
|
@@ -90,7 +91,11 @@ class Device
|
|
90
91
|
|
91
92
|
def eject
|
92
93
|
if ejectable?
|
93
|
-
|
94
|
+
begin
|
95
|
+
Device.eject(@device_module::VOLUME_NAME)
|
96
|
+
rescue CantEject => e
|
97
|
+
error e.message
|
98
|
+
end
|
94
99
|
end
|
95
100
|
end
|
96
101
|
|
data/lib/device/library/mac.rb
CHANGED
data/lib/downloader.rb
CHANGED
@@ -464,6 +464,7 @@ class Downloader
|
|
464
464
|
"5" => "最新のあらすじを表示する",
|
465
465
|
"6" => "小説ページをブラウザで開く",
|
466
466
|
"7" => "保存フォルダを開く",
|
467
|
+
"8" => "変換する",
|
467
468
|
default: "2"
|
468
469
|
}.freeze
|
469
470
|
|
@@ -507,6 +508,7 @@ class Downloader
|
|
507
508
|
else
|
508
509
|
choice = Narou::Input.choose(title, message, CHOICES)
|
509
510
|
end
|
511
|
+
|
510
512
|
case choice
|
511
513
|
when "1"
|
512
514
|
return false
|
@@ -528,6 +530,8 @@ class Downloader
|
|
528
530
|
Helper.open_browser(latest_toc["toc_url"])
|
529
531
|
when "7"
|
530
532
|
Helper.open_directory(Downloader.get_novel_data_dir_by_target(latest_toc["toc_url"]))
|
533
|
+
when "8"
|
534
|
+
Command::Convert.execute!([latest_toc["toc_url"]])
|
531
535
|
end
|
532
536
|
unless Narou.web?
|
533
537
|
message = "" # 長いので二度は表示しない
|
data/lib/novelconverter.rb
CHANGED
@@ -23,6 +23,8 @@ class NovelConverter
|
|
23
23
|
NOVEL_TEXT_TEMPLATE_NAME = "novel.txt"
|
24
24
|
NOVEL_TEXT_TEMPLATE_NAME_FOR_IBUNKO = "ibunko_novel.txt"
|
25
25
|
|
26
|
+
attr_reader :use_dakuten_font
|
27
|
+
|
26
28
|
if Narou.already_init?
|
27
29
|
@@site_settings = Downloader.load_settings
|
28
30
|
end
|
@@ -39,7 +41,10 @@ class NovelConverter
|
|
39
41
|
setting = NovelSetting.load(target, options[:ignore_force], options[:ignore_default])
|
40
42
|
if setting
|
41
43
|
novel_converter = new(setting, options[:output_filename], options[:display_inspector])
|
42
|
-
return
|
44
|
+
return {
|
45
|
+
converted_txt_path: novel_converter.convert_main,
|
46
|
+
use_dakuten_font: novel_converter.use_dakuten_font
|
47
|
+
}
|
43
48
|
end
|
44
49
|
nil
|
45
50
|
end
|
@@ -67,8 +72,33 @@ class NovelConverter
|
|
67
72
|
if options[:encoding]
|
68
73
|
text.force_encoding(options[:encoding]).encode!(Encoding::UTF_8)
|
69
74
|
end
|
75
|
+
{
|
76
|
+
converted_txt_path: novel_converter.convert_main(text),
|
77
|
+
use_dakuten_font: novel_converter.use_dakuten_font
|
78
|
+
}
|
79
|
+
end
|
70
80
|
|
71
|
-
|
81
|
+
DAKUTEN_FROM = ["vertical_font_with_dakuten.css", "DMincho.ttf"]
|
82
|
+
DAKUTEN_TO = ["template/OPS/css_custom/vertical_font.css", "template/OPS/fonts/DMincho.ttf"]
|
83
|
+
|
84
|
+
def self.activate_dakuten_font_files
|
85
|
+
preset_dir = Narou.get_preset_dir
|
86
|
+
aozora_dir = File.dirname(Narou.get_aozoraepub3_path)
|
87
|
+
|
88
|
+
DAKUTEN_FROM.each_with_index do |name, i|
|
89
|
+
src = File.join(preset_dir, name)
|
90
|
+
dst = File.join(aozora_dir, DAKUTEN_TO[i])
|
91
|
+
FileUtils.copy(src, dst)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.inactivate_dakuten_font_files
|
96
|
+
preset_dir = Narou.get_preset_dir
|
97
|
+
aozora_dir = File.dirname(Narou.get_aozoraepub3_path)
|
98
|
+
path_normal_vertical_css = File.join(preset_dir, "vertical_font.css")
|
99
|
+
|
100
|
+
FileUtils.copy(path_normal_vertical_css, File.join(aozora_dir, DAKUTEN_TO[0]))
|
101
|
+
FileUtils.remove(File.join(aozora_dir, DAKUTEN_TO[1]))
|
72
102
|
end
|
73
103
|
|
74
104
|
#
|
@@ -81,7 +111,7 @@ class NovelConverter
|
|
81
111
|
#
|
82
112
|
# 返り値:正常終了 :success、エラー終了 :error、AozoraEpub3が見つからなかった nil
|
83
113
|
#
|
84
|
-
def self.txt_to_epub(filename, dst_dir
|
114
|
+
def self.txt_to_epub(filename, dst_dir: nil, device: nil, verbose: false, yokogaki: false, use_dakuten_font: false)
|
85
115
|
abs_srcpath = File.expand_path(filename)
|
86
116
|
src_dir = File.dirname(abs_srcpath)
|
87
117
|
|
@@ -108,6 +138,8 @@ class NovelConverter
|
|
108
138
|
end
|
109
139
|
end
|
110
140
|
|
141
|
+
yokogaki_option = yokogaki ? "-hor" : ""
|
142
|
+
|
111
143
|
pwd = Dir.pwd
|
112
144
|
|
113
145
|
aozoraepub3_path = Narou.get_aozoraepub3_path
|
@@ -126,10 +158,11 @@ class NovelConverter
|
|
126
158
|
end
|
127
159
|
Dir.chdir(aozoraepub3_dir)
|
128
160
|
command = %!java #{java_encoding} -cp #{aozoraepub3_basename} AozoraEpub3 -enc UTF-8 -of #{device_option} ! +
|
129
|
-
%!#{cover_option} #{dst_option} #{ext_option} "#{abs_srcpath}"!
|
161
|
+
%!#{cover_option} #{dst_option} #{ext_option} #{yokogaki_option} "#{abs_srcpath}"!
|
130
162
|
if Helper.os_windows?
|
131
163
|
command = "cmd /c " + command.encode(Encoding::Windows_31J)
|
132
164
|
end
|
165
|
+
activate_dakuten_font_files if use_dakuten_font
|
133
166
|
print "AozoraEpub3でEPUBに変換しています"
|
134
167
|
begin
|
135
168
|
res = Helper::AsyncCommand.exec(command) do
|
@@ -137,6 +170,7 @@ class NovelConverter
|
|
137
170
|
end
|
138
171
|
ensure
|
139
172
|
Dir.chdir(pwd)
|
173
|
+
inactivate_dakuten_font_files if use_dakuten_font
|
140
174
|
end
|
141
175
|
|
142
176
|
# AozoraEpub3はエラーだとしてもexitコードは0なので、
|
@@ -253,6 +287,8 @@ class NovelConverter
|
|
253
287
|
no_mobi: false,
|
254
288
|
no_strip: false,
|
255
289
|
no_cleanup_txt: false,
|
290
|
+
yokogaki: false,
|
291
|
+
use_dakuten_font: false,
|
256
292
|
}.merge(options)
|
257
293
|
|
258
294
|
device = options[:device]
|
@@ -261,7 +297,12 @@ class NovelConverter
|
|
261
297
|
return false if options[:no_epub]
|
262
298
|
clean_up_file_list << txt_path unless options[:no_cleanup_txt]
|
263
299
|
# epub
|
264
|
-
status = NovelConverter.txt_to_epub(
|
300
|
+
status = NovelConverter.txt_to_epub(
|
301
|
+
txt_path,
|
302
|
+
dst_dir: options[:dst_dir], device: device,
|
303
|
+
verbose: options[:verbose], yokogaki: options[:yokogaki],
|
304
|
+
use_dakuten_font: options[:use_dakuten_font]
|
305
|
+
)
|
265
306
|
return nil if status != :success
|
266
307
|
if device && device.kobo?
|
267
308
|
epub_ext = device.ebook_file_ext
|
@@ -317,6 +358,7 @@ class NovelConverter
|
|
317
358
|
@inspector = Inspector.new(@setting)
|
318
359
|
@illustration = Illustration.new(@setting, @inspector)
|
319
360
|
@display_inspector = display_inspector
|
361
|
+
@use_dakuten_font = false
|
320
362
|
@converter = create_converter
|
321
363
|
@converter.output_text_dir = output_text_dir
|
322
364
|
@data = @novel_id ? Database.instance.get_data("id", @novel_id) : {}
|
@@ -540,6 +582,8 @@ class NovelConverter
|
|
540
582
|
# 表紙の挿絵注記を3行目に挟み込む
|
541
583
|
converted_text = [splited[0], splited[1], create_cover_chuki, splited[2]].join("\n")
|
542
584
|
|
585
|
+
@use_dakuten_font = @converter.use_dakuten_font
|
586
|
+
|
543
587
|
converted_text
|
544
588
|
end
|
545
589
|
|
@@ -612,6 +656,7 @@ class NovelConverter
|
|
612
656
|
end
|
613
657
|
sections << section
|
614
658
|
end
|
659
|
+
@use_dakuten_font = @converter.use_dakuten_font
|
615
660
|
sections
|
616
661
|
ensure
|
617
662
|
trigger(:"convert_main.finish")
|
data/lib/novelsetting.rb
CHANGED
@@ -17,7 +17,7 @@ class NovelSetting
|
|
17
17
|
#
|
18
18
|
# データベースに登録されている小説の設定を取得する
|
19
19
|
#
|
20
|
-
def self.load(target, ignore_force, ignore_default)
|
20
|
+
def self.load(target, ignore_force = false, ignore_default = false)
|
21
21
|
setting = create(target, ignore_force, ignore_default)
|
22
22
|
data = Downloader.get_data_by_target(target)
|
23
23
|
setting.id = data["id"]
|
@@ -222,6 +222,12 @@ class NovelSetting
|
|
222
222
|
# type: 変数の型
|
223
223
|
# value: 初期値
|
224
224
|
# help: 説明(setting.ini に書き出される)
|
225
|
+
{
|
226
|
+
name: "enable_yokogaki",
|
227
|
+
type: :boolean,
|
228
|
+
value: false,
|
229
|
+
help: "横書きにする"
|
230
|
+
},
|
225
231
|
{
|
226
232
|
name: "enable_inspect",
|
227
233
|
type: :boolean,
|
@@ -354,6 +360,12 @@ class NovelSetting
|
|
354
360
|
value: 10,
|
355
361
|
help: "ここで設定した値が `enable_convert_page_break` に反映される"
|
356
362
|
},
|
363
|
+
{
|
364
|
+
name: "enable_dakuten_font",
|
365
|
+
type: :boolean,
|
366
|
+
value: false,
|
367
|
+
help: "濁点表現をNarou.rbで処理する(濁点フォントを使用する)。false の場合はAozoraEpub3に任せる"
|
368
|
+
},
|
357
369
|
{
|
358
370
|
name: "enable_display_end_of_book",
|
359
371
|
type: :boolean,
|
data/lib/version.rb
CHANGED
data/lib/web/appserver.rb
CHANGED
@@ -493,9 +493,7 @@ class Narou::AppServer < Sinatra::Base
|
|
493
493
|
title: escape_html(data["title"]),
|
494
494
|
author: escape_html(data["author"]),
|
495
495
|
sitename: data["sitename"],
|
496
|
-
toc_url:
|
497
|
-
%!data-toggle="tooltip" data-placement="top" title="#{data["toc_url"]}">! +
|
498
|
-
%!<span class="glyphicon glyphicon-link"></span></a>!,
|
496
|
+
toc_url: data["toc_url"],
|
499
497
|
novel_type: data["novel_type"] == 2 ? "短編" : "連載",
|
500
498
|
tags: (tags.empty? ? "" : decorate_tags(tags) + ' <span class="tag label label-white" data-tag="" data-toggle="tooltip" title="タグ検索を解除"> </span>'),
|
501
499
|
status: [
|
@@ -678,6 +676,7 @@ class Narou::AppServer < Sinatra::Base
|
|
678
676
|
tags.each do |tag|
|
679
677
|
tag_info[tag] ||= {
|
680
678
|
count: 0,
|
679
|
+
tag: tag,
|
681
680
|
html: decorate_tags([tag])
|
682
681
|
}
|
683
682
|
if ids.include?(data["id"])
|
@@ -685,7 +684,7 @@ class Narou::AppServer < Sinatra::Base
|
|
685
684
|
end
|
686
685
|
end
|
687
686
|
end
|
688
|
-
json tag_info
|
687
|
+
json Hash[tag_info.sort_by { |k, v| k }].values
|
689
688
|
end
|
690
689
|
|
691
690
|
post "/api/edit_tag" do
|
@@ -1277,8 +1277,8 @@ var Narou = (function() {
|
|
1277
1277
|
}
|
1278
1278
|
|
1279
1279
|
$.post("/api/taginfo.json", { ids: ids }, function(taginfo) {
|
1280
|
-
|
1281
|
-
var label = $('<label><input type="checkbox" data-tagname="' +
|
1280
|
+
_.each(taginfo, function(info) {
|
1281
|
+
var label = $('<label><input type="checkbox" data-tagname="' + info.tag.replace(/"/g, """) +
|
1282
1282
|
'" data-default-checkstate=' + calcState(info.count) + '> ' + info.html + ' </label>');
|
1283
1283
|
field.append(label);
|
1284
1284
|
});
|
@@ -179,8 +179,28 @@ $(document).ready(function() {
|
|
179
179
|
// 掲載URL
|
180
180
|
{
|
181
181
|
title: "リンク",
|
182
|
-
data: "toc_url", className: "text-center",
|
183
|
-
|
182
|
+
data: "toc_url", className: "text-center",
|
183
|
+
visible: cell_visible.toc_url,
|
184
|
+
render: function(data, type, row) {
|
185
|
+
if (!data) return "";
|
186
|
+
|
187
|
+
switch (type) {
|
188
|
+
case "display":
|
189
|
+
return sprintf(
|
190
|
+
'<a href="%(url)s" class="btn btn-default btn-xs" target="_blank" ' +
|
191
|
+
'data-toggle="tooltip" data-placement="top" title="%(url)s">' +
|
192
|
+
'<span class="glyphicon glyphicon-link"></span></a>',
|
193
|
+
{ url: data }
|
194
|
+
);
|
195
|
+
|
196
|
+
case "filter":
|
197
|
+
case "sort":
|
198
|
+
return data;
|
199
|
+
}
|
200
|
+
|
201
|
+
return data;
|
202
|
+
}
|
203
|
+
},
|
184
204
|
// 書籍データDLリンク
|
185
205
|
{
|
186
206
|
title: "DL",
|
data/narou.gemspec
CHANGED
@@ -32,94 +32,29 @@ Gem::Specification.new do |gem|
|
|
32
32
|
install_message = <<-EOS
|
33
33
|
#{"*" * 60}
|
34
34
|
|
35
|
-
2.9.
|
36
|
-
------------------
|
37
|
-
#### 仕様変更
|
38
|
-
- 「メニュー>表示」の、「ボタンを画面下部に固定」を「ボタンを画面下部に表示」
|
39
|
-
に変更しました。それに合わせて、「ボタンをページ上部に表示」を追加しました。
|
40
|
-
画面下部にボタンを固定表示した場合でも、今までのボタンを残せるようになります
|
41
|
-
|
42
|
-
#### 修正
|
43
|
-
- inspect コマンドでエラーが出る場合があったのを修正
|
44
|
-
- diff コマンドの引数を省略した時にエラーが出ていたのを修正
|
45
|
-
- Internet Explorer で WEB UI が正常に動作しない不具合を修正
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
2.9.0 : 2016/03/28
|
35
|
+
2.9.3 : 2016/06/15
|
50
36
|
------------------
|
51
37
|
#### WEB UI
|
52
|
-
-
|
53
|
-
|
54
|
-
-
|
55
|
-
システムの更新及び再起動が出来るようになりました。
|
56
|
-
(sudo が必要な環境の場合はコマンドで更新して下さい)
|
57
|
-
- 小説リスト部分で右クリックすることで個別メニューを呼び出せるようになりました
|
58
|
-
- 各小説をそれぞれ個別に更新出来るボタンを追加しました
|
59
|
-
- 「表示」メニューを拡張しました
|
60
|
-
+ 「変換設定ページは新規タブで開く」を追加しました
|
61
|
-
+ 「ボタンを画面下部に固定」を追加しました
|
62
|
-
+ 「個別メニューを編集」を追加しました
|
63
|
-
- 「ツール」に「メモ帳」を追加しました
|
64
|
-
+ メモはサーバに保存され、各PC間で共有出来ます。個別メニューの編集内容の
|
65
|
-
受渡しや小説URLの一時的プールなどに使うことを想定しています
|
66
|
-
- タグ検索をフィルターに統合しました
|
67
|
-
+ フィルター欄に `tag:タグ名` と入力することでタグ検索が可能になります。
|
68
|
-
(既存のキーワード検索との併用も可能です)
|
69
|
-
+ `tag:タグ名1 tag:タグ名2` と複数入力することで、複数のタグでの絞り込みが
|
70
|
-
可能です
|
71
|
-
+ `-tag:タグ名` と `-` を付けることで、除外タグ検索になります
|
72
|
-
+ メニューのタグか小説リストのタグ名をクリックすることで、フィルター欄に自動
|
73
|
-
で入力されます。また、Altキーを押しながらクリックすることで、除外タグが入力
|
74
|
-
されます
|
75
|
-
- タグの並び順をソートするようにしました
|
76
|
-
- 一部のボタンのアイコンを変更しました
|
77
|
-
- ツールチップを表示してしばらくしたら自動で閉じるようにしました
|
78
|
-
- 表示件数に200、500を追加しました
|
79
|
-
- 電子書籍端末を接続時に、取り外すための Eject ボタンを表示するようにしました
|
80
|
-
(現時点でMacのみサポート)
|
81
|
-
|
82
|
-
#### 追加機能
|
83
|
-
- [カクヨム](https://kakuyomu.jp/)に対応しました
|
84
|
-
+ 各話の更新状況を(目次ページから)取得する方法が現時点で無いので、新着のみ
|
85
|
-
取得出来ます(各話を最新の状態にしたい場合は、強制ダウンロードをする必要が
|
86
|
-
あります)
|
87
|
-
- `narou setting 変数名` コマンドで現在の設定値を確認出来るようになりました。
|
88
|
-
(例 `narou s device`)
|
89
|
-
- `list` コマンドに `--gl` オプションが追加されました
|
90
|
-
+ 表示・ソート対象の日付を更新日から最新話掲載日に切り替えます
|
91
|
-
+ general-lastup の略です
|
92
|
-
- 変換プリセットを追加しました
|
93
|
-
- n5115cq 最果てのパラディン
|
94
|
-
- n7594ct 10年ごしの引きニートを辞めて外出したら自宅ごと異世界に転移してた
|
38
|
+
- 小説URLもFilterで検索出来るようにしました
|
39
|
+
+ NコードがURLに含まれている為、Nコード検索としても使えます
|
40
|
+
- ダイジェスト化を検知した際にでる選択肢に、「8. 変換する」を追加しました
|
95
41
|
|
96
42
|
#### 仕様変更
|
97
|
-
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
+ `
|
106
|
-
+
|
107
|
-
|
108
|
-
されます
|
43
|
+
- `enable_dakuten_font` を復活させました
|
44
|
+
+ AozoraEpub3の一文字濁点フォント機能を使った場合、端末でフォントを切り替えた
|
45
|
+
場合に濁点にならない問題があったため、切り替えた場合でも機能するNarou.rbの
|
46
|
+
濁点フォントを再び使えるようにしました
|
47
|
+
+ setting.ini で enable_dakuten_font = true とすることで有効になり、false の
|
48
|
+
場合は AozoraEPub3 の一文字濁点フォント機能を使用します。
|
49
|
+
(デフォルトでは false で、 AozoraEpub3 の機能を使います)
|
50
|
+
- 更新時に1作品ごとに待機時間が入るようになりました
|
51
|
+
+ `update.interval` で待機秒数を指定出来ます(ただし、最低2.5秒必要です)
|
52
|
+
+ 更新処理の時間も含まれるので、例えば更新処理に1秒かかった場合は待機時間は
|
53
|
+
1.5秒です。2.5秒以上更新や変換にかかった場合は待機時間は発生しません
|
109
54
|
|
110
55
|
#### 修正
|
111
|
-
-
|
112
|
-
|
113
|
-
- Windows において、WEB UI の「Narou.rbについて」ダイアログで最新バージョンの
|
114
|
-
確認に失敗する場合がある問題に対応しました
|
115
|
-
- WEB UI の小説リストの項目を入れ替えた後に各種ボタンが反応しなくなるのを修正
|
116
|
-
- 凍結済み小説を強制更新した際に凍結が解除されてしまう場合があったのを修正
|
117
|
-
- thin などがすでにインストール済みの場合に narou web コマンドで WEB UI サーバ
|
118
|
-
を起動できない場合があるので、必ず WEBrick で起動するようにしました
|
119
|
-
- ノクターン・ムーンライト・ミッドナイトノベルズの認証方法変更後、Nコードのみで
|
120
|
-
ダウンロードが出来なくなっていたのを修正
|
121
|
-
- Linux でダウンロード時にエラーが出る場合があったのを修正
|
122
|
-
- その他パフォーマンス等の調整
|
56
|
+
- i文庫に変換時にカクヨムのサブチャプターが反映されていなかったのを修正
|
57
|
+
- WEB UIのタグを編集ダイアログ内でタグをソートしていなかったのを修正
|
123
58
|
|
124
59
|
#{"*" * 60}
|
125
60
|
EOS
|
data/preset/DMincho.ttf
ADDED
Binary file
|
@@ -0,0 +1,108 @@
|
|
1
|
+
@charset "utf-8";
|
2
|
+
@namespace "http://www.w3.org/1999/xhtml";
|
3
|
+
|
4
|
+
body {
|
5
|
+
font-family: "@MS 明朝", "@MS Mincho", "ヒラギノ明朝 ProN W3", "HiraMinProN-W3", serif, sans-serif;
|
6
|
+
line-height: 1.6em !important;
|
7
|
+
}
|
8
|
+
|
9
|
+
.gtc, .b {
|
10
|
+
font-family: '@MS ゴシック','@MS Gothic',sans-serif !important;
|
11
|
+
}
|
12
|
+
|
13
|
+
.b { font-weight: bold; }
|
14
|
+
.i { font-style: italic; }
|
15
|
+
|
16
|
+
rt { font-size: 0.6em; }
|
17
|
+
|
18
|
+
/* カスタム注記用 */
|
19
|
+
|
20
|
+
/* 柱(もどき) */
|
21
|
+
.running_head {
|
22
|
+
position: absolute !important;
|
23
|
+
top: 15px;
|
24
|
+
left: 10px;
|
25
|
+
font-size: 0.8em;
|
26
|
+
}
|
27
|
+
|
28
|
+
/* 濁点フォント */
|
29
|
+
@font-face {
|
30
|
+
font-family: "DakutenAokinMincho";
|
31
|
+
src: url(../fonts/DMincho.ttf) format("truetype");
|
32
|
+
}
|
33
|
+
|
34
|
+
.dakuten {
|
35
|
+
font-family: "DakutenAokinMincho" !important;
|
36
|
+
}
|
37
|
+
|
38
|
+
/* 二分アキ */
|
39
|
+
.half_em_space { padding-top: 0.5em; }
|
40
|
+
|
41
|
+
/* パラメーター(折り返しあり) */
|
42
|
+
.custom_parameter_block {
|
43
|
+
font-size: 100%;
|
44
|
+
line-height: 1.2em !important;
|
45
|
+
border: 2px solid #000;
|
46
|
+
border-radius: 4px;
|
47
|
+
margin: 1em 0.5em 1em 0.5em;
|
48
|
+
padding: 1em 0.2em 1em 0.2em;
|
49
|
+
display: inline-block;
|
50
|
+
font-family: sans-serif !important;
|
51
|
+
font-weight: bold;
|
52
|
+
box-shadow: 3px 3px 3px #bbb;
|
53
|
+
-webkit-box-shadow: 3px 3px 3px #bbb;
|
54
|
+
}
|
55
|
+
.jzm .custom_parameter_block {
|
56
|
+
display: block;
|
57
|
+
}
|
58
|
+
.jzm .p .custom_parameter_block {
|
59
|
+
display: inline-block;
|
60
|
+
}
|
61
|
+
|
62
|
+
/* 前書き */
|
63
|
+
.introduction {
|
64
|
+
float: right;
|
65
|
+
font-size: 83%;
|
66
|
+
line-height: 1.5em !important;
|
67
|
+
border-top: 3px solid #aaa;
|
68
|
+
color: #555;
|
69
|
+
margin: 0.25em;
|
70
|
+
margin-right: 1em;
|
71
|
+
padding: 1em 0.5em 1em 0.5em;
|
72
|
+
display: inline-block;
|
73
|
+
font-family: sans-serif !important;
|
74
|
+
text-align: left !important;
|
75
|
+
height: 70%;
|
76
|
+
}
|
77
|
+
.jzm .introduction {
|
78
|
+
display: block;
|
79
|
+
}
|
80
|
+
.jzm .p .introduction {
|
81
|
+
display: inline-block;
|
82
|
+
}
|
83
|
+
|
84
|
+
/* 後書き */
|
85
|
+
.postscript {
|
86
|
+
float: right;
|
87
|
+
font-size: 83%;
|
88
|
+
line-height: 1.5em !important;
|
89
|
+
border-top: 3px solid #888;
|
90
|
+
color: #222;
|
91
|
+
margin: 0.25em;
|
92
|
+
margin-right: 2em;
|
93
|
+
padding: 1em 0.5em 1em 0.5em;
|
94
|
+
display: inline-block;
|
95
|
+
font-family: sans-serif !important;
|
96
|
+
text-align: left !important;
|
97
|
+
height: 70%;
|
98
|
+
}
|
99
|
+
.jzm .postscript {
|
100
|
+
display: block;
|
101
|
+
}
|
102
|
+
.jzm .p .postscript {
|
103
|
+
display: inline-block;
|
104
|
+
}
|
105
|
+
|
106
|
+
div.clear {
|
107
|
+
clear: both;
|
108
|
+
}
|
@@ -24,8 +24,14 @@
|
|
24
24
|
|
25
25
|
[#改ページ]
|
26
26
|
<% end -%>
|
27
|
+
<% if section["subchapter"].to_s != "" -%>
|
28
|
+
[#1字下げ][#1段階大きな文字]<%= section["subchapter"].rstrip %>[#大きな文字終わり]
|
29
|
+
<% end -%>
|
27
30
|
|
28
|
-
|
31
|
+
<% if @setting.enable_yokogaki -%>
|
32
|
+
[#1字下げ]<% else -%>
|
33
|
+
[#3字下げ]<% end -%>
|
34
|
+
[#中見出し]<%= section["subtitle"].rstrip %>[#中見出し終わり]
|
29
35
|
|
30
36
|
<% if section["element"]["introduction"] != "" -%>
|
31
37
|
[#ここから6字下げ]
|
data/template/novel.txt.erb
CHANGED
@@ -31,7 +31,10 @@
|
|
31
31
|
[#1字下げ][#1段階大きな文字]<%= section["subchapter"].rstrip %>[#大きな文字終わり]
|
32
32
|
<% end -%>
|
33
33
|
|
34
|
-
|
34
|
+
<% if @setting.enable_yokogaki -%>
|
35
|
+
[#1字下げ]<% else -%>
|
36
|
+
[#3字下げ]<% end -%>
|
37
|
+
[#中見出し]<%= section["subtitle"].rstrip %>[#中見出し終わり]
|
35
38
|
<% if section["element"]["introduction"] != "" -%>
|
36
39
|
<% introduction, illust_chuki_array = Helper.extract_illust_chuki(section["element"]["introduction"]) -%>
|
37
40
|
<% if setting.author_comment_style == "simple" -%>
|
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: 2.9.
|
4
|
+
version: 2.9.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whiteleaf7
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: termcolorlight
|
@@ -430,6 +430,7 @@ files:
|
|
430
430
|
- narou.gemspec
|
431
431
|
- narou.rb
|
432
432
|
- preset/AozoraEpub3.ini
|
433
|
+
- preset/DMincho.ttf
|
433
434
|
- preset/bordersymbols.txt
|
434
435
|
- preset/custom_chuki_tag.txt
|
435
436
|
- preset/doubledash.png
|
@@ -454,6 +455,7 @@ files:
|
|
454
455
|
- preset/ncode.syosetu.com/n9902bn/converter.rb
|
455
456
|
- preset/singledash.png
|
456
457
|
- preset/vertical_font.css
|
458
|
+
- preset/vertical_font_with_dakuten.css
|
457
459
|
- spec/README.txt
|
458
460
|
- spec/convert_spec.rb
|
459
461
|
- spec/converterbase_spec.rb
|
@@ -538,94 +540,29 @@ metadata: {}
|
|
538
540
|
post_install_message: |
|
539
541
|
************************************************************
|
540
542
|
|
541
|
-
2.9.
|
542
|
-
------------------
|
543
|
-
#### 仕様変更
|
544
|
-
- 「メニュー>表示」の、「ボタンを画面下部に固定」を「ボタンを画面下部に表示」
|
545
|
-
に変更しました。それに合わせて、「ボタンをページ上部に表示」を追加しました。
|
546
|
-
画面下部にボタンを固定表示した場合でも、今までのボタンを残せるようになります
|
547
|
-
|
548
|
-
#### 修正
|
549
|
-
- inspect コマンドでエラーが出る場合があったのを修正
|
550
|
-
- diff コマンドの引数を省略した時にエラーが出ていたのを修正
|
551
|
-
- Internet Explorer で WEB UI が正常に動作しない不具合を修正
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
2.9.0 : 2016/03/28
|
543
|
+
2.9.3 : 2016/06/15
|
556
544
|
------------------
|
557
545
|
#### WEB UI
|
558
|
-
-
|
559
|
-
|
560
|
-
-
|
561
|
-
システムの更新及び再起動が出来るようになりました。
|
562
|
-
(sudo が必要な環境の場合はコマンドで更新して下さい)
|
563
|
-
- 小説リスト部分で右クリックすることで個別メニューを呼び出せるようになりました
|
564
|
-
- 各小説をそれぞれ個別に更新出来るボタンを追加しました
|
565
|
-
- 「表示」メニューを拡張しました
|
566
|
-
+ 「変換設定ページは新規タブで開く」を追加しました
|
567
|
-
+ 「ボタンを画面下部に固定」を追加しました
|
568
|
-
+ 「個別メニューを編集」を追加しました
|
569
|
-
- 「ツール」に「メモ帳」を追加しました
|
570
|
-
+ メモはサーバに保存され、各PC間で共有出来ます。個別メニューの編集内容の
|
571
|
-
受渡しや小説URLの一時的プールなどに使うことを想定しています
|
572
|
-
- タグ検索をフィルターに統合しました
|
573
|
-
+ フィルター欄に `tag:タグ名` と入力することでタグ検索が可能になります。
|
574
|
-
(既存のキーワード検索との併用も可能です)
|
575
|
-
+ `tag:タグ名1 tag:タグ名2` と複数入力することで、複数のタグでの絞り込みが
|
576
|
-
可能です
|
577
|
-
+ `-tag:タグ名` と `-` を付けることで、除外タグ検索になります
|
578
|
-
+ メニューのタグか小説リストのタグ名をクリックすることで、フィルター欄に自動
|
579
|
-
で入力されます。また、Altキーを押しながらクリックすることで、除外タグが入力
|
580
|
-
されます
|
581
|
-
- タグの並び順をソートするようにしました
|
582
|
-
- 一部のボタンのアイコンを変更しました
|
583
|
-
- ツールチップを表示してしばらくしたら自動で閉じるようにしました
|
584
|
-
- 表示件数に200、500を追加しました
|
585
|
-
- 電子書籍端末を接続時に、取り外すための Eject ボタンを表示するようにしました
|
586
|
-
(現時点でMacのみサポート)
|
587
|
-
|
588
|
-
#### 追加機能
|
589
|
-
- [カクヨム](https://kakuyomu.jp/)に対応しました
|
590
|
-
+ 各話の更新状況を(目次ページから)取得する方法が現時点で無いので、新着のみ
|
591
|
-
取得出来ます(各話を最新の状態にしたい場合は、強制ダウンロードをする必要が
|
592
|
-
あります)
|
593
|
-
- `narou setting 変数名` コマンドで現在の設定値を確認出来るようになりました。
|
594
|
-
(例 `narou s device`)
|
595
|
-
- `list` コマンドに `--gl` オプションが追加されました
|
596
|
-
+ 表示・ソート対象の日付を更新日から最新話掲載日に切り替えます
|
597
|
-
+ general-lastup の略です
|
598
|
-
- 変換プリセットを追加しました
|
599
|
-
- n5115cq 最果てのパラディン
|
600
|
-
- n7594ct 10年ごしの引きニートを辞めて外出したら自宅ごと異世界に転移してた
|
546
|
+
- 小説URLもFilterで検索出来るようにしました
|
547
|
+
+ NコードがURLに含まれている為、Nコード検索としても使えます
|
548
|
+
- ダイジェスト化を検知した際にでる選択肢に、「8. 変換する」を追加しました
|
601
549
|
|
602
550
|
#### 仕様変更
|
603
|
-
-
|
604
|
-
|
605
|
-
|
606
|
-
|
607
|
-
|
608
|
-
|
609
|
-
|
610
|
-
|
611
|
-
+ `
|
612
|
-
+
|
613
|
-
|
614
|
-
されます
|
551
|
+
- `enable_dakuten_font` を復活させました
|
552
|
+
+ AozoraEpub3の一文字濁点フォント機能を使った場合、端末でフォントを切り替えた
|
553
|
+
場合に濁点にならない問題があったため、切り替えた場合でも機能するNarou.rbの
|
554
|
+
濁点フォントを再び使えるようにしました
|
555
|
+
+ setting.ini で enable_dakuten_font = true とすることで有効になり、false の
|
556
|
+
場合は AozoraEPub3 の一文字濁点フォント機能を使用します。
|
557
|
+
(デフォルトでは false で、 AozoraEpub3 の機能を使います)
|
558
|
+
- 更新時に1作品ごとに待機時間が入るようになりました
|
559
|
+
+ `update.interval` で待機秒数を指定出来ます(ただし、最低2.5秒必要です)
|
560
|
+
+ 更新処理の時間も含まれるので、例えば更新処理に1秒かかった場合は待機時間は
|
561
|
+
1.5秒です。2.5秒以上更新や変換にかかった場合は待機時間は発生しません
|
615
562
|
|
616
563
|
#### 修正
|
617
|
-
-
|
618
|
-
|
619
|
-
- Windows において、WEB UI の「Narou.rbについて」ダイアログで最新バージョンの
|
620
|
-
確認に失敗する場合がある問題に対応しました
|
621
|
-
- WEB UI の小説リストの項目を入れ替えた後に各種ボタンが反応しなくなるのを修正
|
622
|
-
- 凍結済み小説を強制更新した際に凍結が解除されてしまう場合があったのを修正
|
623
|
-
- thin などがすでにインストール済みの場合に narou web コマンドで WEB UI サーバ
|
624
|
-
を起動できない場合があるので、必ず WEBrick で起動するようにしました
|
625
|
-
- ノクターン・ムーンライト・ミッドナイトノベルズの認証方法変更後、Nコードのみで
|
626
|
-
ダウンロードが出来なくなっていたのを修正
|
627
|
-
- Linux でダウンロード時にエラーが出る場合があったのを修正
|
628
|
-
- その他パフォーマンス等の調整
|
564
|
+
- i文庫に変換時にカクヨムのサブチャプターが反映されていなかったのを修正
|
565
|
+
- WEB UIのタグを編集ダイアログ内でタグをソートしていなかったのを修正
|
629
566
|
|
630
567
|
************************************************************
|
631
568
|
rdoc_options: []
|