diff --git a/app/logical/post_replacement_processor.rb b/app/logical/post_replacement_processor.rb index 01f4cdfa2..efba651f9 100644 --- a/app/logical/post_replacement_processor.rb +++ b/app/logical/post_replacement_processor.rb @@ -67,6 +67,9 @@ class PostReplacementProcessor strategy = Sources::Strategies.find(source_url, referer_url) raise NotImplementedError, "No login credentials configured for #{strategy.site_name}." unless strategy.class.enabled? - strategy.download_file! + image_urls = strategy.image_urls + raise "#{source_url} contains multiple images" if image_urls.size > 1 + + strategy.download_file!(image_urls.first) end end diff --git a/app/logical/sources/strategies/base.rb b/app/logical/sources/strategies/base.rb index 66e34bc53..06d580ca1 100644 --- a/app/logical/sources/strategies/base.rb +++ b/app/logical/sources/strategies/base.rb @@ -129,10 +129,6 @@ module Sources [] end - def image_url - image_urls.first - end - # A smaller representation of the image that's suitable for # displaying previews. def preview_urls @@ -154,7 +150,7 @@ module Sources # This will be the url stored in posts. Typically this is the page # url, but on some sites it may be preferable to store the image url. def canonical_url - page_url || image_url + page_url || image_urls.first end # A name to suggest as the artist's tag name when creating a new artist. @@ -194,8 +190,11 @@ module Sources nil end - # Download the file at the given url, or at the main image url by default. - def download_file!(download_url = image_url) + # Download the file at the given url. Raises Danbooru::Http::DownloadError if the download fails, or + # Danbooru::Http::FileTooLargeError if the file is too large. + # + # @return [MediaFile] the downloaded file + def download_file!(download_url) response, file = http_downloader.download_media(download_url) file end @@ -310,7 +309,6 @@ module Sources :profile_urls => profile_urls }, :artists => artists.as_json(include: :sorted_urls), - :image_url => image_url, :image_urls => image_urls, :preview_url => preview_url, :preview_urls => preview_urls, diff --git a/app/logical/sources/strategies/hentai_foundry.rb b/app/logical/sources/strategies/hentai_foundry.rb index a078d7a18..528eca106 100644 --- a/app/logical/sources/strategies/hentai_foundry.rb +++ b/app/logical/sources/strategies/hentai_foundry.rb @@ -58,7 +58,7 @@ module Sources end def canonical_url - image_url + image_urls.first end def profile_url diff --git a/app/logical/sources/strategies/mastodon.rb b/app/logical/sources/strategies/mastodon.rb index ad3dad30c..6325d605b 100644 --- a/app/logical/sources/strategies/mastodon.rb +++ b/app/logical/sources/strategies/mastodon.rb @@ -18,10 +18,6 @@ module Sources::Strategies end end - def image_url - image_urls.first - end - def image_urls if parsed_url.image_url? [parsed_url.full_image_url] diff --git a/app/logical/sources/strategies/moebooru.rb b/app/logical/sources/strategies/moebooru.rb index eb6c50ae2..063f3fd44 100644 --- a/app/logical/sources/strategies/moebooru.rb +++ b/app/logical/sources/strategies/moebooru.rb @@ -27,7 +27,7 @@ module Sources end def canonical_url - image_url + image_urls.first end def normalize_for_source diff --git a/app/logical/sources/strategies/null.rb b/app/logical/sources/strategies/null.rb index fd53912f0..64ff636df 100644 --- a/app/logical/sources/strategies/null.rb +++ b/app/logical/sources/strategies/null.rb @@ -12,7 +12,7 @@ module Sources end def canonical_url - image_url + url end def normalize_for_source diff --git a/app/logical/sources/strategies/pixiv.rb b/app/logical/sources/strategies/pixiv.rb index 33bfe90e2..628e31a94 100644 --- a/app/logical/sources/strategies/pixiv.rb +++ b/app/logical/sources/strategies/pixiv.rb @@ -62,7 +62,7 @@ module Sources end def canonical_url - image_url + image_urls.first end def profile_url @@ -122,7 +122,7 @@ module Sources tag.gsub(/\d+users入り\z/i, "") end - def download_file!(url = image_url) + def download_file!(url) file = super(url) file.frame_data = ugoira_frame_data if is_ugoira? file diff --git a/test/test_helpers/download_test_helper.rb b/test/test_helpers/download_test_helper.rb index 68e14abc6..6297bbabb 100644 --- a/test/test_helpers/download_test_helper.rb +++ b/test/test_helpers/download_test_helper.rb @@ -1,13 +1,13 @@ module DownloadTestHelper def assert_downloaded(expected_filesize, source, referer = nil) strategy = Sources::Strategies.find(source, referer) - file = strategy.download_file! + file = strategy.download_file!(strategy.image_urls.sole) assert_equal(expected_filesize, file.size, "Tested source URL: #{source}") end def assert_rewritten(expected_source, test_source, test_referer = nil) strategy = Sources::Strategies.find(test_source, test_referer) - rewritten_source = strategy.image_url + rewritten_source = strategy.image_urls.sole assert_match(expected_source, rewritten_source, "Tested source URL: #{test_source}") end diff --git a/test/unit/downloads/pixiv_test.rb b/test/unit/downloads/pixiv_test.rb index 42074dd6a..f24261a14 100644 --- a/test/unit/downloads/pixiv_test.rb +++ b/test/unit/downloads/pixiv_test.rb @@ -131,7 +131,7 @@ module Downloads context "An ugoira site for pixiv" do should "capture the data" do @strategy = Sources::Strategies.find("http://www.pixiv.net/member_illust.php?mode=medium&illust_id=62247364") - media_file = @strategy.download_file! + media_file = @strategy.download_file!(@strategy.image_urls.sole) assert_equal(2, media_file.frame_data.size) assert_equal([{"file" => "000000.jpg", "delay" => 125}, {"file" => "000001.jpg", "delay" => 125}], media_file.frame_data) diff --git a/test/unit/sources/art_station_test.rb b/test/unit/sources/art_station_test.rb index 1966362fe..fd14d5de9 100644 --- a/test/unit/sources/art_station_test.rb +++ b/test/unit/sources/art_station_test.rb @@ -8,7 +8,7 @@ module Sources end should "get the image url" do - assert_equal("https://cdn.artstation.com/p/assets/images/images/000/705/368/4k/jey-rain-one1.jpg", @site.image_url.sub(/\?\d+/, "")) + assert_equal(["https://cdn.artstation.com/p/assets/images/images/000/705/368/4k/jey-rain-one1.jpg?1443931773"], @site.image_urls) end should "get the preview url" do @@ -44,7 +44,7 @@ module Sources should "get the image url" do url = "https://cdn.artstation.com/p/assets/images/images/006/066/534/4k/yinan-cui-reika.jpg?1495781565" - assert_equal(url, @site.image_url) + assert_equal([url], @site.image_urls) end should "get the preview url" do @@ -82,7 +82,7 @@ module Sources should "get the image url" do url = "https://cdn.artstation.com/p/assets/images/images/000/144/922/4k/cassio-yoshiyaki-cody2backup2-yoshiyaki.jpg?1406314198" - assert_equal(url, @site.image_url) + assert_equal([url], @site.image_urls) end should "get the preview url" do @@ -106,7 +106,7 @@ module Sources should "work" do site = Sources::Strategies.find(@url, @ref) - assert_equal("https://cdn.artstation.com/p/assets/images/images/006/029/978/4k/amama-l-z.jpg", site.image_url) + assert_equal(["https://cdn.artstation.com/p/assets/images/images/006/029/978/4k/amama-l-z.jpg"], site.image_urls) assert_equal("https://amama.artstation.com/projects/4BWW2", site.page_url) assert_equal("https://amama.artstation.com/projects/4BWW2", site.canonical_url) assert_equal("https://www.artstation.com/amama", site.profile_url) @@ -119,7 +119,7 @@ module Sources should "work" do site = Sources::Strategies.find(@url) - assert_equal("https://cdn.artstation.com/p/assets/images/images/006/029/978/4k/amama-l-z.jpg", site.image_url) + assert_equal(["https://cdn.artstation.com/p/assets/images/images/006/029/978/4k/amama-l-z.jpg"], site.image_urls) assert_nil(site.page_url) assert_nil(site.profile_url) assert_nil(site.artist_name) @@ -134,7 +134,7 @@ module Sources should "work" do site = Sources::Strategies.find("https://cdna.artstation.com/p/assets/images/images/007/253/680/4k/ina-wong-demon-girl-done-ttd-comp.jpg?1504793833") - assert_equal("https://cdn.artstation.com/p/assets/images/images/007/253/680/4k/ina-wong-demon-girl-done-ttd-comp.jpg?1504793833", site.image_url) + assert_equal(["https://cdn.artstation.com/p/assets/images/images/007/253/680/4k/ina-wong-demon-girl-done-ttd-comp.jpg?1504793833"], site.image_urls) assert_nothing_raised { site.to_h } end end @@ -145,7 +145,7 @@ module Sources url = "https://cdna.artstation.com/p/assets/covers/images/007/262/828/large/monica-kyrie-1.jpg?1504865060" site = Sources::Strategies.find(url) - assert_equal("https://cdn.artstation.com/p/assets/covers/images/007/262/828/original/monica-kyrie-1.jpg?1504865060", site.image_url) + assert_equal(["https://cdn.artstation.com/p/assets/covers/images/007/262/828/original/monica-kyrie-1.jpg?1504865060"], site.image_urls) assert_equal("https://cdn.artstation.com/p/assets/covers/images/007/262/828/small/monica-kyrie-1.jpg?1504865060", site.preview_url) end end @@ -170,7 +170,7 @@ module Sources assert_equal("https://www.artstation.com/fiship", site.profile_url) assert_equal(url, site.page_url) assert_equal(url, site.canonical_url) - assert_nil(site.image_url) + assert_equal([], site.image_urls) assert_nothing_raised { site.to_h } end end diff --git a/test/unit/sources/deviant_art_test.rb b/test/unit/sources/deviant_art_test.rb index 1f8c8ad9c..538c4ea19 100644 --- a/test/unit/sources/deviant_art_test.rb +++ b/test/unit/sources/deviant_art_test.rb @@ -14,13 +14,12 @@ module Sources should "work" do # http://origin-orig.deviantart.net/d533/f/2014/004/8/d/holiday_elincia_by_aeror404-d70rm0s.jpg (md5: a7651a6586b95c62fd593dd34bb13618, size: 877987) - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/11a24395-0f24-446d-ae73-a9f812e79e55/d70rm0s-e5b6b5e6-5795-44bb-a0ba-27b5c2349be7\.jpg}, @site.image_url) - assert_downloaded(877_987, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/11a24395-0f24-446d-ae73-a9f812e79e55/d70rm0s-e5b6b5e6-5795-44bb-a0ba-27b5c2349be7\.jpg}, @site.image_urls.sole) + assert_downloaded(877_987, @site.image_urls.sole) assert_equal("aeror404", @site.artist_name) assert_equal("https://www.deviantart.com/aeror404", @site.profile_url) assert_equal("https://www.deviantart.com/aeror404/art/Holiday-Elincia-424551484", @site.page_url) - assert_equal("https://www.deviantart.com/aeror404/art/Holiday-Elincia-424551484", @site.page_url_from_image_url) assert_equal("https://www.deviantart.com/aeror404/art/Holiday-Elincia-424551484", @site.canonical_url) assert_equal("Holiday Elincia", @site.artist_commentary_title) end @@ -31,11 +30,11 @@ module Sources @site = Sources::Strategies.find("https://pre00.deviantart.net/423b/th/pre/i/2017/281/e/0/mindflayer_girl01_by_nickbeja-dbpxdt8.png") @artist = create(:artist, name: "nickbeja", url_string: "https://nickbeja.deviantart.com") - assert_equal("https://pre00.deviantart.net/423b/th/pre/i/2017/281/e/0/mindflayer_girl01_by_nickbeja-dbpxdt8.png", @site.image_url) + assert_equal(["https://pre00.deviantart.net/423b/th/pre/i/2017/281/e/0/mindflayer_girl01_by_nickbeja-dbpxdt8.png"], @site.image_urls) assert_equal(@site.page_url, @site.canonical_url) assert_equal("nickbeja", @site.artist_name) assert_equal("https://www.deviantart.com/nickbeja", @site.profile_url) - assert_equal("https://www.deviantart.com/nickbeja/art/Mindflayer-Girl01-708675884", @site.page_url_from_image_url) + assert_equal("https://www.deviantart.com/nickbeja/art/Mindflayer-Girl01-708675884", @site.page_url) assert_equal([@artist], @site.artists) assert_nothing_raised { @site.to_h } end @@ -47,14 +46,13 @@ module Sources # https://img00.deviantart.net/56ee/i/2017/219/2/3/test__no_download_by_noizave-dbj81lr.jpg (md5: 25a03b5a6744b6b914a13b3cd50e3c2c, size: 37638) # orig file: https://danbooru.donmai.us/posts/463438 (md5: eb97244675e47dbd77ffcd2d7e15aeab, size: 59401) - assert_match("https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/intermediary/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbj81lr-3306feb1-87dc-4d25-9a4c-da8d2973a8b7.jpg", @site.image_url) - assert_downloaded(40_036, @site.image_url) + assert_match("https://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/intermediary/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbj81lr-3306feb1-87dc-4d25-9a4c-da8d2973a8b7.jpg", @site.image_urls.sole) + assert_downloaded(40_036, @site.image_urls.sole) assert_equal("noizave", @site.artist_name) assert_equal("https://www.deviantart.com/noizave", @site.profile_url) assert_equal("test, no download", @site.artist_commentary_title) assert_equal("https://www.deviantart.com/noizave/art/test-no-download-697415967", @site.page_url) - assert_equal("https://www.deviantart.com/noizave/art/Test-No-Download-697415967", @site.page_url_from_image_url) assert_equal("https://www.deviantart.com/noizave/art/test-no-download-697415967", @site.canonical_url) end end @@ -64,8 +62,8 @@ module Sources @site = Sources::Strategies.find("https://www.deviantart.com/len1/art/All-that-Glitters-II-774592781") # http://origin-orig.deviantart.net/a713/f/2018/333/3/6/all_that_glitters_ii_by_len1-dct67m5.jpg (md5: d16bb8620600334caa029ebb9bc426a6, size: 1402017) - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/a6289ca5-2205-4118-af55-c6934fba0930/dct67m5-51e8db38-9167-4f5c-931d-561ea4d3810d\.jpg}, @site.image_url) - assert_downloaded(1402017, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/a6289ca5-2205-4118-af55-c6934fba0930/dct67m5-51e8db38-9167-4f5c-931d-561ea4d3810d\.jpg}, @site.image_urls.sole) + assert_downloaded(1402017, @site.image_urls.sole) assert_equal("len1", @site.artist_name) assert_equal("https://www.deviantart.com/len1", @site.profile_url) @@ -80,13 +78,12 @@ module Sources @site = Sources::Strategies.find("https://pre00.deviantart.net/b5e6/th/pre/f/2016/265/3/5/legend_of_galactic_heroes_by_hideyoshi-daihpha.jpg") # http://origin-orig.deviantart.net/9e1f/f/2016/265/3/5/legend_of_galactic_heroes_by_hideyoshi-daihpha.jpg (md5: 4cfec3d50ebbb924077cc5c90e705d4e, size: 906621) - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/b1f96af6-56a3-47a8-b7f4-406f243af3a3/daihpha-9f1fcd2e-7557-4db5-951b-9aedca9a3ae7\.jpg}, @site.image_url) - assert_downloaded(906_621, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/b1f96af6-56a3-47a8-b7f4-406f243af3a3/daihpha-9f1fcd2e-7557-4db5-951b-9aedca9a3ae7\.jpg}, @site.image_urls.sole) + assert_downloaded(906_621, @site.image_urls.sole) assert_equal("hideyoshi", @site.artist_name) assert_equal("https://www.deviantart.com/hideyoshi", @site.profile_url) assert_equal("https://www.deviantart.com/hideyoshi/art/Legend-of-Galactic-Heroes-635721022", @site.page_url) - assert_equal("https://www.deviantart.com/hideyoshi/art/Legend-Of-Galactic-Heroes-635721022", @site.page_url_from_image_url) assert_equal("https://www.deviantart.com/hideyoshi/art/Legend-of-Galactic-Heroes-635721022", @site.canonical_url) assert_equal(%w[barbarossa bay brunhild flare hangar odin planet ship spaceship sun sunset brünhild legendsofgalacticheroes].sort, @site.tags.map(&:first).sort) end @@ -97,11 +94,10 @@ module Sources @site = Sources::Strategies.find("http://origin-orig.deviantart.net/7b5b/f/2017/160/c/5/test_post_please_ignore_by_noizave-dbc3a48.png") # md5: 9dec050536dbdb09ab63cb9c5a48f8b7 - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3a48-10b9e2e8-b176-4820-ab9e-23449c11e7c9\.png}, @site.image_url) - assert_downloaded(3619, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3a48-10b9e2e8-b176-4820-ab9e-23449c11e7c9\.png}, @site.image_urls.sole) + assert_downloaded(3619, @site.image_urls.sole) assert_equal("https://www.deviantart.com/noizave/art/test-post-please-ignore-685436408", @site.page_url) - assert_equal("https://www.deviantart.com/noizave/art/Test-Post-Please-Ignore-685436408", @site.page_url_from_image_url) assert_equal("https://www.deviantart.com/noizave/art/test-post-please-ignore-685436408", @site.canonical_url) assert_equal("noizave", @site.artist_name) @@ -115,10 +111,10 @@ module Sources should "return the full size image url" do @site = Sources::Strategies.find("https://img00.deviantart.net/a233/i/2017/160/5/1/test_post_please_ignore_by_noizave-dbc3a48.png") - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3a48-10b9e2e8-b176-4820-ab9e-23449c11e7c9\.png}, @site.image_url) - assert_downloaded(3619, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3a48-10b9e2e8-b176-4820-ab9e-23449c11e7c9\.png}, @site.image_urls.sole) + assert_downloaded(3619, @site.image_urls.sole) - assert_equal("https://www.deviantart.com/noizave/art/Test-Post-Please-Ignore-685436408", @site.page_url_from_image_url) + assert_equal("https://www.deviantart.com/noizave/art/test-post-please-ignore-685436408", @site.page_url) end end @@ -127,10 +123,10 @@ module Sources @site = Sources::Strategies.find("http://th00.deviantart.net/fs71/PRE/f/2014/065/3/b/goruto_by_xyelkiltrox-d797tit.png") # http://origin-orig.deviantart.net/0f1e/f/2014/065/3/b/goruto_by_xyelkiltrox-d797tit.png (md5: d779f5a7da29ec90d777a8db38d07994, size: 3391584) - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/d8995973-0b32-4a7d-8cd8-d847d083689a/d797tit-1eac22e0-38b6-4eae-adcb-1b72843fd62a\.png}, @site.image_url) - assert_downloaded(3_391_584, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/d8995973-0b32-4a7d-8cd8-d847d083689a/d797tit-1eac22e0-38b6-4eae-adcb-1b72843fd62a\.png}, @site.image_urls.sole) + assert_downloaded(3_391_584, @site.image_urls.sole) - assert_equal("https://www.deviantart.com/xyelkiltrox/art/Goruto-438744629", @site.page_url_from_image_url) + assert_equal("https://www.deviantart.com/xyelkiltrox/art/Goruto-438744629", @site.page_url) end end @@ -141,7 +137,7 @@ module Sources assert_equal("mikoto-chan", @site.artist_name) assert_equal([@artist], @site.artists) - assert_nil(@site.page_url_from_image_url) + assert_nil(@site.page_url) end end @@ -156,12 +152,11 @@ module Sources should "work" do @site = Sources::Strategies.find(@url) - assert_equal(@site.url, @site.image_url) + assert_equal([@site.url], @site.image_urls) assert_equal("47ness", @site.artist_name) assert_equal("https://www.deviantart.com/47ness", @site.profile_url) assert_nil(@site.page_url) - assert_nil(@site.page_url_from_image_url) - assert_equal(@site.image_url, @site.canonical_url) + assert_equal(@site.image_urls.sole, @site.canonical_url) assert_equal([@artist], @site.artists) assert_nothing_raised { @site.to_h } end @@ -172,8 +167,8 @@ module Sources @site = Sources::Strategies.find(@url, @ref) # http://origin-orig.deviantart.net/a418/f/2007/120/c/9/cool_like_me_by_47ness.jpg (md5: da78e7c192d42470acda7d87ade64849, size: 265496) - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/ece2238f-5c8f-48e4-afda-304cab294acd/dwcohb-8189be91-691d-4212-b3a0-0b77e86a57d1\.jpg}, @site.image_url) - assert_downloaded(265_496, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/ece2238f-5c8f-48e4-afda-304cab294acd/dwcohb-8189be91-691d-4212-b3a0-0b77e86a57d1\.jpg}, @site.image_urls.sole) + assert_downloaded(265_496, @site.image_urls.sole) assert_equal("47ness", @site.artist_name) assert_equal("https://www.deviantart.com/47ness", @site.profile_url) @@ -196,12 +191,11 @@ module Sources should "work" do @site = Sources::Strategies.find(@url) - assert_equal(@url, @site.image_url) + assert_equal([@url], @site.image_urls) assert_nil(@site.artist_name) assert_nil(@site.profile_url) assert_nil(@site.page_url) - assert_nil(@site.page_url_from_image_url) - assert_equal(@site.image_url, @site.canonical_url) + assert_equal(@site.image_urls.sole, @site.canonical_url) assert_equal([], @site.artists) assert_nothing_raised { @site.to_h } end @@ -211,7 +205,7 @@ module Sources should "work" do @site = Sources::Strategies.find(@url, @ref) - assert_match(%r!\Ahttps://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/intermediary/f/8b472d70-a0d6-41b5-9a66-c35687090acc/d23jbr4-8a06af02-70cb-46da-8a96-42a6ba73cdb4.jpg!, @site.image_url) + assert_match(%r!\Ahttps://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/intermediary/f/8b472d70-a0d6-41b5-9a66-c35687090acc/d23jbr4-8a06af02-70cb-46da-8a96-42a6ba73cdb4.jpg!, @site.image_urls.sole) assert_equal("edsfox", @site.artist_name) assert_equal("https://www.deviantart.com/edsfox", @site.profile_url) assert_equal("https://www.deviantart.com/edsfox/art/Silverhawks-Quicksilver-126872896", @site.page_url) @@ -233,7 +227,7 @@ module Sources should "work" do @site = Sources::Strategies.find(@url, @ref) - assert_match(%r!\Ahttps://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/intermediary/f/8b472d70-a0d6-41b5-9a66-c35687090acc/d23jbr4-8a06af02-70cb-46da-8a96-42a6ba73cdb4.jpg!, @site.image_url) + assert_match(%r!\Ahttps://images-wixmp-ed30a86b8c4ca887773594c2.wixmp.com/intermediary/f/8b472d70-a0d6-41b5-9a66-c35687090acc/d23jbr4-8a06af02-70cb-46da-8a96-42a6ba73cdb4.jpg!, @site.image_urls.sole) assert_equal("edsfox", @site.artist_name) assert_equal("https://www.deviantart.com/edsfox", @site.profile_url) assert_equal("https://www.deviantart.com/edsfox/art/Silverhawks-Quicksilver-126872896", @site.page_url) @@ -268,8 +262,8 @@ module Sources @site = Sources::Strategies.find("https://www.deviantart.com/heartgear/art/Silent-Night-579982816") # md5: 62caac1863aa264a56d548b4b7607097 - assert_match(%r!\Ahttps://images-wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/ea95be00-c5aa-4063-bd55-f5a9183912f7/d9lb1ls-7d625444-0003-4123-bf00-274737ca7fdd.gif\?token=!, @site.image_url) - assert_downloaded(350_156, @site.image_url) + assert_match(%r!\Ahttps://images-wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/ea95be00-c5aa-4063-bd55-f5a9183912f7/d9lb1ls-7d625444-0003-4123-bf00-274737ca7fdd.gif\?token=!, @site.image_urls.sole) + assert_downloaded(350_156, @site.image_urls.sole) end end @@ -279,8 +273,8 @@ module Sources @site = Sources::Strategies.find("https://www.deviantart.com/heartgear/art/SL-40v3-522007633") # md5: 6adf1a3d532f898f44cf9948cbc7db7d - assert_match(%r!\Ahttps://api-da\.wixmp\.com/_api/download/file\?downloadToken=!, @site.image_url) - assert_downloaded(3_496_110, @site.image_url) + assert_match(%r!\Ahttps://api-da\.wixmp\.com/_api/download/file\?downloadToken=!, @site.image_urls.sole) + assert_downloaded(3_496_110, @site.image_urls.sole) end end @@ -289,8 +283,8 @@ module Sources @site = Sources::Strategies.find("https://www.deviantart.com/gs-mantis/art/Chen-Goes-Fishing-505847233") # md5: 344ac2b9fd5a87982af4b648aa2b2b0d - assert_equal("https://wixmp-ed30a86b8c4ca887773594c2.wixmp.com/v/mp4/fe046bc7-4d68-4699-96c1-19aa464edff6/d8d6281-91959e92-214f-4b2d-a138-ace09f4b6d09.1080p.8e57939eba634743a9fa41185e398d00.mp4", @site.image_url) - assert_downloaded(9_739_947, @site.image_url) + assert_equal(["https://wixmp-ed30a86b8c4ca887773594c2.wixmp.com/v/mp4/fe046bc7-4d68-4699-96c1-19aa464edff6/d8d6281-91959e92-214f-4b2d-a138-ace09f4b6d09.1080p.8e57939eba634743a9fa41185e398d00.mp4"], @site.image_urls) + assert_downloaded(9_739_947, @site.image_urls.sole) end end @@ -301,8 +295,8 @@ module Sources should "get the image url" do # https://origin-orig.deviantart.net/7b5b/f/2017/160/c/5/test_post_please_ignore_by_noizave-dbc3a48.png - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3a48-10b9e2e8-b176-4820-ab9e-23449c11e7c9\.png}, @site.image_url) - assert_downloaded(3619, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3a48-10b9e2e8-b176-4820-ab9e-23449c11e7c9\.png}, @site.image_urls.sole) + assert_downloaded(3619, @site.image_urls.sole) end should "get the profile" do @@ -361,8 +355,8 @@ module Sources should "get the image url" do # https://origin-orig.deviantart.net/cb25/f/2017/160/1/9/hidden_work_by_noizave-dbc3r29.png - assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3r29-10c99118-5cfe-4402-ad55-7b57e7c0ca43\.png}, @site.image_url) - assert_downloaded(3619, @site.image_url) + assert_match(%r{\Ahttps://wixmp-ed30a86b8c4ca887773594c2\.wixmp\.com/f/83d3eb4d-13e5-4aea-a08f-8d4331d033c4/dbc3r29-10c99118-5cfe-4402-ad55-7b57e7c0ca43\.png}, @site.image_urls.sole) + assert_downloaded(3619, @site.image_urls.sole) end end diff --git a/test/unit/sources/fanbox_test.rb b/test/unit/sources/fanbox_test.rb index e2a27563a..bc7420793 100644 --- a/test/unit/sources/fanbox_test.rb +++ b/test/unit/sources/fanbox_test.rb @@ -55,9 +55,16 @@ module Sources end should "correctly download the right image" do - assert_downloaded(431_225, @post1.image_url) - assert_downloaded(245_678, @post2.image_url) - assert_downloaded(320_056, @post3.image_url) + assert_downloaded(431_225, @post1.image_urls[0]) + assert_downloaded(753_048, @post1.image_urls[1]) + assert_downloaded(589_327, @post1.image_urls[2]) + assert_downloaded(178_739, @post1.image_urls[3]) + + assert_downloaded(245_678, @post2.image_urls[0]) + assert_downloaded(320_056, @post2.image_urls[1]) + assert_downloaded(666_681, @post2.image_urls[2]) + + assert_downloaded(320_056, @post3.image_urls.sole) end should "get the tags" do @@ -92,7 +99,7 @@ module Sources assert_nothing_raised { @source.to_h } assert_equal("mfr", @source.artist_name) - assert_equal("https://downloads.fanbox.cc/images/post/1306390/VOXblkyvltL5fRhMoR7RdSkk.png", @source.image_url) + assert_equal(["https://downloads.fanbox.cc/images/post/1306390/VOXblkyvltL5fRhMoR7RdSkk.png"], @source.image_urls) end end @@ -111,7 +118,7 @@ module Sources should "still work" do post = Sources::Strategies.find("https://pixiv.pximg.net/c/1620x580_90_a2_g5/fanbox/public/images/creator/1566167/cover/QqxYtuWdy4XWQx1ZLIqr4wvA.jpeg") assert_nothing_raised { post.to_h } - assert_downloaded(750_484, post.image_url) + assert_downloaded(750_484, post.image_urls.sole) assert_equal("https://omu001.fanbox.cc", post.profile_url) assert_equal(post.profile_url, post.canonical_url) artist = FactoryBot.create(:artist, name: "omu", url_string: "https://omu001.fanbox.cc") diff --git a/test/unit/sources/fantia_test.rb b/test/unit/sources/fantia_test.rb index c9ed40d8a..fd036f3e8 100644 --- a/test/unit/sources/fantia_test.rb +++ b/test/unit/sources/fantia_test.rb @@ -78,7 +78,7 @@ module Sources url = "https://fantia.jp/posts/1143951/download/1830956" source = Sources::Strategies.find(url) - assert_match(%r{1830956/cbcdfcbe_20220224_120_040_100.png}, source.image_url) + assert_match(%r{1830956/cbcdfcbe_20220224_120_040_100.png}, source.image_urls.sole) assert_equal("松永紅葉", source.other_names.first) assert_equal("https://fantia.jp/fanclubs/322", source.profile_url) assert_equal("https://fantia.jp/posts/1143951", source.page_url) @@ -95,7 +95,7 @@ module Sources url = "https://fantia.jp/posts/1143951" source = Sources::Strategies.find(url) - assert_equal("https://c.fantia.jp/uploads/post/file/1143951/47491020-a6c6-47db-b09e-815b0530c0bc.png", source.image_url) + assert_equal("https://c.fantia.jp/uploads/post/file/1143951/47491020-a6c6-47db-b09e-815b0530c0bc.png", source.image_urls.first) assert_match(%r{1830956/cbcdfcbe_20220224_120_040_100.png}, source.image_urls.second) assert_equal("松永紅葉", source.other_names.first) assert_equal("https://fantia.jp/fanclubs/322", source.profile_url) @@ -103,7 +103,8 @@ module Sources assert_equal([], source.tags) assert_equal("今日の一枚3186 (1:20+0:40+1:00)", source.artist_commentary_title) assert_equal("今日の一枚3186 (1:20+0:40+1:00)", source.artist_commentary_desc) - assert_downloaded(1_157_953, url) + assert_downloaded(1_157_953, source.image_urls[0]) + assert_downloaded(14_371_816, source.image_urls[1]) assert_nothing_raised { source.to_h } end end @@ -123,7 +124,13 @@ module Sources assert_equal(image_urls, source.image_urls) assert_equal("https://fantia.jp/fanclubs/7", source.profile_url) assert_equal("https://fantia.jp/products/249638", source.page_url) - assert_downloaded(288_801, url) + + assert_downloaded(288_801, source.image_urls[0]) + assert_downloaded(515_598, source.image_urls[1]) + assert_downloaded(613_103, source.image_urls[2]) + assert_downloaded(146_837, source.image_urls[3]) + assert_downloaded(78_316, source.image_urls[4]) + assert_nothing_raised { source.to_h } end end diff --git a/test/unit/sources/foundation_test.rb b/test/unit/sources/foundation_test.rb index b1f3e2871..0c3d1650f 100644 --- a/test/unit/sources/foundation_test.rb +++ b/test/unit/sources/foundation_test.rb @@ -31,14 +31,14 @@ module Sources end should "get the image url" do - assert_equal(@image_url, @image1.image_url) - assert_equal(@image_url, @image2.image_url) + assert_equal([@image_url], @image1.image_urls) + assert_equal([@image_url], @image2.image_urls) end should "download an image" do - assert_downloaded(13_908_349, @image1.image_url) - assert_downloaded(13_908_349, @image2.image_url) - assert_downloaded(13_391_766, @image3.image_url) + assert_downloaded(13_908_349, @image1.image_urls.sole) + assert_downloaded(13_908_349, @image2.image_urls.sole) + assert_downloaded(13_391_766, @image3.image_urls.sole) end should "find the correct artist" do @@ -104,8 +104,8 @@ module Sources image = "https://f8n-ipfs-production.imgix.net/QmVnpe39qodMjTe8v3fijPfB1tjwhT8hgobtgLPtsangqc/nft.png" assert_nothing_raised { case1.to_h } assert_nothing_raised { case2.to_h } - assert_equal(image, case1.image_url) - assert_equal(image, case2.image_url) + assert_equal([image], case1.image_urls) + assert_equal([image], case2.image_urls) end end diff --git a/test/unit/sources/hentai_foundry_test.rb b/test/unit/sources/hentai_foundry_test.rb index 31ed2f85a..39b880d31 100644 --- a/test/unit/sources/hentai_foundry_test.rb +++ b/test/unit/sources/hentai_foundry_test.rb @@ -29,8 +29,8 @@ module Sources end should "get the image url" do - assert_equal("https://pictures.hentai-foundry.com/a/Afrobull/795025/Afrobull-795025-kuroeda.png", @image_1.image_url) - assert_equal("https://pictures.hentai-foundry.com/a/Afrobull/795025/Afrobull-795025-kuroeda.png", @image_2.image_url) + assert_equal(["https://pictures.hentai-foundry.com/a/Afrobull/795025/Afrobull-795025-kuroeda.png"], @image_1.image_urls) + assert_equal(["https://pictures.hentai-foundry.com/a/Afrobull/795025/Afrobull-795025-kuroeda.png"], @image_2.image_urls) end should "get the canonical url" do @@ -39,8 +39,8 @@ module Sources end should "download an image" do - assert_downloaded(1_349_887, @image_1.image_url) - assert_downloaded(1_349_887, @image_2.image_url) + assert_downloaded(1_349_887, @image_1.image_urls.sole) + assert_downloaded(1_349_887, @image_2.image_urls.sole) end should "get the tags" do diff --git a/test/unit/sources/lofter_test.rb b/test/unit/sources/lofter_test.rb index 17ae09bb9..c81fe1309 100644 --- a/test/unit/sources/lofter_test.rb +++ b/test/unit/sources/lofter_test.rb @@ -36,7 +36,7 @@ module Sources end should "download the full-size image" do - assert_downloaded(2_739_443, @source.image_url) + assert_downloaded(2_739_443, @source.image_urls.sole) end should "find the correct artist" do @@ -57,7 +57,7 @@ module Sources context "A bad link" do should "correctly get the full size" do source = Sources::Strategies.find("https://imglf4.lf127.net/img/S1d2QlVsWkJhSW1qcnpIS0ZSa3ZJUFczb2RKSVlpMHJkNy9kc3BSQVQvQm5DNzB4eVhxay9nPT0.png?imageView&thumbnail=1680x0&quality=96&stripmeta=0") - assert_equal("https://imglf4.lf127.net/img/S1d2QlVsWkJhSW1qcnpIS0ZSa3ZJUFczb2RKSVlpMHJkNy9kc3BSQVQvQm5DNzB4eVhxay9nPT0.png", source.image_url) + assert_equal(["https://imglf4.lf127.net/img/S1d2QlVsWkJhSW1qcnpIS0ZSa3ZJUFczb2RKSVlpMHJkNy9kc3BSQVQvQm5DNzB4eVhxay9nPT0.png"], source.image_urls) assert_nothing_raised { source.to_h } end end diff --git a/test/unit/sources/mastodon_test.rb b/test/unit/sources/mastodon_test.rb index 689912214..e92689913 100644 --- a/test/unit/sources/mastodon_test.rb +++ b/test/unit/sources/mastodon_test.rb @@ -17,7 +17,7 @@ module Sources end should "get the image url" do - assert_equal("https://img.pawoo.net/media_attachments/files/000/128/953/original/4c0a06087b03343f.png", @site.image_url) + assert_equal(["https://img.pawoo.net/media_attachments/files/000/128/953/original/4c0a06087b03343f.png"], @site.image_urls) end should "get the commentary" do diff --git a/test/unit/sources/moebooru_test.rb b/test/unit/sources/moebooru_test.rb index 51cb58fe8..88a695110 100644 --- a/test/unit/sources/moebooru_test.rb +++ b/test/unit/sources/moebooru_test.rb @@ -6,7 +6,6 @@ module Sources site = Sources::Strategies.find(url) assert_equal(site_name, site.site_name) - assert_equal(image_url, site.image_url) assert_equal([image_url], site.image_urls) assert_equal(image_url, site.canonical_url) assert_equal(preview_url, site.preview_url) diff --git a/test/unit/sources/newgrounds_test.rb b/test/unit/sources/newgrounds_test.rb index 9f6679021..c083b98c7 100644 --- a/test/unit/sources/newgrounds_test.rb +++ b/test/unit/sources/newgrounds_test.rb @@ -26,8 +26,8 @@ module Sources end should "get the image urls" do - assert_match(@image_url, @image_1.image_url) - assert_equal(@image_url, @image_2.image_url) + assert_equal([@image_url], @image_1.image_urls) + assert_equal([@image_url], @image_2.image_urls) end should "get the canonical url" do @@ -36,8 +36,8 @@ module Sources end should "download an image" do - assert_downloaded(4224, @image_1.image_url) - assert_downloaded(4224, @image_2.image_url) + assert_downloaded(4224, @image_1.image_urls.sole) + assert_downloaded(4224, @image_2.image_urls.sole) end should "get the tags" do diff --git a/test/unit/sources/nico_seiga_test.rb b/test/unit/sources/nico_seiga_test.rb index a94a029e2..2d84adde8 100644 --- a/test/unit/sources/nico_seiga_test.rb +++ b/test/unit/sources/nico_seiga_test.rb @@ -34,8 +34,8 @@ module Sources end should "get the image url(s)" do - assert_match(%r{^https?://lohas\.nicoseiga\.jp/priv/}, @site_1.image_url) - assert_match(%r{^https?://lohas\.nicoseiga\.jp/priv/}, @site_2.image_url) + assert_match(%r{^https?://lohas\.nicoseiga\.jp/priv/}, @site_1.image_urls.sole) + assert_match(%r{^https?://lohas\.nicoseiga\.jp/priv/}, @site_2.image_urls.sole) expected = [ %r{https://lohas\.nicoseiga\.jp/priv/\h+/\d+/10315315}, @@ -82,7 +82,7 @@ module Sources should "work for a https://lohas.nicoseiga.jp/thumb/${id}i url" do site = Sources::Strategies.find("https://lohas.nicoseiga.jp/thumb/6844226i") - assert_match(%r!https?://lohas.nicoseiga.jp/priv/[a-f0-9]{40}/[0-9]+/6844226!, site.image_url) + assert_match(%r!https?://lohas.nicoseiga.jp/priv/[a-f0-9]{40}/[0-9]+/6844226!, site.image_urls.sole) assert_match("https://seiga.nicovideo.jp/seiga/im6844226", site.canonical_url) end end @@ -95,7 +95,7 @@ module Sources end should "get the correct pic" do - assert_match(%r!https?://lohas.nicoseiga.jp/priv/[a-f0-9]{40}/[0-9]+/9146749!, @site.image_url) + assert_match(%r!https?://lohas.nicoseiga.jp/priv/[a-f0-9]{40}/[0-9]+/9146749!, @site.image_urls.sole) end should "set the correct source" do @@ -122,7 +122,7 @@ module Sources should "still work" do site = Sources::Strategies.find("http://seiga.nicovideo.jp/seiga/im9208126") - assert_match(%r!https?://lohas.nicoseiga.jp/priv/[a-f0-9]{40}/[0-9]+/9208126!, site.image_url) + assert_match(%r!https?://lohas.nicoseiga.jp/priv/[a-f0-9]{40}/[0-9]+/9208126!, site.image_urls.sole) assert_nothing_raised { site.to_h } end end diff --git a/test/unit/sources/nijie_test.rb b/test/unit/sources/nijie_test.rb index 00d4563a6..e9dbd7442 100644 --- a/test/unit/sources/nijie_test.rb +++ b/test/unit/sources/nijie_test.rb @@ -47,8 +47,8 @@ module Sources end should "get the image url" do - assert_equal("https://pic.nijie.net/07/nijie/17/95/728995/illust/0_0_403fdd541191110c_c25585.jpg", @site.image_url) - assert_downloaded(132_555, @site.image_url) + assert_equal(["https://pic.nijie.net/07/nijie/17/95/728995/illust/0_0_403fdd541191110c_c25585.jpg"], @site.image_urls) + assert_downloaded(132_555, @site.image_urls.sole) end should "get the canonical url" do @@ -123,7 +123,7 @@ module Sources end should "get the image url" do - assert_equal("https://pic.nijie.net/03/nijie_picture/728995_20170505014820_0.jpg", @site.image_url) + assert_equal(["https://pic.nijie.net/03/nijie_picture/728995_20170505014820_0.jpg"], @site.image_urls) end should "get the preview urls" do @@ -150,7 +150,7 @@ module Sources end should "get the image url" do - assert_equal("https://pic.nijie.net/07/nijie/17/95/728995/illust/0_0_403fdd541191110c_c25585.jpg", @site.image_url) + assert_equal(["https://pic.nijie.net/07/nijie/17/95/728995/illust/0_0_403fdd541191110c_c25585.jpg"], @site.image_urls) end should "get the preview urls" do @@ -206,7 +206,7 @@ module Sources site = Sources::Strategies.find(image_url) assert_nil(site.page_url) - assert_equal(image_url, site.image_url) + assert_equal([image_url], site.image_urls) 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 } @@ -242,7 +242,10 @@ module Sources should "find the mp4 file" do site = Sources::Strategies.find("http://nijie.info/view.php?id=324604") - assert_equal("https://pic.nijie.net/01/nijie/19/69/1349569/illust/0_0_a20b709587eb7713_30b409.mp4", site.image_urls[0]) + assert_equal(%w[ + https://pic.nijie.net/01/nijie/19/69/1349569/illust/0_0_a20b709587eb7713_30b409.mp4 + https://pic.nijie.net/03/nijie/19/69/1349569/illust/324604_0_baebdf6d2bf26239_435649.gif + ], site.image_urls) end end @@ -268,7 +271,6 @@ module Sources 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 @@ -325,7 +327,6 @@ module Sources %w[ほのぼの https://nijie.info/search_dojin.php?word=%E3%81%BB%E3%81%AE%E3%81%BC%E3%81%AE]] assert(true, site.doujin?) - assert_equal(image, site.image_url) assert_equal([image], site.image_urls) assert_equal("作品情報", site.artist_commentary_title) assert_equal("
ある日目がさめると女の子になっていたいつき
\nそこへ幼馴染の小梅が現れて…
\n2010年コミックマーケット78で販売したコピー本のDL版で
\n本編18Pの短編マンガです
\n