@@ -180,23 +180,37 @@ module Sources
|
|||||||
end
|
end
|
||||||
|
|
||||||
def page
|
def page
|
||||||
return nil if page_url.blank?
|
return nil if page_url.blank? || client.blank?
|
||||||
|
|
||||||
http = Danbooru::Http.new
|
response = client.cache(1.minute).get(page_url)
|
||||||
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)
|
|
||||||
return nil unless response.status == 200
|
return nil unless response.status == 200
|
||||||
|
|
||||||
response&.parse
|
response&.parse
|
||||||
end
|
end
|
||||||
|
|
||||||
memoize :page
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -292,6 +292,18 @@ module Sources
|
|||||||
end
|
end
|
||||||
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
|
context "normalizing for source" do
|
||||||
should "normalize correctly" do
|
should "normalize correctly" do
|
||||||
source1 = "https://pic01.nijie.info/nijie_picture/diff/main/218856_0_236014_20170620101329.png"
|
source1 = "https://pic01.nijie.info/nijie_picture/diff/main/218856_0_236014_20170620101329.png"
|
||||||
|
|||||||
Reference in New Issue
Block a user