From 0e90a2e900c5c9a6d2d5ec1cb64c33883deac6e7 Mon Sep 17 00:00:00 2001 From: Soulsuck24 <79275800+Soulsuck24@users.noreply.github.com> Date: Mon, 24 Oct 2022 12:45:26 -0400 Subject: [PATCH] Switch Redgifs to temporary tokens Initial switch to temporary tokens for Redgifs. Gets a new auth token for every API request. --- bdfr/site_downloaders/redgifs.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/bdfr/site_downloaders/redgifs.py b/bdfr/site_downloaders/redgifs.py index 615c21a..bbaef12 100644 --- a/bdfr/site_downloaders/redgifs.py +++ b/bdfr/site_downloaders/redgifs.py @@ -28,7 +28,12 @@ class Redgifs(BaseDownloader): except AttributeError: raise SiteDownloaderError(f'Could not extract Redgifs ID from {url}') - content = Redgifs.retrieve_url(f'https://api.redgifs.com/v1/gifs/{redgif_id}') + auth_token = json.loads(Redgifs.retrieve_url('https://api.redgifs.com/v2/auth/temporary').text)['token'] + headers = { + 'Authorization': f'Bearer {auth_token}', + } + + content = Redgifs.retrieve_url(f'https://api.redgifs.com/v2/gifs/{redgif_id}', headers=headers) if content is None: raise SiteDownloaderError('Could not read the page source') @@ -40,16 +45,16 @@ class Redgifs(BaseDownloader): out = set() try: - if response_json['gfyItem']['type'] == 1: # type 1 is a video - out.add(response_json['gfyItem']['mp4Url']) - elif response_json['gfyItem']['type'] == 2: # type 2 is an image - if 'gallery' in response_json['gfyItem']: + if response_json['gif']['type'] == 1: # type 1 is a video + out.add(response_json['gif']['urls']['hd']) + elif response_json['gif']['type'] == 2: # type 2 is an image + if response_json['gif']['gallery']: content = Redgifs.retrieve_url( - f'https://api.redgifs.com/v2/gallery/{response_json["gfyItem"]["gallery"]}') + f'https://api.redgifs.com/v2/gallery/{response_json["gif"]["gallery"]}') response_json = json.loads(content.text) out = {p['urls']['hd'] for p in response_json['gifs']} else: - out.add(response_json['gfyItem']['content_urls']['large']['url']) + out.add(response_json['gif']['urls']['hd']) else: raise KeyError except (KeyError, AttributeError):