@@ -180,23 +180,37 @@ module Sources
|
||||
end
|
||||
|
||||
def page
|
||||
return nil if page_url.blank?
|
||||
return nil if page_url.blank? || client.blank?
|
||||
|
||||
http = Danbooru::Http.new
|
||||
form = { email: Danbooru.config.nijie_login, password: Danbooru.config.nijie_password }
|
||||
|
||||
# XXX `retriable` must come after `cache` so that retries don't return cached error responses.
|
||||
response = http.cache(1.hour).use(retriable: { max_retries: 20 }).post("https://nijie.info/login_int.php", form: form)
|
||||
DanbooruLogger.info "Nijie login failed (#{url}, #{response.status})" if response.status != 200
|
||||
return nil unless response.status == 200
|
||||
|
||||
response = http.cookies(R18: 1).cache(1.minute).get(page_url)
|
||||
response = client.cache(1.minute).get(page_url)
|
||||
return nil unless response.status == 200
|
||||
|
||||
response&.parse
|
||||
end
|
||||
|
||||
memoize :page
|
||||
|
||||
def client
|
||||
http = Danbooru::Http.new.timeout(60)
|
||||
|
||||
cookie = Cache.get("nijie-session-cookie", 1.week) do
|
||||
login_page = http.use(retriable: { max_retries: 20 }).get("https://nijie.info/login.php").parse
|
||||
form = {
|
||||
email: Danbooru.config.nijie_login,
|
||||
password: Danbooru.config.nijie_password,
|
||||
url: login_page.at("input[name='url']")["value"],
|
||||
save: "on",
|
||||
ticket: ""
|
||||
}
|
||||
response = http.use(retriable: { max_retries: 20 }).post("https://nijie.info/login_int.php", form: form)
|
||||
DanbooruLogger.info "Nijie login failed (#{url}, #{response.status})" if response.status != 200
|
||||
return nil unless response.status == 200
|
||||
|
||||
response.cookies.select { |c| c.name == "NIJIEIJIEID" }.compact.first
|
||||
end
|
||||
|
||||
http.cookies(NIJIEIJIEID: cookie, R18: 1)
|
||||
end
|
||||
memoize :client
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -292,6 +292,18 @@ module Sources
|
||||
end
|
||||
end
|
||||
|
||||
context "a post requiring login" do
|
||||
should "not fail" do
|
||||
site = Sources::Strategies.find("https://nijie.info/view.php?id=203688")
|
||||
|
||||
urls = %w[
|
||||
https://pic.nijie.net/01/nijie_picture/676327_20170216212803_0.jpg
|
||||
https://pic.nijie.net/04/nijie_picture/diff/main/676327_20170216212806_0.jpg
|
||||
]
|
||||
assert_equal(urls, site.image_urls)
|
||||
end
|
||||
end
|
||||
|
||||
context "normalizing for source" do
|
||||
should "normalize correctly" do
|
||||
source1 = "https://pic01.nijie.info/nijie_picture/diff/main/218856_0_236014_20170620101329.png"
|
||||
|
||||
Reference in New Issue
Block a user