From eeb41d2ffd555247c2df57239482591ec72013c0 Mon Sep 17 00:00:00 2001 From: evazion Date: Thu, 16 Nov 2017 11:23:12 -0600 Subject: [PATCH] twitter: get status id from referer url if not in direct url. --- app/logical/downloads/file.rb | 2 +- app/logical/sources/strategies/twitter.rb | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/logical/downloads/file.rb b/app/logical/downloads/file.rb index 0fa1b26d7..af8fd1725 100644 --- a/app/logical/downloads/file.rb +++ b/app/logical/downloads/file.rb @@ -125,7 +125,7 @@ module Downloads def set_source_to_referer(src, referer) if Sources::Strategies::Nijie.url_match?(src) || - Sources::Strategies::Twitter.url_match?(src) || + Sources::Strategies::Twitter.url_match?(src) || Sources::Strategies::Twitter.url_match?(referer) Sources::Strategies::Pawoo.url_match?(src) || Sources::Strategies::Tumblr.url_match?(src) || Sources::Strategies::Tumblr.url_match?(referer) Sources::Strategies::ArtStation.url_match?(src) || Sources::Strategies::ArtStation.url_match?(referer) diff --git a/app/logical/sources/strategies/twitter.rb b/app/logical/sources/strategies/twitter.rb index ac80d7a44..646f9ec47 100644 --- a/app/logical/sources/strategies/twitter.rb +++ b/app/logical/sources/strategies/twitter.rb @@ -3,11 +3,11 @@ module Sources::Strategies attr_reader :image_urls def self.url_match?(url) - url =~ %r!https?://(?:mobile\.)?twitter\.com/\w+/status/\d+! || url =~ %r{https?://pbs\.twimg\.com/media/} + self.status_id_from_url(url).present? end def referer_url - if @referer_url =~ %r!https?://(?:mobile\.)?twitter\.com/\w+/status/\d+! && @url =~ %r{https?://pbs\.twimg\.com/media/} + if self.class.url_match?(@referer_url) @referer_url else @url @@ -19,7 +19,6 @@ module Sources::Strategies end def api_response - status_id = status_id_from_url(url) @api_response ||= TwitterService.new.client.status(status_id, tweet_mode: "extended") end @@ -62,11 +61,15 @@ module Sources::Strategies desc.strip end - def status_id_from_url(url) + def status_id + self.class.status_id_from_url(referer_url) + end + + def self.status_id_from_url(url) if url =~ %r{^https?://(?:mobile\.)?twitter\.com/\w+/status/(\d+)} $1.to_i else - raise Sources::Error.new("Couldn't get status ID from URL: #{url}") + nil end end end