nijie: support preview urls (#3919).

This commit is contained in:
evazion
2018-09-24 17:08:37 -05:00
parent 99babe19f3
commit d9063a9f2a
3 changed files with 66 additions and 10 deletions

View File

@@ -62,15 +62,26 @@ module Sources
end end
def image_url def image_url
return normalize_thumbnails(url) if url =~ IMAGE_URL return to_full_image_url(url) if url.match?(IMAGE_URL)
image_urls.first image_urls.first
end end
def image_urls def image_urls
images = page&.search("div#gallery a > img") || [] images = page&.search("div#gallery a > img").to_a.map do |img|
images.map do |img| "https:#{img["src"]}"
normalize_thumbnails("https:" + img.attr("src")) end
end.uniq
images = [url] if url.match?(IMAGE_URL) && images.empty?
images.map(&method(:to_full_image_url)).uniq
end
def preview_url
return nil if image_url.blank?
to_preview_url(image_url)
end
def preview_urls
image_urls.map(&method(:to_preview_url))
end end
def page_url def page_url
@@ -116,8 +127,12 @@ module Sources
DText.from_html(text).strip DText.from_html(text).strip
end end
def normalize_thumbnails(x) def to_full_image_url(x)
x.gsub(%r!__rs_\w+/!i, "") x.gsub(%r!__rs_\w+/!i, "").gsub(/\Ahttp:/, "https:")
end
def to_preview_url(url)
url.gsub(/nijie_picture/, "__rs_l170x170/nijie_picture").gsub(/\Ahttp:/, "https:")
end end
def illust_id def illust_id

View File

@@ -19,7 +19,22 @@ module DownloadTestHelper
assert_rewritten(source, source, referer) assert_rewritten(source, source, referer)
end end
def assert_http_exists(url, headers: {})
res = HTTParty.head(url, Danbooru.config.httparty_options.deep_merge(headers: headers))
assert_equal(true, res.success?)
end
def assert_http_status(code, url, headers: {})
res = HTTParty.head(url, Danbooru.config.httparty_options.deep_merge(headers: headers))
assert_equal(code, res.code)
end
def assert_http_size(size, url, headers: {})
res = HTTParty.head(url, Danbooru.config.httparty_options.deep_merge(headers: headers))
assert_equal(size, res.content_length)
end
def check_ffmpeg def check_ffmpeg
File.which("ffmpeg") && File.which("mkvmerge") File.which("ffmpeg") && File.which("mkvmerge")
end end
end end

View File

@@ -43,12 +43,19 @@ module Sources
should "get the image url" do should "get the image url" do
assert_equal("https://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url) assert_equal("https://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url)
assert_http_size(132_555, @site.image_url)
end end
should "get the canonical url" do should "get the canonical url" do
assert_equal("https://nijie.info/view.php?id=213043", @site.canonical_url) assert_equal("https://nijie.info/view.php?id=213043", @site.canonical_url)
end end
should "get the preview url" do
assert_equal("https://pic03.nijie.info/__rs_l170x170/nijie_picture/728995_20170505014820_0.jpg", @site.preview_url)
assert_equal([@site.preview_url], @site.preview_urls)
assert_http_exists(@site.preview_url)
end
should "get the profile" do should "get the profile" do
assert_equal("https://nijie.info/members.php?id=728995", @site.profile_url) assert_equal("https://nijie.info/members.php?id=728995", @site.profile_url)
end end
@@ -86,7 +93,12 @@ module Sources
end end
should "get the image url" do should "get the image url" do
assert_equal("http://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url) assert_equal("https://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url)
end
should "get the preview urls" do
assert_equal("https://pic03.nijie.info/__rs_l170x170/nijie_picture/728995_20170505014820_0.jpg", @site.preview_url)
assert_equal([@site.preview_url], @site.preview_urls)
end end
should "get the canonical url" do should "get the canonical url" do
@@ -111,6 +123,11 @@ module Sources
assert_equal("https://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url) assert_equal("https://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url)
end end
should "get the preview urls" do
assert_equal("https://pic03.nijie.info/__rs_l170x170/nijie_picture/728995_20170505014820_0.jpg", @site.preview_url)
assert_equal([@site.preview_url], @site.preview_urls)
end
should "get the canonical url" do should "get the canonical url" do
assert_equal("https://nijie.info/view.php?id=213043", @site.canonical_url) assert_equal("https://nijie.info/view.php?id=213043", @site.canonical_url)
end end
@@ -163,6 +180,9 @@ module Sources
assert_equal(image_url, site.canonical_url) assert_equal(image_url, site.canonical_url)
assert_equal("https://nijie.info/members.php?id=236014", site.profile_url) assert_equal("https://nijie.info/members.php?id=236014", site.profile_url)
assert_nothing_raised { site.to_h } assert_nothing_raised { site.to_h }
assert_http_size(3619, site.image_url)
assert_http_exists(site.preview_url)
end end
end end
@@ -176,6 +196,7 @@ module Sources
assert_equal("名無しのチンポップ", site.artist_name) assert_equal("名無しのチンポップ", site.artist_name)
assert_equal(site.url, site.image_url) assert_equal(site.url, site.image_url)
assert_equal(6, site.image_urls.size) assert_equal(6, site.image_urls.size)
assert_equal(6, site.preview_urls.size)
end end
end end
@@ -197,10 +218,13 @@ module Sources
context "A deleted work" do context "A deleted work" do
context "for an image url" do context "for an image url" do
should "find the profile url" do should "find the profile url" do
site = Sources::Strategies.find("http://pic01.nijie.info/nijie_picture/diff/main/196201_20150201033106_0.jpg") site = Sources::Strategies.find("https://pic01.nijie.info/nijie_picture/diff/main/196201_20150201033106_0.jpg")
assert_nothing_raised { site.to_h } assert_nothing_raised { site.to_h }
assert_equal("https://nijie.info/members.php?id=196201", site.profile_url) assert_equal("https://nijie.info/members.php?id=196201", site.profile_url)
assert_equal(site.url, site.image_url)
assert_equal([site.url], site.image_urls)
assert_equal(1, site.preview_urls.size)
end end
end end
@@ -214,7 +238,9 @@ module Sources
assert_nil(site.artist_commentary_desc) assert_nil(site.artist_commentary_desc)
assert_nil(site.artist_commentary_title) assert_nil(site.artist_commentary_title)
assert_nil(site.image_url) assert_nil(site.image_url)
assert_nil(site.preview_url)
assert_empty(site.image_urls) assert_empty(site.image_urls)
assert_empty(site.preview_urls)
assert_empty(site.tags) assert_empty(site.tags)
assert_nothing_raised { site.to_h } assert_nothing_raised { site.to_h }
end end