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)