lib/downloader.rb in narou-2.0.1 vs lib/downloader.rb in narou-2.0.2
- old
+ new
@@ -625,23 +625,23 @@
@title = @title.gsub(/#{@setting["title_strip_pattern"]}/, "").gsub(/^[ \s]*(.+?)[ \s]*?$/, "\\1")
end
@title
end
- class DownloaderHTTP404Error < OpenURI::HTTPError
+ class DownloaderNotFoundError < OpenURI::HTTPError
def initialize
super("404 not found", nil)
end
end
#
- # HTMLの中から小説が削除されたことを示すメッセージを検出する
+ # HTMLの中から小説が削除されたか非公開なことを示すメッセージを検出する
#
- def detect_404_message(source)
- message = @setting["404_message"]
+ def detect_error_message(source)
+ message = @setting["error_message"]
return false unless message
- source.include?(message)
+ source.match(message)
end
#
# 目次データを取得する
#
@@ -658,11 +658,11 @@
@setting.clear # 今まで使っていたのは一旦クリア
@setting = Downloader.get_sitesetting_by_target(toc_fp.base_uri.to_s)
toc_url = @setting["toc_url"]
end
toc_source = Helper.pretreatment_source(toc_fp.read, @setting["encoding"])
- raise DownloaderHTTP404Error if detect_404_message(toc_source)
+ raise DownloaderNotFoundError if detect_error_message(toc_source)
end
@setting.multi_match(toc_source, "tcode")
#if @setting["narou_api_url"]
if false
# なろうAPIの出力がおかしいので直るまで使用中止
@@ -697,11 +697,11 @@
"subtitles" => subtitles
}
toc_objects
rescue OpenURI::HTTPError => e
if e.message.include?("404")
- error "<bold><red>[404]</red></bold> 小説が削除されている可能性があります".termcolor
+ error "小説が削除されているか非公開な可能性があります"
if @@database.novel_exists?(@id)
$stdout.silence do
Command::Tag.execute!(%W(#{@id} --add 404 --color white))
end
Command::Freeze.execute!([@id])
@@ -855,10 +855,13 @@
save_least_one = false
subtitles.each_with_index do |subtitle_info, i|
index, subtitle, file_subtitle, chapter = %w(index subtitle file_subtitle chapter).map { |k|
subtitle_info[k]
}
+ info = subtitle_info.dup
+ info["element"] = a_section_download(subtitle_info)
+
unless chapter.empty?
puts "#{chapter}"
end
if get_novel_type == NOVEL_TYPE_SERIES
if index.to_s.length <= DISPLAY_LIMIT_DIGITS
@@ -867,11 +870,10 @@
end
else
print "短編 "
end
print "#{subtitle} (#{i+1}/#{max})"
- info = subtitle_info.dup
- info["element"] = a_section_download(subtitle_info)
+
section_file_name = "#{index} #{file_subtitle}.yaml"
section_file_relative_path = File.join(SECTION_SAVE_DIR_NAME, section_file_name)
if File.exist?(File.join(get_novel_data_dir, section_file_relative_path))
if @force
if different_section?(section_file_relative_path, info)