narou 1.5.9 → 1.5.10
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of narou might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/ChangeLog.md +27 -0
- data/README.md +27 -25
- data/lib/command/download.rb +51 -4
- data/lib/command/init.rb +2 -1
- data/lib/command/remove.rb +1 -1
- data/lib/command/update.rb +7 -3
- data/lib/downloader.rb +15 -4
- data/lib/loadconverter.rb +2 -1
- data/lib/novelsetting.rb +1 -1
- data/lib/template.rb +1 -0
- data/lib/version.rb +1 -1
- data/narou.gemspec +24 -15
- data/narou.rb +7 -9
- data/preset/ncode.syosetu.com/n1839bd/converter.rb +1 -1
- data/preset/ncode.syosetu.com/n2267be/converter.rb +1 -1
- data/preset/ncode.syosetu.com/n2525bs/converter.rb +1 -1
- data/preset/ncode.syosetu.com/n3730bn/converter.rb +33 -0
- data/preset/ncode.syosetu.com/n4259s/converter.rb +2 -2
- data/preset/ncode.syosetu.com/n8725k/converter.rb +11 -5
- data/preset/ncode.syosetu.com/n9078bd/converter.rb +26 -0
- data/preset/ncode.syosetu.com/n9669bk/converter.rb +1 -1
- data/preset/ncode.syosetu.com/n9902bn/converter.rb +40 -0
- data/template/converter.rb.erb +8 -0
- metadata +29 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 56c210419a1a3849a1c1edcbd5bdd2855876881a
|
4
|
+
data.tar.gz: 4ca45ce21cee4e08427bdb0608bc69751af31e56
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c7a5152dc84108658c058af34512356430024e7fab23f6e83731f64b42eba4f2564385695af29182a623599f780f2df8e6132ce5848e7bc676d35b3cb785fc75
|
7
|
+
data.tar.gz: bb770317a3b6a0f1ef789cf1baa88ab93e430e9ea8480f6ad859bc512e49b0fca3b38a1465292a68b91c461c740c0b66c5cf5ca927662d180d38001925b89a00
|
data/ChangeLog.md
CHANGED
@@ -1,6 +1,33 @@
|
|
1
1
|
|
2
2
|
更新履歴 - ChangeLog
|
3
3
|
--------------------
|
4
|
+
2014/07/14 : **1.5.10**
|
5
|
+
* 追加機能もしくは仕様変更
|
6
|
+
- `download` コマンドに対話モードを追加しました
|
7
|
+
+ `narou d` と対象小説を指定せずに実行すると対話モードに移行します(-f 等のオプションは指定出来ます)
|
8
|
+
+ 連続してNコードもしくはURLを入力できるモードです。ArcadiaのURLは " " で囲む必要がありません
|
9
|
+
+ 想定される使い方:
|
10
|
+
* 複数のURLを書いたテキストをコピペして流しこむ
|
11
|
+
* テキストファイルからリダイレクトで入力する
|
12
|
+
- `narou d < list.txt`
|
13
|
+
* BATファイル等で `narou d` のみを実行し、新規DL時の入力を簡便にする
|
14
|
+
- 自動生成される converter.rb に簡単な説明を付け加えるようにしました
|
15
|
+
- `remove` コマンドの `--with-file` オプションに短縮版 `-w` を追加しました
|
16
|
+
- `narou init` 実行時に現在の AozoraEpub3 の場所を表示するようになりました
|
17
|
+
- `update` コマンドに新着小説のみを変換するオプション `--convert-only-new-arrival` (短縮 `-a` )が
|
18
|
+
追加されました(naoh87さんによる実装)
|
19
|
+
+ もしこのオプションをデフォルトの挙動にしたければ、 `narou s default_args.update=-a` として下さい
|
20
|
+
- 変換用のプリセットデータを追加
|
21
|
+
+ デスマーチからはじまる異世界狂想曲(n9902bn)
|
22
|
+
+ この世界がゲームだと俺だけが知っている(n9078bd)
|
23
|
+
+ まのわ ~魔物倒す・能力奪う・私強くなる~(n3730bn)
|
24
|
+
- すでに同梱されているプリセットデータを一部更新
|
25
|
+
+ 異世界迷宮で奴隷ハーレムを(n4259s)
|
26
|
+
+ ログ・ホライズン(n8725k)
|
27
|
+
* Bug Fix
|
28
|
+
- replace.txt で置換対象を削除するという表現(あいう<tab><改行>)が出来なかったのを修正
|
29
|
+
- `--time` オプションで表示される実行時間がより正確になるように調整しました
|
30
|
+
|
4
31
|
2014/07/04 : **1.5.9**
|
5
32
|
* Bug Fix
|
6
33
|
- 作者名が半角数字だけの場合にクラッシュする問題を修正
|
data/README.md
CHANGED
@@ -23,6 +23,33 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
23
23
|
|
24
24
|
更新履歴 - ChangeLog
|
25
25
|
--------------------
|
26
|
+
2014/07/14 : **1.5.10**
|
27
|
+
* 追加機能もしくは仕様変更
|
28
|
+
- `download` コマンドに対話モードを追加しました
|
29
|
+
+ `narou d` と対象小説を指定せずに実行すると対話モードに移行します(-f 等のオプションは指定出来ます)
|
30
|
+
+ 連続してNコードもしくはURLを入力できるモードです。ArcadiaのURLは " " で囲む必要がありません
|
31
|
+
+ 想定される使い方:
|
32
|
+
* 複数のURLを書いたテキストをコピペして流しこむ
|
33
|
+
* テキストファイルからリダイレクトで入力する
|
34
|
+
- `narou d < list.txt`
|
35
|
+
* BATファイル等で `narou d` のみを実行し、新規DL時の入力を簡便にする
|
36
|
+
- 自動生成される converter.rb に簡単な説明を付け加えるようにしました
|
37
|
+
- `remove` コマンドの `--with-file` オプションに短縮版 `-w` を追加しました
|
38
|
+
- `narou init` 実行時に現在の AozoraEpub3 の場所を表示するようになりました
|
39
|
+
- `update` コマンドに新着小説のみを変換するオプション `--convert-only-new-arrival` (短縮 `-a` )が
|
40
|
+
追加されました(naoh87さんによる実装)
|
41
|
+
+ もしこのオプションをデフォルトの挙動にしたければ、 `narou s default_args.update=-a` として下さい
|
42
|
+
- 変換用のプリセットデータを追加
|
43
|
+
+ デスマーチからはじまる異世界狂想曲(n9902bn)
|
44
|
+
+ この世界がゲームだと俺だけが知っている(n9078bd)
|
45
|
+
+ まのわ ~魔物倒す・能力奪う・私強くなる~(n3730bn)
|
46
|
+
- すでに同梱されているプリセットデータを一部更新
|
47
|
+
+ 異世界迷宮で奴隷ハーレムを(n4259s)
|
48
|
+
+ ログ・ホライズン(n8725k)
|
49
|
+
* Bug Fix
|
50
|
+
- replace.txt で置換対象を削除するという表現(あいう<tab><改行>)が出来なかったのを修正
|
51
|
+
- `--time` オプションで表示される実行時間がより正確になるように調整しました
|
52
|
+
|
26
53
|
2014/07/04 : **1.5.9**
|
27
54
|
* Bug Fix
|
28
55
|
- 作者名が半角数字だけの場合にクラッシュする問題を修正
|
@@ -51,31 +78,6 @@ Narou.rb ― 「小説家になろう」「小説を読もう!」ダウンロ
|
|
51
78
|
* Bug Fix
|
52
79
|
- ' (') のエンティティ変換を追加
|
53
80
|
|
54
|
-
2014/06/06 : **1.5.6.1**
|
55
|
-
* 追加機能もしくは仕様変更
|
56
|
-
- タイトルにつく更新日の日付を新着があった日付に変更
|
57
|
-
* Bug Fix
|
58
|
-
- 初期化時に `narou init` を実行できない問題を修正
|
59
|
-
|
60
|
-
2014/06/04 : **1.5.6**
|
61
|
-
* 追加機能もしくは仕様変更
|
62
|
-
- 小説のタイトルに更新日をつける機能を追加しました
|
63
|
-
+ `narou s force.enable_add_date_to_title=true` として有効にして下さい(標準ではオフ)
|
64
|
-
+ 書式は `title_date_format` 、位置は `title_date_align` で自由に変更出来ます
|
65
|
-
* title_date_format: 付与する日付のフォーマット。書式は http://bit.ly/1m5e3w7 を参照
|
66
|
-
* title_date_align: 付与する日付の位置。left か right
|
67
|
-
* `narou s force.title_date_format="(%-m/%-d)"`
|
68
|
-
* `narou s force.title_date_align=left`
|
69
|
-
- `flag` コマンドを追加しました
|
70
|
-
+ `narou flag end 10` と指定出来ます
|
71
|
-
+ 現在は end(完結フラグ)のみ指定できます。`list` コマンド及び、小説タイトルに (完結) と表示されるようになります
|
72
|
-
(小説タイトルについては次の変換から反映)
|
73
|
-
- 小説の管理フォルダ(narou initしたところ)に `device` フォルダをつくることで、 `send` コマンド用の設定ファイルを
|
74
|
-
独自に用意出来るようになりました
|
75
|
-
+ 設定ファイルは https://github.com/whiteleaf7/narou/tree/master/lib/device を参考に作成して下さい
|
76
|
-
* Bug Fix
|
77
|
-
- !?の一文字表記(0x2049)等でゴミが出てしまう問題を修正
|
78
|
-
|
79
81
|
----
|
80
82
|
|
81
83
|
「小説家になろう」は株式会社ヒナプロジェクトの登録商標です
|
data/lib/command/download.rb
CHANGED
@@ -8,15 +8,19 @@ require_relative "../downloader"
|
|
8
8
|
|
9
9
|
module Command
|
10
10
|
class Download < CommandBase
|
11
|
+
SUPPORT_NOVEL_SITES = %w(小説家になろう(小説を読もう) Arcadia ハーメルン 暁)
|
12
|
+
|
11
13
|
def initialize
|
12
|
-
super("<target>
|
14
|
+
super("[<target> <target2> ...] [options]")
|
13
15
|
@opt.separator <<-EOS
|
14
16
|
|
15
17
|
・ダウンロードしたい小説のNコードもしくはURLを指定して下さい。
|
18
|
+
・対応サイトは#{SUPPORT_NOVEL_SITES.join("、")}です。
|
16
19
|
・一度に複数の小説を指定する場合は空白で区切って下さい。
|
17
20
|
・ダウンロード終了後に変換処理を行います。ダウンロードのみする場合は-nオプションを指定して下さい。
|
18
21
|
・すでにダウンロード済みの小説の場合は何もしません。
|
19
22
|
・--remove オプションをつけてダウンロードすると、ダウンロード(とその後の変換、送信)が終わったあと削除します。データベースのインデックスを外すだけなので、変換した書籍データは残ったままになります。ファイルを全て消す場合は手動で削除する必要があります。
|
23
|
+
・NコードもURLも指定しなかった場合、対話モード移行します。
|
20
24
|
|
21
25
|
Example:
|
22
26
|
narou download n9669bk
|
@@ -42,11 +46,54 @@ module Command
|
|
42
46
|
}
|
43
47
|
end
|
44
48
|
|
49
|
+
def valid_target?(target)
|
50
|
+
@site_settings ||= Downloader.load_settings
|
51
|
+
case Downloader.get_target_type(target)
|
52
|
+
when :ncode
|
53
|
+
true
|
54
|
+
when :url
|
55
|
+
!!@site_settings.find { |s| s.multi_match(target, "url") }
|
56
|
+
else
|
57
|
+
false
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
def print_prompt(targets)
|
62
|
+
print "#{targets.count}> "
|
63
|
+
end
|
64
|
+
|
65
|
+
def interactive_mode
|
66
|
+
targets = []
|
67
|
+
puts "【対話モード】"
|
68
|
+
puts "ダウンロードしたい小説のNコードもしくはURLを入力して下さい。(1行に1つ)"
|
69
|
+
puts "連続して複数の小説を入力していきます。"
|
70
|
+
puts "対応サイトは#{SUPPORT_NOVEL_SITES.join("、")}です。"
|
71
|
+
puts "入力を終了してダウンロードを開始するには未入力のままエンターを押して下さい。"
|
72
|
+
puts
|
73
|
+
print_prompt(targets)
|
74
|
+
while input = $stdin.gets
|
75
|
+
input.strip!
|
76
|
+
break if input == ""
|
77
|
+
if valid_target?(input)
|
78
|
+
if targets.include?(input)
|
79
|
+
error "入力済みです"
|
80
|
+
else
|
81
|
+
targets << input
|
82
|
+
end
|
83
|
+
else
|
84
|
+
error "対応外の小説です"
|
85
|
+
end
|
86
|
+
print_prompt(targets)
|
87
|
+
end
|
88
|
+
targets
|
89
|
+
end
|
90
|
+
|
45
91
|
def execute(argv)
|
46
92
|
super
|
47
93
|
if argv.empty?
|
48
|
-
|
49
|
-
return
|
94
|
+
targets = interactive_mode
|
95
|
+
return if targets.count == 0
|
96
|
+
argv += targets
|
50
97
|
end
|
51
98
|
argv.each.with_index(1) do |target, i|
|
52
99
|
download_target ||= target
|
@@ -69,7 +116,7 @@ module Command
|
|
69
116
|
end
|
70
117
|
next
|
71
118
|
end
|
72
|
-
if Downloader.start(download_target, @options["force"], true) != :ok
|
119
|
+
if Downloader.start(download_target, @options["force"], true).status != :ok
|
73
120
|
next
|
74
121
|
end
|
75
122
|
unless @options["no-convert"]
|
data/lib/command/init.rb
CHANGED
@@ -114,7 +114,8 @@ module Command
|
|
114
114
|
puts
|
115
115
|
print "<bold><green>AozoraEpub3のあるフォルダを入力して下さい:</green></bold>\n(未入力でスキップ".termcolor
|
116
116
|
if @global_setting["aozoraepub3dir"]
|
117
|
-
|
117
|
+
puts "、:keep で現在と同じ場所を指定)"
|
118
|
+
print "(現在の場所:#{@global_setting["aozoraepub3dir"]}"
|
118
119
|
end
|
119
120
|
print ")\n>"
|
120
121
|
while input = $stdin.gets.rstrip.gsub(/"/, "")
|
data/lib/command/remove.rb
CHANGED
@@ -32,7 +32,7 @@ module Command
|
|
32
32
|
@opt.on("-y", "--yes", "削除確認メッセージを表示しない") {
|
33
33
|
@options["yes"] = true
|
34
34
|
}
|
35
|
-
@opt.on("--with-file", "小説の保存フォルダ・ファイルも全て削除する") {
|
35
|
+
@opt.on("-w", "--with-file", "小説の保存フォルダ・ファイルも全て削除する") {
|
36
36
|
@options["with-file"] = true
|
37
37
|
}
|
38
38
|
@opt.on("--all-ss", "短編小説をすべて削除する") {
|
data/lib/command/update.rb
CHANGED
@@ -30,6 +30,9 @@ module Command
|
|
30
30
|
@opt.on("-n", "--no-convert", "変換をせずアップデートのみ実行する") {
|
31
31
|
@options["no-convert"] = true
|
32
32
|
}
|
33
|
+
@opt.on("-a", "--convert-only-new-arrival", "新着のみ変換を実行する") {
|
34
|
+
@options["convert-only-new-arrival"] = true
|
35
|
+
}
|
33
36
|
end
|
34
37
|
|
35
38
|
def execute(argv)
|
@@ -59,10 +62,11 @@ module Command
|
|
59
62
|
puts display_message
|
60
63
|
next
|
61
64
|
end
|
62
|
-
|
63
|
-
case
|
65
|
+
result = Downloader.start(target)
|
66
|
+
case result.status
|
64
67
|
when :ok
|
65
|
-
unless @options["no-convert"]
|
68
|
+
unless @options["no-convert"] or
|
69
|
+
(@options["convert-only-new-arrival"] and not result.new_arrivals)
|
66
70
|
convert_argv = [target]
|
67
71
|
convert_argv << "--no-open" if no_open
|
68
72
|
Convert.execute!(convert_argv)
|
data/lib/downloader.rb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
require "yaml"
|
7
7
|
require "fileutils"
|
8
|
+
require "ostruct"
|
8
9
|
require_relative "narou"
|
9
10
|
require_relative "sitesetting"
|
10
11
|
require_relative "template"
|
@@ -303,13 +304,23 @@ class Downloader
|
|
303
304
|
end
|
304
305
|
end
|
305
306
|
|
307
|
+
|
306
308
|
#
|
307
|
-
#
|
308
|
-
#
|
309
|
-
# 返り値:ダウンロードしたものが1話でもあったかどうか(Boolean)
|
310
|
-
# nil なら何らかの原因でダウンロード自体出来なかった
|
309
|
+
# ダウンロードを処理本体を起動
|
311
310
|
#
|
312
311
|
def start_download
|
312
|
+
@status = run_download
|
313
|
+
OpenStruct.new(
|
314
|
+
:id => @id,
|
315
|
+
:new_arrivals => @new_arrivals,
|
316
|
+
:status => @status
|
317
|
+
).freeze
|
318
|
+
end
|
319
|
+
|
320
|
+
#
|
321
|
+
# ダウンロード処理本体
|
322
|
+
#
|
323
|
+
def run_download
|
313
324
|
latest_toc = get_latest_table_of_contents
|
314
325
|
unless latest_toc
|
315
326
|
error @setting["toc_url"] + " の目次データが取得出来ませんでした"
|
data/lib/loadconverter.rb
CHANGED
@@ -78,8 +78,9 @@ def load_converter(title, archive_path)
|
|
78
78
|
if conv
|
79
79
|
return conv
|
80
80
|
else
|
81
|
+
title_for_converter = (title =~ /.txt\z/ ? title : File.basename(archive_path))
|
81
82
|
error "converter.rbは見つかりましたが、`converter'で登録されていないようです。" +
|
82
|
-
"変換処理は converter \"#{
|
83
|
+
"変換処理は converter \"#{title_for_converter.gsub('"', '\\"')}\" として登録する必要があります"
|
83
84
|
return BlankConverter
|
84
85
|
end
|
85
86
|
end
|
data/lib/novelsetting.rb
CHANGED
@@ -96,7 +96,7 @@ class NovelSetting
|
|
96
96
|
if File.exists?(replace_txt_path)
|
97
97
|
open(replace_txt_path, "r:BOM|UTF-8") do |fp|
|
98
98
|
fp.each do |line|
|
99
|
-
line.
|
99
|
+
line.sub(/\n\z/, "")
|
100
100
|
next if line[0] == ";" # コメント記号
|
101
101
|
pattern = line.split("\t", 2)
|
102
102
|
if pattern.length == 2 && pattern[0]
|
data/lib/template.rb
CHANGED
data/lib/version.rb
CHANGED
data/narou.gemspec
CHANGED
@@ -46,23 +46,32 @@ narou コマンドのインストール or アップデートが完了しまし
|
|
46
46
|
初めてこのアプリケーションを使う場合、小説管理用のフォルダを初期化する必要があります。
|
47
47
|
任意のフォルダで `narou init' を実行して下さい。
|
48
48
|
|
49
|
-
|
49
|
+
2014/07/14 : **1.5.10**
|
50
50
|
* 追加機能もしくは仕様変更
|
51
|
-
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
51
|
+
- `download` コマンドに対話モードを追加しました
|
52
|
+
+ `narou d` と対象小説を指定せずに実行すると対話モードに移行します(-f 等のオプションは指定出来ます)
|
53
|
+
+ 連続してNコードもしくはURLを入力できるモードです。ArcadiaのURLは " " で囲む必要がありません
|
54
|
+
+ 想定される使い方:
|
55
|
+
* 複数のURLを書いたテキストをコピペして流しこむ
|
56
|
+
* テキストファイルからリダイレクトで入力する
|
57
|
+
- `narou d < list.txt`
|
58
|
+
* BATファイル等で `narou d` のみを実行し、新規DL時の入力を簡便にする
|
59
|
+
- 自動生成される converter.rb に簡単な説明を付け加えるようにしました
|
60
|
+
- `remove` コマンドの `--with-file` オプションに短縮版 `-w` を追加しました
|
61
|
+
- `narou init` 実行時に現在の AozoraEpub3 の場所を表示するようになりました
|
62
|
+
- `update` コマンドに新着小説のみを変換するオプション `--convert-only-new-arrival` (短縮 `-a` )が
|
63
|
+
追加されました(naoh87さんによる実装)
|
64
|
+
+ もしこのオプションをデフォルトの挙動にしたければ、 `narou s default_args.update=-a` として下さい
|
65
|
+
- 変換用のプリセットデータを追加
|
66
|
+
+ デスマーチからはじまる異世界狂想曲(n9902bn)
|
67
|
+
+ この世界がゲームだと俺だけが知っている(n9078bd)
|
68
|
+
+ まのわ ~魔物倒す・能力奪う・私強くなる~(n3730bn)
|
69
|
+
- すでに同梱されているプリセットデータを一部更新
|
70
|
+
+ 異世界迷宮で奴隷ハーレムを(n4259s)
|
71
|
+
+ ログ・ホライズン(n8725k)
|
64
72
|
* Bug Fix
|
65
|
-
-
|
73
|
+
- replace.txt で置換対象を削除するという表現(あいう<tab><改行>)が出来なかったのを修正
|
74
|
+
- `--time` オプションで表示される実行時間がより正確になるように調整しました
|
66
75
|
|
67
76
|
#{"*" * 79}
|
68
77
|
EOS
|
data/narou.rb
CHANGED
@@ -9,9 +9,14 @@
|
|
9
9
|
$debug = File.exists?(File.join(File.expand_path(File.dirname($0)), "debug"))
|
10
10
|
Encoding.default_external = Encoding::UTF_8
|
11
11
|
|
12
|
-
|
12
|
+
if ARGV.delete("--time")
|
13
|
+
now = Time.now
|
14
|
+
at_exit do
|
15
|
+
puts "実行時間 #{Time.now - now}秒"
|
16
|
+
end
|
17
|
+
end
|
13
18
|
|
14
|
-
|
19
|
+
require_relative "lib/globalsetting"
|
15
20
|
display_backtrace = ARGV.delete("--backtrace")
|
16
21
|
display_backtrace ||= $debug
|
17
22
|
$disable_color = ARGV.delete("--no-color")
|
@@ -23,13 +28,6 @@ require_relative "lib/commandline"
|
|
23
28
|
|
24
29
|
rescue_level = $debug ? Exception : StandardError
|
25
30
|
|
26
|
-
if display_time
|
27
|
-
now = Time.now
|
28
|
-
at_exit do
|
29
|
-
puts "実行時間 #{Time.now - now}秒"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
31
|
begin
|
34
32
|
CommandLine.run(ARGV.map { |v| v.dup })
|
35
33
|
rescue rescue_level => e
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# 対象小説情報
|
5
|
+
# タイトル: まのわ ~魔物倒す・能力奪う・私強くなる~
|
6
|
+
# 作者: 紫炎
|
7
|
+
# URL: http://ncode.syosetu.com/n3730bn/
|
8
|
+
#
|
9
|
+
converter "n3730bn まのわ ~魔物倒す・能力奪う・私強くなる~" do
|
10
|
+
def before(io, text_type)
|
11
|
+
if text_type != "postscript"
|
12
|
+
super
|
13
|
+
end
|
14
|
+
io
|
15
|
+
end
|
16
|
+
|
17
|
+
def after(io, text_type)
|
18
|
+
buffer = StringIO.new
|
19
|
+
io.each do |line|
|
20
|
+
if line =~ /^◎/
|
21
|
+
buffer.puts "[#ゴシック体]#{line.rstrip}[#ゴシック体終わり]"
|
22
|
+
buffer.puts
|
23
|
+
else
|
24
|
+
buffer.puts line
|
25
|
+
end
|
26
|
+
end
|
27
|
+
if text_type == "postscript"
|
28
|
+
buffer.string.tr!("#{ConverterBase::KANJI_NUM}", "0-9")
|
29
|
+
buffer.string.gsub!("2分アキ", "二分アキ")
|
30
|
+
end
|
31
|
+
buffer
|
32
|
+
end
|
33
|
+
end
|
@@ -6,7 +6,7 @@
|
|
6
6
|
# 作者: 蘇我捨恥
|
7
7
|
# URL: http://ncode.syosetu.com/n4259s/
|
8
8
|
#
|
9
|
-
converter "異世界迷宮で奴隷ハーレムを" do
|
9
|
+
converter "n4259s 異世界迷宮で奴隷ハーレムを" do
|
10
10
|
def before(io, text_type)
|
11
11
|
data = io.read
|
12
12
|
data.gsub!("\n\n", "\n")
|
@@ -14,7 +14,7 @@ converter "異世界迷宮で奴隷ハーレムを" do
|
|
14
14
|
end
|
15
15
|
|
16
16
|
def level_convert!(line)
|
17
|
-
line.gsub!(
|
17
|
+
line.gsub!(/Lv/, "Lv[#「Lv」は縦中横]")
|
18
18
|
line.gsub!(/Lv([0-90-9]+)/, "Lv[#「Lv」は縦中横]\\1[#「\\1」は縦中横]")
|
19
19
|
end
|
20
20
|
|
@@ -6,17 +6,23 @@
|
|
6
6
|
# 作者: 橙乃ままれ
|
7
7
|
# URL: http://ncode.syosetu.com/n8725k/
|
8
8
|
#
|
9
|
-
converter "ログ・ホライズン" do
|
9
|
+
converter "n8725k ログ・ホライズン" do
|
10
10
|
def before(io, element_type)
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
14
|
-
def after(io,
|
14
|
+
def after(io, element_type)
|
15
15
|
data = io.string
|
16
|
-
if
|
17
|
-
data
|
18
|
-
|
16
|
+
if element_type == "body"
|
17
|
+
if data =~ /[||]([^《]+)《(、+)》/
|
18
|
+
if $1.length == $2.length
|
19
|
+
data.gsub!(/[||]([^《]+)《(、+)》/) do |match|
|
20
|
+
"[#傍点]" + $1 + "[#傍点終わり]"
|
21
|
+
end
|
22
|
+
end
|
19
23
|
end
|
24
|
+
data.gsub!("ルビ:", "")
|
25
|
+
data.gsub!("ロエ二", "ロエ2")
|
20
26
|
end
|
21
27
|
io
|
22
28
|
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# 対象小説情報
|
5
|
+
# タイトル: この世界がゲームだと俺だけが知っている
|
6
|
+
# 作者: ウスバー
|
7
|
+
# URL: http://ncode.syosetu.com/n9078bd/
|
8
|
+
#
|
9
|
+
converter "n9078bd この世界がゲームだと俺だけが知っている" do
|
10
|
+
def before(io, text_type)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def after(io, text_type)
|
15
|
+
io.string.gsub!("+ ※[#縦線]L","[#ここから横書き]+ ※[#縦線]L[#ここで横書き終わり]")
|
16
|
+
io.string.gsub!("+ ±","[#ここから横書き]+ ±[#ここで横書き終わり]")
|
17
|
+
io.string.gsub!("+ -","[#ここから横書き]+ -[#ここで横書き終わり]")
|
18
|
+
io.string.gsub!(" -"," [#ここから横書き]-[#ここで横書き終わり]")
|
19
|
+
io.string.gsub!("『-』","『[#ここから横書き]-[#ここで横書き終わり]』")
|
20
|
+
io.string.gsub!("Ξ","[#ここから横書き]≡[#ここで横書き終わり]")
|
21
|
+
io.string.gsub!("+L","[#ここから横書き]+L[#ここで横書き終わり]")
|
22
|
+
io.string.gsub!("※[#縦線]L","[#ここから横書き]※[#縦線]L[#ここで横書き終わり]")
|
23
|
+
io.string.gsub!(" ="," [#ここから横書き]=[#ここで横書き終わり]")
|
24
|
+
io
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
#
|
4
|
+
# 対象小説情報
|
5
|
+
# タイトル: デスマーチからはじまる異世界狂想曲
|
6
|
+
# 作者: 愛七ひろ
|
7
|
+
# URL: http://ncode.syosetu.com/n9902bn/
|
8
|
+
#
|
9
|
+
converter "n9902bn デスマーチからはじまる異世界狂想曲" do
|
10
|
+
def before(io, text_type)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def announce_line?(line)
|
15
|
+
line =~ /^〉/
|
16
|
+
end
|
17
|
+
|
18
|
+
def after(io, text_type)
|
19
|
+
buffer = StringIO.new
|
20
|
+
just_before_line_is_announce = false
|
21
|
+
io.each do |line|
|
22
|
+
if announce_line?(line)
|
23
|
+
unless just_before_line_is_announce
|
24
|
+
if line.strip != ""
|
25
|
+
buffer.puts
|
26
|
+
end
|
27
|
+
end
|
28
|
+
just_before_line_is_announce = true
|
29
|
+
buffer.puts "[#ゴシック体][#太字]#{line.rstrip}[#太字終わり][#ゴシック体終わり]"
|
30
|
+
else
|
31
|
+
if just_before_line_is_announce
|
32
|
+
buffer.puts
|
33
|
+
end
|
34
|
+
just_before_line_is_announce = false
|
35
|
+
buffer.puts line
|
36
|
+
end
|
37
|
+
end
|
38
|
+
buffer
|
39
|
+
end
|
40
|
+
end
|
data/template/converter.rb.erb
CHANGED
@@ -7,12 +7,20 @@
|
|
7
7
|
# 作者: <%= @setting["author"] %>
|
8
8
|
# URL: <%= @setting["toc_url"] %>
|
9
9
|
#
|
10
|
+
# 詳細については http://bit.ly/1vTEH04 を参照して下さい
|
11
|
+
#
|
10
12
|
converter "<%= file_title.gsub('"', '\"') %>" do
|
13
|
+
# 各種変換処理がされる「前」の生データに対しての変換処理を記述
|
11
14
|
def before(io, text_type)
|
12
15
|
super
|
16
|
+
# io.string.gsub!("こんばんわ", "こんばんは")
|
17
|
+
io
|
13
18
|
end
|
14
19
|
|
20
|
+
# 各種変換処理がされた「後」のデータに対しての変換処理を記述
|
15
21
|
def after(io, text_type)
|
16
22
|
super
|
23
|
+
# io.string.gsub!("百%", "100%")
|
24
|
+
io
|
17
25
|
end
|
18
26
|
end
|
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: 1.5.
|
4
|
+
version: 1.5.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- whiteleaf7
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-07-
|
11
|
+
date: 2014-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: termcolor
|
@@ -150,11 +150,14 @@ files:
|
|
150
150
|
- preset/ncode.syosetu.com/n2267be/converter.rb
|
151
151
|
- preset/ncode.syosetu.com/n2525bs/converter.rb
|
152
152
|
- preset/ncode.syosetu.com/n2525bs/setting.ini
|
153
|
+
- preset/ncode.syosetu.com/n3730bn/converter.rb
|
153
154
|
- preset/ncode.syosetu.com/n4259s/converter.rb
|
154
155
|
- preset/ncode.syosetu.com/n4259s/setting.ini
|
155
156
|
- preset/ncode.syosetu.com/n8725k/converter.rb
|
157
|
+
- preset/ncode.syosetu.com/n9078bd/converter.rb
|
156
158
|
- preset/ncode.syosetu.com/n9669bk/converter.rb
|
157
159
|
- preset/ncode.syosetu.com/n9669bk/setting.ini
|
160
|
+
- preset/ncode.syosetu.com/n9902bn/converter.rb
|
158
161
|
- preset/vertical_font.css
|
159
162
|
- spec/data/html_test.html
|
160
163
|
- spec/data/html_test.txt
|
@@ -191,23 +194,32 @@ post_install_message: |
|
|
191
194
|
初めてこのアプリケーションを使う場合、小説管理用のフォルダを初期化する必要があります。
|
192
195
|
任意のフォルダで `narou init' を実行して下さい。
|
193
196
|
|
194
|
-
|
197
|
+
2014/07/14 : **1.5.10**
|
195
198
|
* 追加機能もしくは仕様変更
|
196
|
-
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
199
|
+
- `download` コマンドに対話モードを追加しました
|
200
|
+
+ `narou d` と対象小説を指定せずに実行すると対話モードに移行します(-f 等のオプションは指定出来ます)
|
201
|
+
+ 連続してNコードもしくはURLを入力できるモードです。ArcadiaのURLは " " で囲む必要がありません
|
202
|
+
+ 想定される使い方:
|
203
|
+
* 複数のURLを書いたテキストをコピペして流しこむ
|
204
|
+
* テキストファイルからリダイレクトで入力する
|
205
|
+
- `narou d < list.txt`
|
206
|
+
* BATファイル等で `narou d` のみを実行し、新規DL時の入力を簡便にする
|
207
|
+
- 自動生成される converter.rb に簡単な説明を付け加えるようにしました
|
208
|
+
- `remove` コマンドの `--with-file` オプションに短縮版 `-w` を追加しました
|
209
|
+
- `narou init` 実行時に現在の AozoraEpub3 の場所を表示するようになりました
|
210
|
+
- `update` コマンドに新着小説のみを変換するオプション `--convert-only-new-arrival` (短縮 `-a` )が
|
211
|
+
追加されました(naoh87さんによる実装)
|
212
|
+
+ もしこのオプションをデフォルトの挙動にしたければ、 `narou s default_args.update=-a` として下さい
|
213
|
+
- 変換用のプリセットデータを追加
|
214
|
+
+ デスマーチからはじまる異世界狂想曲(n9902bn)
|
215
|
+
+ この世界がゲームだと俺だけが知っている(n9078bd)
|
216
|
+
+ まのわ ~魔物倒す・能力奪う・私強くなる~(n3730bn)
|
217
|
+
- すでに同梱されているプリセットデータを一部更新
|
218
|
+
+ 異世界迷宮で奴隷ハーレムを(n4259s)
|
219
|
+
+ ログ・ホライズン(n8725k)
|
209
220
|
* Bug Fix
|
210
|
-
-
|
221
|
+
- replace.txt で置換対象を削除するという表現(あいう<tab><改行>)が出来なかったのを修正
|
222
|
+
- `--time` オプションで表示される実行時間がより正確になるように調整しました
|
211
223
|
|
212
224
|
*******************************************************************************
|
213
225
|
rdoc_options: []
|