lib/downloader.rb in narou-3.1.9 vs lib/downloader.rb in narou-3.1.10

- old
+ new

@@ -66,11 +66,11 @@ # def self.get_sitesetting_by_target(target) toc_url = get_toc_url(target) setting = nil if toc_url - setting = @@settings.find { |s| s.multi_match(toc_url, "url") } + setting = @@settings.find { |s| s.multi_match_once(toc_url, "url") } end setting end # @@ -101,23 +101,11 @@ # # 指定されたIDとかから小説の保存ディレクトリを取得 # def self.get_novel_data_dir_by_target(target) - target = Narou.alias_to_id(target) - type = get_target_type(target) - data = nil - case type - when :url, :ncode - toc_url = get_toc_url(target) - data = @@database.get_data("toc_url", toc_url) - when :other - data = @@database.get_data("title", target) - when :id - data = @@database[target.to_i] - end - return nil unless data + data = get_data_by_target(target) or return nil id = data["id"] file_title = data["file_title"] || data["title"] # 互換性維持のための処理 use_subdirectory = data["use_subdirectory"] || false subdirectory = use_subdirectory ? create_subdirecotry_name(file_title) : "" path = File.join(Database.archive_root_path, data["sitename"], subdirectory, file_title) @@ -134,20 +122,38 @@ # # target のIDを取得 # def self.get_id_by_target(target) - toc_url = get_toc_url(target) or return nil - @@database.get_id("toc_url", toc_url) + data = get_data_by_target(target) + data && data["id"] end # # target からデータベースのデータを取得 # def self.get_data_by_target(target) - toc_url = get_toc_url(target) or return nil - @@database.get_data("toc_url", toc_url) + target = Narou.alias_to_id(target) + case get_target_type(target) + when :url + setting = @@settings.find { |s| s.multi_match_once(target, "url") } + if setting + toc_url = setting["toc_url"] + return @@database.get_data_by_toc_url(toc_url, setting) + end + when :ncode + @@database.each_value do |data| + return data if data["toc_url"] =~ %r!#{target}/$! + end + when :id + data = @@database[target.to_i] + return data if data + when :other + data = @@database.get_data("title", target) + return data if data + end + nil end # # toc 読込 # @@ -162,14 +168,14 @@ # def self.get_toc_url(target) target = Narou.alias_to_id(target) case get_target_type(target) when :url - setting = @@settings.find { |s| s.multi_match(target, "url") } + setting = @@settings.find { |s| s.multi_match_once(target, "url") } return setting["toc_url"] if setting when :ncode - @@database.each do |_, data| + @@database.each_value do |data| if data["toc_url"] =~ %r!#{target}/$! return data["toc_url"] end end return "#{@@narou["top_url"]}/#{target}/" @@ -220,10 +226,10 @@ settings = @@__settings_cache ||= [] return settings unless settings.empty? load_paths = [ File.join(Narou.get_script_dir, NOVEL_SITE_SETTING_DIR, "*.yaml"), File.join(Narou.get_root_dir, NOVEL_SITE_SETTING_DIR, "*.yaml") - ].join("\0") + ].uniq.join("\0") Dir.glob(load_paths) do |path| setting = SiteSetting.load_file(path) if setting["name"] == "小説家になろう" @@narou = setting end