nijie: support preview urls (#3919).
This commit is contained in:
@@ -62,15 +62,26 @@ module Sources
|
||||
end
|
||||
|
||||
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
|
||||
end
|
||||
|
||||
def image_urls
|
||||
images = page&.search("div#gallery a > img") || []
|
||||
images.map do |img|
|
||||
normalize_thumbnails("https:" + img.attr("src"))
|
||||
end.uniq
|
||||
images = page&.search("div#gallery a > img").to_a.map do |img|
|
||||
"https:#{img["src"]}"
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
def page_url
|
||||
@@ -116,8 +127,12 @@ module Sources
|
||||
DText.from_html(text).strip
|
||||
end
|
||||
|
||||
def normalize_thumbnails(x)
|
||||
x.gsub(%r!__rs_\w+/!i, "")
|
||||
def to_full_image_url(x)
|
||||
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
|
||||
|
||||
def illust_id
|
||||
|
||||
@@ -19,7 +19,22 @@ module DownloadTestHelper
|
||||
assert_rewritten(source, source, referer)
|
||||
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
|
||||
File.which("ffmpeg") && File.which("mkvmerge")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,12 +43,19 @@ module Sources
|
||||
|
||||
should "get the image url" do
|
||||
assert_equal("https://pic03.nijie.info/nijie_picture/728995_20170505014820_0.jpg", @site.image_url)
|
||||
assert_http_size(132_555, @site.image_url)
|
||||
end
|
||||
|
||||
should "get the canonical url" do
|
||||
assert_equal("https://nijie.info/view.php?id=213043", @site.canonical_url)
|
||||
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
|
||||
assert_equal("https://nijie.info/members.php?id=728995", @site.profile_url)
|
||||
end
|
||||
@@ -86,7 +93,12 @@ module Sources
|
||||
end
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
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
|
||||
assert_equal("https://nijie.info/view.php?id=213043", @site.canonical_url)
|
||||
end
|
||||
@@ -163,6 +180,9 @@ module Sources
|
||||
assert_equal(image_url, site.canonical_url)
|
||||
assert_equal("https://nijie.info/members.php?id=236014", site.profile_url)
|
||||
assert_nothing_raised { site.to_h }
|
||||
|
||||
assert_http_size(3619, site.image_url)
|
||||
assert_http_exists(site.preview_url)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -176,6 +196,7 @@ module Sources
|
||||
assert_equal("名無しのチンポップ", site.artist_name)
|
||||
assert_equal(site.url, site.image_url)
|
||||
assert_equal(6, site.image_urls.size)
|
||||
assert_equal(6, site.preview_urls.size)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -197,10 +218,13 @@ module Sources
|
||||
context "A deleted work" do
|
||||
context "for an image 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_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
|
||||
|
||||
@@ -214,7 +238,9 @@ module Sources
|
||||
assert_nil(site.artist_commentary_desc)
|
||||
assert_nil(site.artist_commentary_title)
|
||||
assert_nil(site.image_url)
|
||||
assert_nil(site.preview_url)
|
||||
assert_empty(site.image_urls)
|
||||
assert_empty(site.preview_urls)
|
||||
assert_empty(site.tags)
|
||||
assert_nothing_raised { site.to_h }
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user