aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--yt_dlp/extractor/redgifs.py20
1 files changed, 6 insertions, 14 deletions
diff --git a/yt_dlp/extractor/redgifs.py b/yt_dlp/extractor/redgifs.py
index 1f4d04903..24ac9420e 100644
--- a/yt_dlp/extractor/redgifs.py
+++ b/yt_dlp/extractor/redgifs.py
@@ -64,20 +64,12 @@ class RedGifsBaseInfoExtractor(InfoExtractor):
}
def _fetch_oauth_token(self, video_id):
- # These pages contain the OAuth token that is necessary to make API calls.
- index_page = self._download_webpage(
- 'https://www.redgifs.com', video_id, note='Downloading home page')
- index_js_uri = self._html_search_regex(
- r'href="?(/assets/js/index[.a-z0-9]*.js)"?\W', index_page, 'index_js_uri')
- index_js = self._download_webpage(
- f'https://www.redgifs.com/{index_js_uri}', video_id, note='Downloading index.js')
- # It turns out that a { followed by any valid JSON punctuation will always result in the
- # first two characters of the base64 encoding being "ey".
- # Use this fact to find any such string constant of a reasonable length with the correct
- # punctuation for an oauth token
- oauth_token = self._html_search_regex(
- r'\w+\s*[=:]\s*"(ey[^"]+\.[^"]*\.[^"]{43,45})"', index_js, 'oauth token')
- self._API_HEADERS['authorization'] = f'Bearer {oauth_token}'
+ # https://github.com/Redgifs/api/wiki/Temporary-tokens
+ auth = self._download_json('https://api.redgifs.com/v2/auth/temporary',
+ video_id, note='Fetching temporary token')
+ if not auth.get('token'):
+ raise ExtractorError('Unable to get temporary token')
+ self._API_HEADERS['authorization'] = f'Bearer {auth["token"]}'
def _call_api(self, ep, video_id, *args, **kwargs):
if 'authorization' not in self._API_HEADERS: