diff --git a/app/logical/source/extractor/newgrounds.rb b/app/logical/source/extractor/newgrounds.rb index 33da87755..499c40010 100644 --- a/app/logical/source/extractor/newgrounds.rb +++ b/app/logical/source/extractor/newgrounds.rb @@ -15,7 +15,7 @@ module Source [url] elsif video_data.present? sample = video_data&.[]("sources")&.max_by { |k, _v| k.gsub(/p$/, "").to_i }&.dig(1, 0, "src") - final = [Source::URL.parse(sample).full_image_url, sample].find { |u| http_exists?(u) } + final = [Source::URL.parse(sample)&.full_image_url, sample].compact.find { |u| http_exists?(u) } [final].compact else urls = [] diff --git a/test/unit/sources/newgrounds_test.rb b/test/unit/sources/newgrounds_test.rb index cae4d5df1..5a9585d66 100644 --- a/test/unit/sources/newgrounds_test.rb +++ b/test/unit/sources/newgrounds_test.rb @@ -82,11 +82,21 @@ module Sources strategy_should_work( "https://www.newgrounds.com/art/view/natthelich/nopicture", deleted: true, + image_urls: [], profile_url: "https://natthelich.newgrounds.com", artist_name: "natthelich" ) end + context "A deleted or non-existing video" do + strategy_should_work( + "https://www.newgrounds.com/portal/view/802594", + deleted: true, + image_urls: [], + profile_url: nil + ) + end + context "A www.newgrounds.com/dump/item URL" do strategy_should_work( "https://www.newgrounds.com/dump/item/a1f417d20f5eaef31e26ac3c4956b3d4",