29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
|
# File 'lib/novelinfo.rb', line 29
def parse_novel_info
info_url = @setting["novel_info_url"] or return nil
result = @@novel_info_parameters[@setting["name"]][@ncode] ||= {}
need_reload = false
unless result.empty?
if Time.now < result["last_load_time"] + REFRESH_INTERVAL
return result
end
need_reload = true
end
request_output_parameters = @of.split("-")
info_source = ""
if @setting["novel_info_url"] == @setting["toc_url"] && @toc_source && !need_reload
info_source = @toc_source
else
cookie = @setting["cookie"] || ""
open_uri_options = make_open_uri_options("Cookie" => cookie, allow_redirections: :safe)
URI.open(info_url, open_uri_options) do |fp|
info_source = Helper.restore_entity(Helper.pretreatment_source(fp.read, @setting["encoding"]))
raise Downloader::DownloaderNotFoundError if Downloader.detect_error_message(@setting, info_source)
end
end
@setting.multi_match(info_source, *request_output_parameters)
result["last_load_time"] = Time.now
result["title"] = @setting["title"]
novel_status = @setting["novel_type_string"][@setting["novel_type"]] || 1
result["end"] = novel_status == 3
result["novel_type"] = case novel_status
when 1, 3
1
when 2
ga = @setting["general_all_no"]
ga && ga > "1" ? 1 : 2
end
story_html = HTML.new(@setting["story"])
story_html.strip_decoration_tag = true
result["story"] = story_html.to_aozora
result["writer"] = @setting["writer"]
result["length"] = Helper.numeric_length(@setting["length"])
%w(general_firstup novelupdated_at general_lastup).each do |elm|
result[elm] = Helper.date_string_to_time(@setting[elm])
end
result["sitename"] = @setting["sitename"]
result
end
|