From 95749584ecad58e0db6d31220aaeae70e246a992 Mon Sep 17 00:00:00 2001 From: SoulSuck24 <79275800+Soulsuck24@users.noreply.github.com> Date: Fri, 16 Sep 2022 20:41:17 -0400 Subject: [PATCH] Redgifs fixed? If this doesn't work then I give up... --- bdfr/site_downloaders/download_factory.py | 4 ++-- bdfr/site_downloaders/redgifs.py | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/bdfr/site_downloaders/download_factory.py b/bdfr/site_downloaders/download_factory.py index 96e9a42..b0bf96a 100644 --- a/bdfr/site_downloaders/download_factory.py +++ b/bdfr/site_downloaders/download_factory.py @@ -27,6 +27,8 @@ class DownloadFactory: sanitised_url = DownloadFactory.sanitise_url(url) if re.match(r'(i\.)?imgur.*\.gif.+$', sanitised_url): return Imgur + elif re.match(r'(i\.)?(redgifs|gifdeliverynetwork)', sanitised_url): + return Redgifs elif re.match(r'.*/.*\.\w{3,4}(\?[\w;&=]*)?$', sanitised_url) and \ not DownloadFactory.is_web_resource(sanitised_url): return Direct @@ -40,8 +42,6 @@ class DownloadFactory: return Gfycat elif re.match(r'(m\.)?imgur.*', sanitised_url): return Imgur - elif re.match(r'(redgifs|gifdeliverynetwork)', sanitised_url): - return Redgifs elif re.match(r'reddit\.com/r/', sanitised_url): return SelfPost elif re.match(r'(m\.)?youtu\.?be', sanitised_url): diff --git a/bdfr/site_downloaders/redgifs.py b/bdfr/site_downloaders/redgifs.py index 9929493..8d6ab21 100644 --- a/bdfr/site_downloaders/redgifs.py +++ b/bdfr/site_downloaders/redgifs.py @@ -24,7 +24,7 @@ class Redgifs(BaseDownloader): @staticmethod def _get_link(url: str) -> set[str]: try: - redgif_id = re.match(r'.*/(.*?)/?$', url).group(1) + redgif_id = re.match(r'.*/(.*?)(\..{3,})?$', url).group(1) except AttributeError: raise SiteDownloaderError(f'Could not extract Redgifs ID from {url}') @@ -55,4 +55,7 @@ class Redgifs(BaseDownloader): except (KeyError, AttributeError): raise SiteDownloaderError('Failed to find JSON data in page') + # Update subdomain if old one is returned + out = {re.sub('thumbs2', 'thumbs3', link) for link in out} + out = {re.sub('thumbs3', 'thumbs4', link) for link in out} return out