summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/redgifs.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2020-06-01 23:11:37 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2020-06-01 23:11:37 -0400
commita70a3246927b72f1ded37acd55ee719515441b5b (patch)
tree57f0d3ab0b1387b665325f42a24b8aab63cbce07 /gallery_dl/extractor/redgifs.py
parent90e50db2e3c38f523bb5195d295290b06e5cedb0 (diff)
New upstream version 1.14.0.upstream/1.14.0
Diffstat (limited to 'gallery_dl/extractor/redgifs.py')
-rw-r--r--gallery_dl/extractor/redgifs.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/gallery_dl/extractor/redgifs.py b/gallery_dl/extractor/redgifs.py
new file mode 100644
index 0000000..7855eab
--- /dev/null
+++ b/gallery_dl/extractor/redgifs.py
@@ -0,0 +1,58 @@
+# -*- coding: utf-8 -*-
+
+# Copyright 2020 Mike Fährmann
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation.
+
+"""Extractors for https://redgifs.com/"""
+
+from .gfycat import GfycatImageExtractor
+from ..cache import cache
+
+
+class RedgifsImageExtractor(GfycatImageExtractor):
+ """Extractor for individual images from redgifs.com"""
+ category = "redgifs"
+ pattern = r"(?:https?://)?(?:www\.)?redgifs\.com/watch/([A-Za-z]+)"
+ test = ("https://redgifs.com/watch/foolishforkedabyssiniancat", {
+ "pattern": r"https://\w+.redgifs.com/FoolishForkedAbyssiniancat.mp4",
+ "content": "f6e03f1df9a2ff2a74092f53ee7580d2fb943533",
+ })
+
+ def _get_info(self, gfycat_id):
+ api = RedgifsAPI(self)
+ return api.gfycat(gfycat_id)
+
+
+class RedgifsAPI():
+
+ def __init__(self, extractor):
+ self.extractor = extractor
+ self.headers = {}
+
+ def gfycat(self, gfycat_id):
+ endpoint = "v1/gfycats/" + gfycat_id
+ return self._call(endpoint)["gfyItem"]
+
+ @cache(maxage=3600)
+ def _authenticate_impl(self):
+ url = "https://weblogin.redgifs.com/oauth/webtoken"
+ headers = {
+ "Referer": "https://www.redgifs.com/",
+ "Origin" : "https://www.redgifs.com",
+ }
+ data = {
+ "access_key": "dBLwVuGn9eq4dtXLs8WSfpjcYFY7bPQe"
+ "AqGPSFgqeW5B9uzj2cMVhF63pTFF4Rg9",
+ }
+
+ response = self.extractor.request(
+ url, method="POST", headers=headers, json=data)
+ return "Bearer " + response.json()["access_token"]
+
+ def _call(self, endpoint):
+ self.headers["Authorization"] = self._authenticate_impl()
+ url = "https://napi.redgifs.com/" + endpoint
+ return self.extractor.request(url, headers=self.headers).json()