diff --git a/app/logical/sources/strategies/tumblr.rb b/app/logical/sources/strategies/tumblr.rb index 411a9a9e3..115498d2c 100644 --- a/app/logical/sources/strategies/tumblr.rb +++ b/app/logical/sources/strategies/tumblr.rb @@ -8,6 +8,7 @@ module Sources::Strategies FILENAME = %r{(?(tumblr_(inline_)?)?[a-z0-9]+(_r[0-9]+)?)}i EXT = %r{(?\w+)} IMAGE = %r!\Ahttps?://#{DOMAIN}/(?#{MD5}/)?#{FILENAME}_(?\w+)\.#{EXT}\z!i + VIDEO = %r!\Ahttps?://(?:vtt|ve\.media)\.tumblr\.com/!i POST = %r!\Ahttps?://(?[^.]+)\.tumblr\.com/(?:post|image)/(?\d+)!i def self.enabled? @@ -23,7 +24,7 @@ module Sources::Strategies end def image_url - return image_urls.first unless url.match?(IMAGE) + return image_urls.first unless url.match?(IMAGE) || url.match?(VIDEO) find_largest(url) end @@ -39,7 +40,7 @@ module Sources::Strategies # api response is blank (work is deleted or we were given a direct image with no referer url) when nil - list += [url] if url.match?(IMAGE) + list += [url] if url.match?(IMAGE) || url.match?(VIDEO) end list += inline_images diff --git a/test/unit/sources/tumblr_test.rb b/test/unit/sources/tumblr_test.rb index a9873e0c0..187567730 100644 --- a/test/unit/sources/tumblr_test.rb +++ b/test/unit/sources/tumblr_test.rb @@ -161,18 +161,32 @@ module Sources end end - context "The source for a 'http://*.tumblr.com/post/*' video post with inline images" do + context "The source for a 'http://ve.media.tumblr.com/*' video post with inline images" do setup do - @site = Sources::Strategies.find("https://noizave.tumblr.com/post/162222617101") + @url = "https://ve.media.tumblr.com/tumblr_os31dkexhK1wsfqep.mp4" + @ref = "https://noizave.tumblr.com/post/162222617101" end - should "get the image urls" do - urls = %w[ - https://ve.media.tumblr.com/tumblr_os31dkexhK1wsfqep.mp4 - https://media.tumblr.com/afed9f5b3c33c39dc8c967e262955de2/tumblr_inline_os31dclyCR1v11u29_1280.png - ] + context "with a referer" do + should "get the video and inline images" do + site = Sources::Strategies.find(@url, @ref) + urls = %w[ + https://ve.media.tumblr.com/tumblr_os31dkexhK1wsfqep.mp4 + https://media.tumblr.com/afed9f5b3c33c39dc8c967e262955de2/tumblr_inline_os31dclyCR1v11u29_1280.png + ] - assert_equal(urls, @site.image_urls) + assert_equal(@url, site.image_url) + assert_equal(urls, site.image_urls) + end + end + + context "without a referer" do + should "get the video" do + site = Sources::Strategies.find(@url) + + assert_equal(@url, site.image_url) + assert_equal([@url], site.image_urls) + end end end