@@ -10,7 +10,7 @@
|
|||||||
|
|
||||||
from .common import Extractor, Message
|
from .common import Extractor, Message
|
||||||
from .. import text
|
from .. import text
|
||||||
from ..cache import cache
|
from ..cache import memcache
|
||||||
|
|
||||||
|
|
||||||
class RedgifsExtractor(Extractor):
|
class RedgifsExtractor(Extractor):
|
||||||
@@ -133,10 +133,11 @@ class RedgifsAPI():
|
|||||||
def __init__(self, extractor):
|
def __init__(self, extractor):
|
||||||
self.extractor = extractor
|
self.extractor = extractor
|
||||||
self.headers = {
|
self.headers = {
|
||||||
"Referer" : extractor.root + "/",
|
"Referer" : extractor.root + "/",
|
||||||
"authorization": "Bearer " + self._fetch_bearer_token(extractor),
|
"authorization" : None,
|
||||||
"content-type" : "application/json",
|
"content-type" : "application/json",
|
||||||
"Origin" : extractor.root,
|
"x-customheader": extractor.root + "/",
|
||||||
|
"Origin" : extractor.root,
|
||||||
}
|
}
|
||||||
|
|
||||||
def gif(self, gif_id):
|
def gif(self, gif_id):
|
||||||
@@ -156,6 +157,7 @@ class RedgifsAPI():
|
|||||||
|
|
||||||
def _call(self, endpoint, params=None):
|
def _call(self, endpoint, params=None):
|
||||||
url = self.API_ROOT + endpoint
|
url = self.API_ROOT + endpoint
|
||||||
|
self.headers["authorization"] = self._auth()
|
||||||
return self.extractor.request(
|
return self.extractor.request(
|
||||||
url, params=params, headers=self.headers).json()
|
url, params=params, headers=self.headers).json()
|
||||||
|
|
||||||
@@ -170,16 +172,10 @@ class RedgifsAPI():
|
|||||||
return
|
return
|
||||||
params["page"] += 1
|
params["page"] += 1
|
||||||
|
|
||||||
@cache(maxage=3600)
|
@memcache(maxage=600)
|
||||||
def _fetch_bearer_token(self, extr):
|
def _auth(self):
|
||||||
extr.log.debug("Retrieving Bearer token")
|
# https://github.com/Redgifs/api/wiki/Temporary-tokens
|
||||||
|
url = self.API_ROOT + "/v2/auth/temporary"
|
||||||
page = extr.request(extr.root + "/").text
|
self.headers["authorization"] = None
|
||||||
index = text.extract(page, "/assets/js/index", ".js")[0]
|
return "Bearer " + self.extractor.request(
|
||||||
|
url, headers=self.headers).json()["token"]
|
||||||
url = extr.root + "/assets/js/index" + index + ".js"
|
|
||||||
page = extr.request(url, encoding="utf-8").text
|
|
||||||
token = "ey" + text.extract(page, '="ey', '"')[0]
|
|
||||||
|
|
||||||
extr.log.debug("Token: '%s'", token)
|
|
||||||
return token
|
|
||||||
|
|||||||
Reference in New Issue
Block a user