diff --git a/app/logical/sources/strategies/nijie.rb b/app/logical/sources/strategies/nijie.rb index 4490ecfad..3b680131c 100644 --- a/app/logical/sources/strategies/nijie.rb +++ b/app/logical/sources/strategies/nijie.rb @@ -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 diff --git a/test/test_helpers/download_test_helper.rb b/test/test_helpers/download_test_helper.rb index 172f8d101..620685256 100644 --- a/test/test_helpers/download_test_helper.rb +++ b/test/test_helpers/download_test_helper.rb @@ -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 \ No newline at end of file +end diff --git a/test/unit/sources/nijie_test.rb b/test/unit/sources/nijie_test.rb index be8bef47e..f3a7e60ce 100644 --- a/test/unit/sources/nijie_test.rb +++ b/test/unit/sources/nijie_test.rb @@ -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