tumblr: fix video urls not being recognized.

This commit is contained in:
evazion
2018-10-09 11:57:23 -05:00
parent 184a5ebf3e
commit 16b1b72da5
2 changed files with 25 additions and 10 deletions

View File

@@ -8,6 +8,7 @@ module Sources::Strategies
FILENAME = %r{(?<filename>(tumblr_(inline_)?)?[a-z0-9]+(_r[0-9]+)?)}i
EXT = %r{(?<ext>\w+)}
IMAGE = %r!\Ahttps?://#{DOMAIN}/(?<dir>#{MD5}/)?#{FILENAME}_(?<size>\w+)\.#{EXT}\z!i
VIDEO = %r!\Ahttps?://(?:vtt|ve\.media)\.tumblr\.com/!i
POST = %r!\Ahttps?://(?<blog_name>[^.]+)\.tumblr\.com/(?:post|image)/(?<post_id>\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

View File

@@ -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