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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a9db6bb6175d97e8dc6be6b2f8724a51faab49f
4
- data.tar.gz: 6ad73e8e072e39ce29d2373edafade017ca57d9a
3
+ metadata.gz: a8773fbe953a40e96abb21e5b8c6fa965a5c77a9
4
+ data.tar.gz: 9784598559b9564df19eb2024237155904ede4ac
5
5
  SHA512:
6
- metadata.gz: 874d884edd6a29d903dc0e5118bbead2d58dd3ae4b00874125e42850064383bdbfa2fbd0b369f05fa78702ebe0f4cc9bf47b368b8931a469559fe2e9d37d23a3
7
- data.tar.gz: cd3c8356d575ff083b32fe0672ca8c0ab80c8badfc46d2e6b277b35f6b4bdde75e79fba81a80fa7620bf21d8cdd56eb6fa3aa127ad6fecb72f5d5daa98d8ca85
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/TrailingComma:
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
- + 小説家になろう(小説を読もう) http://syosetu.com/
14
+ + 小説家になろう http://syosetu.com/
22
15
  + ノクターンノベルズ http://noc.syosetu.com/
23
16
  + ムーンライトノベルズ http://mnlt.syosetu.com/
24
- + ハーメルン http://syosetu.org/
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.1 : 2016/03/30
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
- - inspect コマンドでエラーが出る場合があったのを修正
49
- - diff コマンドの引数を省略した時にエラーが出ていたのを修正
50
- - Internet Explorer で WEB UI が正常に動作しない不具合を修正
56
+ - i文庫に変換時にカクヨムのサブチャプターが反映されていなかったのを修正
57
+ - WEB UIのタグを編集ダイアログ内でタグをソートしていなかったのを修正
51
58
 
52
59
 
53
- 2.9.0 : 2016/03/28
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
- - httpsなサイトでダウンロード用のブックマークレットが動かない問題に対応しました
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
  ----
@@ -189,24 +189,25 @@ module Command
189
189
  end
190
190
 
191
191
  if File.file?(target.to_s)
192
- converted_txt_path = convert_txt(target)
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
- converted_txt_path =
200
- NovelConverter.convert(target, {
201
- output_filename: @output_filename,
202
- display_inspector: @options["inspect"],
203
- ignore_force: @options["ignore-force"],
204
- ignore_default: @options["ignore-default"],
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 converted_txt_path
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
 
@@ -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]")
@@ -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
@@ -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
- Device.eject(@device_module::VOLUME_NAME)
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
 
@@ -18,7 +18,7 @@ module Device::Library
18
18
  def eject(volume_name)
19
19
  status, stdio, stderr = systemu("diskutil eject #{volume_name}")
20
20
  unless status.success?
21
- raise DontConneting, stderr.strip
21
+ raise Device::CantEject, stderr.strip
22
22
  end
23
23
  end
24
24
  end
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 = "" # 長いので二度は表示しない
@@ -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 novel_converter.convert_main
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
- novel_converter.convert_main(text)
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 = nil, device = nil, verbose = false)
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(txt_path, options[:dst_dir], device, options[:verbose])
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
@@ -3,4 +3,4 @@
3
3
  # Copyright 2013 whiteleaf. All rights reserved.
4
4
  #
5
5
 
6
- Version = "2.9.2"
6
+ Version = "2.9.3"
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: %!<a href="#{escape_html(data["toc_url"])}" class="btn btn-default btn-xs" target="_blank" ! +
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) + '&nbsp;<span class="tag label label-white" data-tag="" data-toggle="tooltip" title="タグ検索を解除">&nbsp;</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
- $.each(taginfo, function(tagname, info) {
1281
- var label = $('<label><input type="checkbox" data-tagname="' + tagname.replace(/"/g, "&quot;") +
1280
+ _.each(taginfo, function(info) {
1281
+ var label = $('<label><input type="checkbox" data-tagname="' + info.tag.replace(/"/g, "&quot;") +
1282
1282
  '" data-default-checkstate=' + calcState(info.count) + '> ' + info.html + '&nbsp;&nbsp;</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", orderable: false,
183
- searchable: false, visible: cell_visible.toc_url },
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.1 : 2016/03/30
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
- - メニュー(歯車アイコン)に「サーバを再起動」を追加しました。WEB UIから直接WEB
53
- UIサーバを再起動できるようになります
54
- - 「Narou.rbについて」ダイアログで最新バージョンを確認できた場合に、その場で
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
- - 変換処理で body や introduction 等を処理して最後に subtitle を変換していた
98
- のを先に subtitle を処理するように変更しました
99
- - converter.rb でサブタイトルで本文の処理内容を調整したい場合に今までの処理順
100
- では不可能だったため
101
- - title_date_format $s が古い作品だと5桁になってしまうのを4桁に収まるように
102
- 調整しました(小説家になろうの最も古い作品が4桁に収まるようにしました)
103
- - `あ゛` のような記述を濁点フォントに置き換える処理を廃止し、AozoraEpub3 による
104
- 一文字フォント置き換え機能に任せるようにしました
105
- + `narou init` が必要です
106
- + この変更に伴い、setting.ini の enable_dakuten_font は廃止されました
107
- + Kindle 端末において、挿絵が表紙画像になってしまう問題がこの仕様変更で改善
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
- - httpsなサイトでダウンロード用のブックマークレットが動かない問題に対応しました
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
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
- [#3字下げ][#中見出し]<%= section["subtitle"].rstrip %>[#中見出し終わり]
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字下げ]
@@ -31,7 +31,10 @@
31
31
  [#1字下げ][#1段階大きな文字]<%= section["subchapter"].rstrip %>[#大きな文字終わり]
32
32
  <% end -%>
33
33
 
34
- [#3字下げ][#中見出し]<%= section["subtitle"].rstrip %>[#中見出し終わり]
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.2
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-04-07 00:00:00.000000000 Z
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.1 : 2016/03/30
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
- - メニュー(歯車アイコン)に「サーバを再起動」を追加しました。WEB UIから直接WEB
559
- UIサーバを再起動できるようになります
560
- - 「Narou.rbについて」ダイアログで最新バージョンを確認できた場合に、その場で
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
- - 変換処理で body や introduction 等を処理して最後に subtitle を変換していた
604
- のを先に subtitle を処理するように変更しました
605
- - converter.rb でサブタイトルで本文の処理内容を調整したい場合に今までの処理順
606
- では不可能だったため
607
- - title_date_format $s が古い作品だと5桁になってしまうのを4桁に収まるように
608
- 調整しました(小説家になろうの最も古い作品が4桁に収まるようにしました)
609
- - `あ゛` のような記述を濁点フォントに置き換える処理を廃止し、AozoraEpub3 による
610
- 一文字フォント置き換え機能に任せるようにしました
611
- + `narou init` が必要です
612
- + この変更に伴い、setting.ini の enable_dakuten_font は廃止されました
613
- + Kindle 端末において、挿絵が表紙画像になってしまう問題がこの仕様変更で改善
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
- - httpsなサイトでダウンロード用のブックマークレットが動かない問題に対応しました
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: []