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
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

View File

@@ -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

View File

@@ -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