nijie: support preview urls (#3919).
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user