diff --git a/app/logical/sources/strategies/twitter.rb b/app/logical/sources/strategies/twitter.rb index 279eaba70..43968b04d 100644 --- a/app/logical/sources/strategies/twitter.rb +++ b/app/logical/sources/strategies/twitter.rb @@ -1,14 +1,13 @@ module Sources::Strategies class Twitter < Base PAGE = %r!\Ahttps?://(?:mobile\.)?twitter\.com!i - ASSET = %r!\A(https?://(?:video|pbs)\.twimg\.com/media/)!i PROFILE = %r!\Ahttps?://(?:mobile\.)?twitter.com/(?[a-z0-9_]+)!i # https://pbs.twimg.com/media/EBGbJe_U8AA4Ekb.jpg # https://pbs.twimg.com/media/EBGbJe_U8AA4Ekb?format=jpg&name=900x900 BASE_IMAGE_URL = %r!\Ahttps?://pbs\.twimg\.com/media!i - FILENAME1 = %r!(?\w+)\.(?\w+)!i - FILENAME2 = %r!(?\w+)\?.*format=(?\w+)!i + FILENAME1 = %r!(?[a-zA-Z0-9_-]+)\.(?\w+)!i + FILENAME2 = %r!(?[a-zA-Z0-9_-]+)\?.*format=(?\w+)!i IMAGE_URL = %r!#{BASE_IMAGE_URL}/#{Regexp.union(FILENAME1, FILENAME2)}!i # Twitter provides a list but it's inaccurate; some names ('intent') aren't diff --git a/test/unit/sources/twitter_test.rb b/test/unit/sources/twitter_test.rb index 86e789e0e..b39eb9060 100644 --- a/test/unit/sources/twitter_test.rb +++ b/test/unit/sources/twitter_test.rb @@ -189,6 +189,11 @@ module Sources assert_equal(["https://pbs.twimg.com/media/EBGp2YdUYAA19Uj.jpg:orig"], @site.image_urls) assert_equal("https://pbs.twimg.com/media/EBGp2YdUYAA19Uj.jpg:orig", @site.canonical_url) end + + should "work for filenames containing dashes" do + @site = Sources::Strategies.find("https://pbs.twimg.com/media/EAjc-OWVAAAxAgQ.jpg", "https://twitter.com/asteroid_ill/status/1155420330128625664") + assert_equal("https://pbs.twimg.com/media/EAjc-OWVAAAxAgQ.jpg:orig", @site.image_url) + end end context "The source site for a https://twitter.com/i/web/status/:id url" do