tumblr: fix video urls not being recognized.
This commit is contained in:
@@ -8,6 +8,7 @@ module Sources::Strategies
|
|||||||
FILENAME = %r{(?<filename>(tumblr_(inline_)?)?[a-z0-9]+(_r[0-9]+)?)}i
|
FILENAME = %r{(?<filename>(tumblr_(inline_)?)?[a-z0-9]+(_r[0-9]+)?)}i
|
||||||
EXT = %r{(?<ext>\w+)}
|
EXT = %r{(?<ext>\w+)}
|
||||||
IMAGE = %r!\Ahttps?://#{DOMAIN}/(?<dir>#{MD5}/)?#{FILENAME}_(?<size>\w+)\.#{EXT}\z!i
|
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
|
POST = %r!\Ahttps?://(?<blog_name>[^.]+)\.tumblr\.com/(?:post|image)/(?<post_id>\d+)!i
|
||||||
|
|
||||||
def self.enabled?
|
def self.enabled?
|
||||||
@@ -23,7 +24,7 @@ module Sources::Strategies
|
|||||||
end
|
end
|
||||||
|
|
||||||
def image_url
|
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)
|
find_largest(url)
|
||||||
end
|
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)
|
# api response is blank (work is deleted or we were given a direct image with no referer url)
|
||||||
when nil
|
when nil
|
||||||
list += [url] if url.match?(IMAGE)
|
list += [url] if url.match?(IMAGE) || url.match?(VIDEO)
|
||||||
end
|
end
|
||||||
|
|
||||||
list += inline_images
|
list += inline_images
|
||||||
|
|||||||
@@ -161,18 +161,32 @@ module Sources
|
|||||||
end
|
end
|
||||||
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
|
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
|
end
|
||||||
|
|
||||||
should "get the image urls" do
|
context "with a referer" do
|
||||||
urls = %w[
|
should "get the video and inline images" do
|
||||||
https://ve.media.tumblr.com/tumblr_os31dkexhK1wsfqep.mp4
|
site = Sources::Strategies.find(@url, @ref)
|
||||||
https://media.tumblr.com/afed9f5b3c33c39dc8c967e262955de2/tumblr_inline_os31dclyCR1v11u29_1280.png
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user