replace 'request(…).json()' with 'request_json(…)'
This commit is contained in:
@@ -27,7 +27,7 @@ class _2chThreadExtractor(Extractor):
|
||||
|
||||
def items(self):
|
||||
url = f"{self.root}/{self.board}/res/{self.thread}.json"
|
||||
posts = self.request(url).json()["threads"][0]["posts"]
|
||||
posts = self.request_json(url)["threads"][0]["posts"]
|
||||
|
||||
op = posts[0]
|
||||
title = op.get("subject") or text.remove_html(op["comment"])
|
||||
@@ -75,7 +75,7 @@ class _2chBoardExtractor(Extractor):
|
||||
|
||||
# index page
|
||||
url = f"{base}/index.json"
|
||||
index = self.request(url).json()
|
||||
index = self.request_json(url)
|
||||
index["_extractor"] = _2chThreadExtractor
|
||||
for thread in index["threads"]:
|
||||
url = f"{base}/res/{thread['thread_num']}.html"
|
||||
@@ -84,7 +84,7 @@ class _2chBoardExtractor(Extractor):
|
||||
# pages 1..n
|
||||
for n in util.advance(index["pages"], 1):
|
||||
url = f"{base}/{n}.json"
|
||||
page = self.request(url).json()
|
||||
page = self.request_json(url)
|
||||
page["_extractor"] = _2chThreadExtractor
|
||||
for thread in page["threads"]:
|
||||
url = f"{base}/res/{thread['thread_num']}.html"
|
||||
|
||||
@@ -49,14 +49,14 @@ class _35photoExtractor(Extractor):
|
||||
if extra_ids:
|
||||
yield from extra_ids
|
||||
while params["lastId"]:
|
||||
data = self.request(url, headers=headers, params=params).json()
|
||||
data = self.request_json(url, headers=headers, params=params)
|
||||
yield from self._photo_ids(data["data"])
|
||||
params["lastId"] = data["lastId"]
|
||||
|
||||
def _photo_data(self, photo_id):
|
||||
params = {"method": "photo.getData", "photoId": photo_id}
|
||||
data = self.request(
|
||||
"https://api.35photo.pro/", params=params).json()["data"][photo_id]
|
||||
data = self.request_json(
|
||||
"https://api.35photo.pro/", params=params)["data"][photo_id]
|
||||
info = {
|
||||
"url" : data["src"],
|
||||
"id" : data["photo_id"],
|
||||
|
||||
@@ -29,7 +29,7 @@ class _4chanThreadExtractor(Extractor):
|
||||
|
||||
def items(self):
|
||||
url = f"https://a.4cdn.org/{self.board}/thread/{self.thread}.json"
|
||||
posts = self.request(url).json()["posts"]
|
||||
posts = self.request_json(url)["posts"]
|
||||
title = posts[0].get("sub") or text.remove_html(posts[0]["com"])
|
||||
|
||||
data = {
|
||||
@@ -62,7 +62,7 @@ class _4chanBoardExtractor(Extractor):
|
||||
|
||||
def items(self):
|
||||
url = f"https://a.4cdn.org/{self.board}/threads.json"
|
||||
threads = self.request(url).json()
|
||||
threads = self.request_json(url)
|
||||
|
||||
for page in threads:
|
||||
for thread in page["threads"]:
|
||||
|
||||
@@ -72,7 +72,7 @@ class _500pxExtractor(Extractor):
|
||||
"x-csrf-token": self.cookies.get(
|
||||
"x-csrf-token", domain=".500px.com"),
|
||||
}
|
||||
return self.request(url, headers=headers, params=params).json()
|
||||
return self.request_json(url, headers=headers, params=params)
|
||||
|
||||
def _request_graphql(self, opname, variables):
|
||||
url = "https://api.500px.com/graphql"
|
||||
@@ -85,8 +85,8 @@ class _500pxExtractor(Extractor):
|
||||
"variables" : util.json_dumps(variables),
|
||||
"query" : QUERIES[opname],
|
||||
}
|
||||
return self.request(
|
||||
url, method="POST", headers=headers, json=data).json()["data"]
|
||||
return self.request_json(
|
||||
url, method="POST", headers=headers, json=data)["data"]
|
||||
|
||||
|
||||
class _500pxUserExtractor(_500pxExtractor):
|
||||
|
||||
@@ -80,7 +80,7 @@ class _8chanThreadExtractor(_8chanExtractor):
|
||||
# fetch thread data
|
||||
url = f"{self.root}/{board}/res/{thread}."
|
||||
self.session.headers["Referer"] = url + "html"
|
||||
thread = self.request(url + "json").json()
|
||||
thread = self.request_json(url + "json")
|
||||
thread["postId"] = thread["threadId"]
|
||||
thread["_http_headers"] = {"Referer": url + "html"}
|
||||
|
||||
@@ -117,7 +117,7 @@ class _8chanBoardExtractor(_8chanExtractor):
|
||||
|
||||
pnum = text.parse_int(pnum, 1)
|
||||
url = f"{self.root}/{board}/{pnum}.json"
|
||||
data = self.request(url).json()
|
||||
data = self.request_json(url)
|
||||
threads = data["threads"]
|
||||
|
||||
while True:
|
||||
@@ -130,4 +130,4 @@ class _8chanBoardExtractor(_8chanExtractor):
|
||||
if pnum > data["pageCount"]:
|
||||
return
|
||||
url = f"{self.root}/{board}/{pnum}.json"
|
||||
threads = self.request(url).json()["threads"]
|
||||
threads = self.request_json(url)["threads"]
|
||||
|
||||
@@ -104,7 +104,7 @@ class ArtstationExtractor(Extractor):
|
||||
url = f"{self.root}/projects/{project_id}.json"
|
||||
|
||||
try:
|
||||
data = self.request(url).json()
|
||||
data = self.request_json(url)
|
||||
except exception.HttpError as exc:
|
||||
self.log.warning(exc)
|
||||
return
|
||||
@@ -152,7 +152,7 @@ class ArtstationExtractor(Extractor):
|
||||
params["page"] = 1
|
||||
|
||||
while True:
|
||||
data = self.request(url, **kwargs).json()
|
||||
data = self.request_json(url, **kwargs)
|
||||
yield from data["data"]
|
||||
|
||||
total += len(data["data"])
|
||||
@@ -167,9 +167,8 @@ class ArtstationExtractor(Extractor):
|
||||
"Accept" : "*/*",
|
||||
"Origin" : self.root,
|
||||
}
|
||||
return self.request(
|
||||
url, method="POST", headers=headers, json={},
|
||||
).json()["public_csrf_token"]
|
||||
return self.request_json(
|
||||
url, method="POST", headers=headers, json={})["public_csrf_token"]
|
||||
|
||||
def _no_cache(self, url):
|
||||
"""Cause a cache miss to prevent Cloudflare 'optimizations'
|
||||
@@ -269,8 +268,8 @@ class ArtstationCollectionExtractor(ArtstationExtractor):
|
||||
def metadata(self):
|
||||
url = f"{self.root}/collections/{self.collection_id}.json"
|
||||
params = {"username": self.user}
|
||||
collection = self.request(
|
||||
url, params=params, notfound="collection").json()
|
||||
collection = self.request_json(
|
||||
url, params=params, notfound="collection")
|
||||
return {"collection": collection, "user": self.user}
|
||||
|
||||
def projects(self):
|
||||
@@ -290,8 +289,8 @@ class ArtstationCollectionsExtractor(ArtstationExtractor):
|
||||
url = self.root + "/collections.json"
|
||||
params = {"username": self.user}
|
||||
|
||||
for collection in self.request(
|
||||
url, params=params, notfound="collections").json():
|
||||
for collection in self.request_json(
|
||||
url, params=params, notfound="collections"):
|
||||
url = f"{self.root}/{self.user}/collections/{collection['id']}"
|
||||
collection["_extractor"] = ArtstationCollectionExtractor
|
||||
yield Message.Queue, url, collection
|
||||
@@ -320,7 +319,7 @@ class ArtstationChallengeExtractor(ArtstationExtractor):
|
||||
submission_url = f"{base}/submissions.json"
|
||||
update_url = f"{self.root}/contests/submission_updates.json"
|
||||
|
||||
challenge = self.request(challenge_url).json()
|
||||
challenge = self.request_json(challenge_url)
|
||||
yield Message.Directory, {"challenge": challenge}
|
||||
|
||||
params = {"sorting": self.sorting}
|
||||
|
||||
@@ -45,8 +45,8 @@ class BehanceExtractor(Extractor):
|
||||
"variables": variables,
|
||||
}
|
||||
|
||||
return self.request(url, method="POST", headers=headers,
|
||||
json=data).json()["data"]
|
||||
return self.request_json(
|
||||
url, method="POST", headers=headers, json=data)["data"]
|
||||
|
||||
def _update(self, data):
|
||||
# compress data to simple lists
|
||||
|
||||
@@ -108,7 +108,7 @@ class BilibiliAPI():
|
||||
|
||||
def _call(self, endpoint, params):
|
||||
url = "https://api.bilibili.com/x/polymer/web-dynamic/v1" + endpoint
|
||||
data = self.extractor.request(url, params=params).json()
|
||||
data = self.extractor.request_json(url, params=params)
|
||||
|
||||
if data["code"] != 0:
|
||||
self.extractor.log.debug("Server response: %s", data)
|
||||
@@ -159,7 +159,7 @@ class BilibiliAPI():
|
||||
|
||||
def login_user_id(self):
|
||||
url = "https://api.bilibili.com/x/space/v2/myinfo"
|
||||
data = self.extractor.request(url).json()
|
||||
data = self.extractor.request_json(url)
|
||||
|
||||
if data["code"] != 0:
|
||||
self.extractor.log.debug("Server response: %s", data)
|
||||
|
||||
@@ -488,7 +488,7 @@ class BlueskyAPI():
|
||||
url = "https://plc.directory/" + did
|
||||
|
||||
try:
|
||||
data = self.extractor.request(url).json()
|
||||
data = self.extractor.request_json(url)
|
||||
for service in data["service"]:
|
||||
if service["type"] == "AtprotoPersonalDataServer":
|
||||
return service["serviceEndpoint"]
|
||||
|
||||
@@ -180,8 +180,8 @@ class BunkrAlbumExtractor(LolisafeAlbumExtractor):
|
||||
referer = self.root_dl + "/file/" + data_id
|
||||
|
||||
headers = {"Referer": referer, "Origin": self.root_dl}
|
||||
data = self.request(self.endpoint, method="POST", headers=headers,
|
||||
json={"id": data_id}).json()
|
||||
data = self.request_json(self.endpoint, method="POST", headers=headers,
|
||||
json={"id": data_id})
|
||||
|
||||
if data.get("encrypted"):
|
||||
key = f"SECRET_KEY_{data['timestamp'] // 3600}"
|
||||
|
||||
@@ -144,12 +144,12 @@ class CienArticleExtractor(CienExtractor):
|
||||
"gallery_id": text.extr(gallery, ' gallery-id="', '"'),
|
||||
"time" : text.extr(gallery, ' time="', '"'),
|
||||
}
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
url = self.root + "/api/creator/gallery/imagePath"
|
||||
|
||||
for params["page"], params["file_id"] in enumerate(
|
||||
data["imgList"]):
|
||||
path = self.request(url, params=params).json()["path"]
|
||||
path = self.request_json(url, params=params)["path"]
|
||||
|
||||
file = params.copy()
|
||||
file["url"] = path
|
||||
|
||||
@@ -854,8 +854,8 @@ class CivitaiSearchAPI():
|
||||
url = self.root + endpoint
|
||||
params = util.json_dumps({"queries": (query,)})
|
||||
|
||||
data = self.extractor.request(
|
||||
url, method="POST", headers=self.headers, data=params).json()
|
||||
data = self.extractor.request_json(
|
||||
url, method="POST", headers=self.headers, data=params)
|
||||
|
||||
return data["results"][0]
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ class ComicvineTagExtractor(BooruExtractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
images = self.request(url, params=params).json()["images"]
|
||||
images = self.request_json(url, params=params)["images"]
|
||||
yield from images
|
||||
|
||||
if len(images) < self.per_page:
|
||||
|
||||
@@ -61,8 +61,8 @@ class CyberdropAlbumExtractor(lolisafe.LolisafeAlbumExtractor):
|
||||
for file_id in file_ids:
|
||||
try:
|
||||
url = f"{self.root_api}/api/file/info/{file_id}"
|
||||
file = self.request(url).json()
|
||||
auth = self.request(file["auth_url"]).json()
|
||||
file = self.request_json(url)
|
||||
auth = self.request_json(file["auth_url"])
|
||||
file["url"] = auth["url"]
|
||||
except Exception as exc:
|
||||
self.log.warning("%s (%s: %s)",
|
||||
|
||||
@@ -60,13 +60,13 @@ class E621Extractor(danbooru.DanbooruExtractor):
|
||||
yield Message.Url, file["url"], post
|
||||
|
||||
def _get_notes(self, id):
|
||||
return self.request(
|
||||
f"{self.root}/notes.json?search[post_id]={id}").json()
|
||||
return self.request_json(
|
||||
f"{self.root}/notes.json?search[post_id]={id}")
|
||||
|
||||
@memcache(keyarg=1)
|
||||
def _get_pools(self, ids):
|
||||
pools = self.request(
|
||||
f"{self.root}/pools.json?search[id]={ids}").json()
|
||||
pools = self.request_json(
|
||||
f"{self.root}/pools.json?search[id]={ids}")
|
||||
for pool in pools:
|
||||
pool["name"] = pool["name"].replace("_", " ")
|
||||
return pools
|
||||
@@ -127,7 +127,7 @@ class E621PostExtractor(E621Extractor, danbooru.DanbooruPostExtractor):
|
||||
|
||||
def posts(self):
|
||||
url = f"{self.root}/posts/{self.groups[-1]}.json"
|
||||
return (self.request(url).json()["post"],)
|
||||
return (self.request_json(url)["post"],)
|
||||
|
||||
|
||||
class E621PopularExtractor(E621Extractor, danbooru.DanbooruPopularExtractor):
|
||||
|
||||
@@ -299,7 +299,7 @@ class ExhentaiGalleryExtractor(ExhentaiExtractor):
|
||||
"namespace": 1,
|
||||
}
|
||||
|
||||
data = self.request(self.api_url, method="POST", json=data).json()
|
||||
data = self.request_json(self.api_url, method="POST", json=data)
|
||||
if "error" in data:
|
||||
raise exception.StopExtraction(data["error"])
|
||||
|
||||
@@ -351,7 +351,7 @@ class ExhentaiGalleryExtractor(ExhentaiExtractor):
|
||||
}
|
||||
|
||||
for request["page"] in range(self.image_num + 1, self.count + 1):
|
||||
page = self.request(api_url, method="POST", json=request).json()
|
||||
page = self.request_json(api_url, method="POST", json=request)
|
||||
|
||||
i3 = page["i3"]
|
||||
i6 = page["i6"]
|
||||
|
||||
@@ -93,7 +93,7 @@ class FantiaExtractor(Extractor):
|
||||
def _get_post_data(self, post_id):
|
||||
"""Fetch and process post data"""
|
||||
url = self.root+"/api/v1/posts/"+post_id
|
||||
resp = self.request(url, headers=self.headers).json()["post"]
|
||||
resp = self.request_json(url, headers=self.headers)["post"]
|
||||
return {
|
||||
"post_id": resp["id"],
|
||||
"post_url": self.root + "/posts/" + str(resp["id"]),
|
||||
|
||||
@@ -159,7 +159,7 @@ class FoolfuukaThreadExtractor(FoolfuukaExtractor):
|
||||
def metadata(self):
|
||||
url = self.root + "/_/api/chan/thread/"
|
||||
params = {"board": self.board, "num": self.thread}
|
||||
self.data = self.request(url, params=params).json()[self.thread]
|
||||
self.data = self.request_json(url, params=params)[self.thread]
|
||||
return self.data["op"]
|
||||
|
||||
def posts(self):
|
||||
@@ -243,7 +243,7 @@ class FoolfuukaSearchExtractor(FoolfuukaExtractor):
|
||||
|
||||
while True:
|
||||
try:
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
except ValueError:
|
||||
return
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ class Furry34Extractor(BooruExtractor):
|
||||
|
||||
def _fetch_post(self, post_id):
|
||||
url = f"{self.root}/api/v2/post/{post_id}"
|
||||
return self.request(url).json()
|
||||
return self.request_json(url)
|
||||
|
||||
def _pagination(self, endpoint, params=None):
|
||||
url = f"{self.root}/api{endpoint}"
|
||||
@@ -86,7 +86,7 @@ class Furry34Extractor(BooruExtractor):
|
||||
threshold = self.per_page
|
||||
|
||||
while True:
|
||||
data = self.request(url, method="POST", json=params).json()
|
||||
data = self.request_json(url, method="POST", json=params)
|
||||
|
||||
yield from data["items"]
|
||||
|
||||
|
||||
@@ -39,9 +39,8 @@ class FuskatorGalleryExtractor(GalleryExtractor):
|
||||
"hash" : self.gallery_hash,
|
||||
"_" : int(time.time()),
|
||||
}
|
||||
self.data = data = self.request(
|
||||
self.root + "/ajax/gal.aspx", params=params, headers=headers,
|
||||
).json()
|
||||
self.data = data = self.request_json(
|
||||
self.root + "/ajax/gal.aspx", params=params, headers=headers)
|
||||
|
||||
title = text.extr(page, "<title>", "</title>").strip()
|
||||
title, _, gallery_id = title.rpartition("#")
|
||||
|
||||
@@ -30,7 +30,7 @@ class GelbooruBase():
|
||||
params["user_id"] = self.user_id
|
||||
|
||||
url = self.root + "/index.php?page=dapi&q=index&json=1"
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
|
||||
if not key:
|
||||
return data
|
||||
|
||||
@@ -86,10 +86,9 @@ class GofileFolderExtractor(Extractor):
|
||||
return self._api_request("contents/" + content_id, params, headers)
|
||||
|
||||
def _api_request(self, endpoint, params=None, headers=None, method="GET"):
|
||||
response = self.request(
|
||||
response = self.request_json(
|
||||
"https://api.gofile.io/" + endpoint,
|
||||
method=method, params=params, headers=headers,
|
||||
).json()
|
||||
method=method, params=params, headers=headers)
|
||||
|
||||
if response["status"] != "ok":
|
||||
if response["status"] == "error-notFound":
|
||||
|
||||
@@ -44,7 +44,7 @@ class HentaihandGalleryExtractor(GalleryExtractor):
|
||||
return data
|
||||
|
||||
def images(self, _):
|
||||
info = self.request(self.page_url + "/images").json()
|
||||
info = self.request_json(self.page_url + "/images")
|
||||
return [(img["source_url"], img) for img in info["images"]]
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ class HentaihandTagExtractor(Extractor):
|
||||
tpl = self.type + "s"
|
||||
|
||||
url = f"{self.root}/api/{tpl}/{self.key}"
|
||||
tid = self.request(url, notfound=self.type).json()["id"]
|
||||
tid = self.request_json(url, notfound=self.type)["id"]
|
||||
|
||||
url = self.root + "/api/comics"
|
||||
params = {
|
||||
@@ -82,7 +82,7 @@ class HentaihandTagExtractor(Extractor):
|
||||
"duration": "day",
|
||||
}
|
||||
while True:
|
||||
info = self.request(url, params=params).json()
|
||||
info = self.request_json(url, params=params)
|
||||
|
||||
for gallery in info["data"]:
|
||||
gurl = f"{self.root}/en/comic/{gallery['slug']}"
|
||||
|
||||
@@ -97,7 +97,7 @@ class ImagechestUserExtractor(Extractor):
|
||||
|
||||
while True:
|
||||
try:
|
||||
data = self.request(url, params=params).json()["data"]
|
||||
data = self.request_json(url, params=params)["data"]
|
||||
except (TypeError, KeyError):
|
||||
return
|
||||
|
||||
|
||||
@@ -112,7 +112,7 @@ class ImgbbExtractor(Extractor):
|
||||
params["page"] += 1
|
||||
elif not seek or 'class="pagination-next"' not in page:
|
||||
return
|
||||
data = self.request(endpoint, method="POST", data=params).json()
|
||||
data = self.request_json(endpoint, method="POST", data=params)
|
||||
page = data["html"]
|
||||
|
||||
|
||||
|
||||
@@ -293,10 +293,9 @@ class ImgurAPI():
|
||||
def _call(self, endpoint, params=None, headers=None):
|
||||
while True:
|
||||
try:
|
||||
return self.extractor.request(
|
||||
return self.extractor.request_json(
|
||||
"https://api.imgur.com" + endpoint,
|
||||
params=params, headers=(headers or self.headers),
|
||||
).json()
|
||||
params=params, headers=(headers or self.headers))
|
||||
except exception.HttpError as exc:
|
||||
if exc.status not in (403, 429) or \
|
||||
b"capacity" not in exc.response.content:
|
||||
|
||||
@@ -341,7 +341,7 @@ class InkbunnyAPI():
|
||||
|
||||
while True:
|
||||
params["sid"] = self.session_id
|
||||
data = self.extractor.request(url, params=params).json()
|
||||
data = self.extractor.request_json(url, params=params)
|
||||
|
||||
if "error_code" not in data:
|
||||
return data
|
||||
@@ -378,7 +378,7 @@ def _authenticate_impl(api, username, password):
|
||||
|
||||
url = "https://inkbunny.net/api_login.php"
|
||||
data = {"username": username, "password": password}
|
||||
data = api.extractor.request(url, method="POST", data=data).json()
|
||||
data = api.extractor.request_json(url, method="POST", data=data)
|
||||
|
||||
if "sid" not in data:
|
||||
raise exception.AuthenticationError(data.get("error_message"))
|
||||
|
||||
@@ -884,7 +884,7 @@ class InstagramRestAPI():
|
||||
"Sec-Fetch-Mode" : "cors",
|
||||
"Sec-Fetch-Site" : "same-origin",
|
||||
}
|
||||
return extr.request(url, **kwargs).json()
|
||||
return extr.request_json(url, **kwargs)
|
||||
|
||||
def _pagination(self, endpoint, params=None, media=False):
|
||||
if params is None:
|
||||
@@ -1047,7 +1047,7 @@ class InstagramGraphqlAPI():
|
||||
"X-Requested-With": "XMLHttpRequest",
|
||||
"Referer" : extr.root + "/",
|
||||
}
|
||||
return extr.request(url, params=params, headers=headers).json()["data"]
|
||||
return extr.request_json(url, params=params, headers=headers)["data"]
|
||||
|
||||
def _pagination(self, query_hash, variables,
|
||||
key_data="user", key_edge=None):
|
||||
|
||||
@@ -20,7 +20,7 @@ class ItchioGameExtractor(Extractor):
|
||||
directory_fmt = ("{category}", "{user[name]}")
|
||||
filename_fmt = "{game[title]} ({id}).{extension}"
|
||||
archive_fmt = "{id}"
|
||||
pattern = r"(?:https?://)?(\w+).itch\.io/([\w-]+)"
|
||||
pattern = r"(?:https?://)?(\w+)\.itch\.io/([\w-]+)"
|
||||
example = "https://USER.itch.io/GAME"
|
||||
|
||||
def __init__(self, match):
|
||||
@@ -47,8 +47,8 @@ class ItchioGameExtractor(Extractor):
|
||||
|
||||
for upload_id in text.extract_iter(page, 'data-upload_id="', '"'):
|
||||
file_url = f"{game_url}/file/{upload_id}"
|
||||
info = self.request(file_url, method="POST", params=params,
|
||||
headers=headers, data=data).json()
|
||||
info = self.request_json(file_url, method="POST", params=params,
|
||||
headers=headers, data=data)
|
||||
|
||||
game = info["lightbox"]["game"]
|
||||
user = info["lightbox"]["user"]
|
||||
|
||||
@@ -65,7 +65,7 @@ class KabeuchiUserExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
info = self.request(url, method="POST", data=data).json()
|
||||
info = self.request_json(url, method="POST", data=data)
|
||||
datas = info["datas"]
|
||||
|
||||
if not datas or not isinstance(datas, list):
|
||||
|
||||
@@ -54,8 +54,8 @@ class LexicaSearchExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
data = self.request(
|
||||
url, method="POST", headers=headers, json=json).json()
|
||||
data = self.request_json(
|
||||
url, method="POST", headers=headers, json=json)
|
||||
|
||||
prompts = {
|
||||
prompt["id"]: prompt
|
||||
|
||||
@@ -72,7 +72,7 @@ class LolisafeAlbumExtractor(LolisafeExtractor):
|
||||
|
||||
def fetch_album(self, album_id):
|
||||
url = f"{self.root}/api/album/get/{album_id}"
|
||||
data = self.request(url).json()
|
||||
data = self.request_json(url)
|
||||
|
||||
return data["files"], {
|
||||
"album_id" : self.album_id,
|
||||
|
||||
@@ -301,8 +301,8 @@ class MangadexAPI():
|
||||
self.extractor.log.debug("Using client-id '%s…'", self.client_id[:24])
|
||||
url = ("https://auth.mangadex.org/realms/mangadex"
|
||||
"/protocol/openid-connect/token")
|
||||
data = self.extractor.request(
|
||||
url, method="POST", data=data, fatal=None).json()
|
||||
data = self.extractor.request_json(
|
||||
url, method="POST", data=data, fatal=None)
|
||||
|
||||
try:
|
||||
access_token = data["access_token"]
|
||||
@@ -328,8 +328,8 @@ class MangadexAPI():
|
||||
json = {"username": username, "password": password}
|
||||
|
||||
self.extractor.log.debug("Using legacy login method")
|
||||
data = self.extractor.request(
|
||||
url, method="POST", json=json, fatal=None).json()
|
||||
data = self.extractor.request_json(
|
||||
url, method="POST", json=json, fatal=None)
|
||||
if data.get("result") != "ok":
|
||||
raise exception.AuthenticationError()
|
||||
|
||||
|
||||
@@ -64,8 +64,8 @@ class MangaparkBase():
|
||||
"variables" : variables,
|
||||
"operationName": opname,
|
||||
}
|
||||
return self.request(
|
||||
url, method="POST", json=data).json()["data"].popitem()[1]
|
||||
return self.request_json(
|
||||
url, method="POST", json=data)["data"].popitem()[1]
|
||||
|
||||
|
||||
class MangaparkChapterExtractor(MangaparkBase, ChapterExtractor):
|
||||
|
||||
@@ -117,7 +117,7 @@ class NaverPostExtractor(NaverBase, GalleryExtractor):
|
||||
"adt" : "glad",
|
||||
"lc" : "ko_KR",
|
||||
}
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
video = max(data["videos"]["list"],
|
||||
key=lambda v: v.get("size") or 0)
|
||||
files.append((video["source"], video))
|
||||
@@ -160,7 +160,7 @@ class NaverBlogExtractor(NaverBase, Extractor):
|
||||
|
||||
# loop over all posts
|
||||
while True:
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
|
||||
for post in data["postList"]:
|
||||
post["url"] = (f"{self.root}/PostView.nhn?blogId="
|
||||
|
||||
@@ -89,7 +89,7 @@ class NaverwebtoonComicExtractor(NaverwebtoonBase, Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
data = self.request(url, headers=headers, params=params).json()
|
||||
data = self.request_json(url, headers=headers, params=params)
|
||||
|
||||
path = data["webtoonLevelCode"].lower().replace("_c", "C", 1)
|
||||
base = f"{self.root}/{path}/detail?titleId={data['titleId']}&no="
|
||||
|
||||
@@ -296,7 +296,7 @@ class NewgroundsExtractor(Extractor):
|
||||
"Accept": "application/json, text/javascript, */*; q=0.01",
|
||||
"X-Requested-With": "XMLHttpRequest",
|
||||
}
|
||||
sources = self.request(url, headers=headers).json()["sources"]
|
||||
sources = self.request_json(url, headers=headers)["sources"]
|
||||
formats = self._video_formats(sources)
|
||||
src = next(formats, "")
|
||||
date = text.parse_timestamp(src.rpartition("?")[2])
|
||||
@@ -566,7 +566,7 @@ class NewgroundsSearchExtractor(NewgroundsExtractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
data = self.request(url, params=params, headers=headers).json()
|
||||
data = self.request_json(url, params=params, headers=headers)
|
||||
|
||||
post_url = None
|
||||
for post_url in text.extract_iter(data["content"], 'href="', '"'):
|
||||
|
||||
@@ -53,7 +53,7 @@ class NsfwalbumAlbumExtractor(GalleryExtractor):
|
||||
self.request(iframe + image_id).text,
|
||||
'giraffe.annihilate("', '"')[0])
|
||||
params = {"spirit": spirit, "photo": image_id}
|
||||
data = self.request(backend, params=params).json()
|
||||
data = self.request_json(backend, params=params)
|
||||
break
|
||||
except Exception:
|
||||
tries += 1
|
||||
|
||||
@@ -187,8 +187,8 @@ class OAuthBase(Extractor):
|
||||
data["client_id"] = client_id
|
||||
data["client_secret"] = client_secret
|
||||
|
||||
data = self.request(
|
||||
token_url, method="POST", data=data, auth=auth).json()
|
||||
data = self.request_json(
|
||||
token_url, method="POST", data=data, auth=auth)
|
||||
|
||||
# check token response
|
||||
if "error" in data:
|
||||
@@ -383,7 +383,7 @@ class OAuthMastodon(OAuthBase):
|
||||
"redirect_uris": self.redirect_uri,
|
||||
"scopes": "read",
|
||||
}
|
||||
data = self.request(url, method="POST", data=data).json()
|
||||
data = self.request_json(url, method="POST", data=data)
|
||||
|
||||
if "client_id" not in data or "client_secret" not in data:
|
||||
raise exception.StopExtraction(
|
||||
@@ -438,8 +438,8 @@ class OAuthPixiv(OAuthBase):
|
||||
"redirect_uri" : "https://app-api.pixiv.net"
|
||||
"/web/v1/users/auth/pixiv/callback",
|
||||
}
|
||||
data = self.request(
|
||||
url, method="POST", headers=headers, data=data).json()
|
||||
data = self.request_json(
|
||||
url, method="POST", headers=headers, data=data)
|
||||
|
||||
if "error" in data:
|
||||
stdout_write(f"\n{data}\n")
|
||||
|
||||
@@ -131,7 +131,7 @@ class PatreonExtractor(Extractor):
|
||||
|
||||
while url:
|
||||
url = text.ensure_http_scheme(url)
|
||||
posts = self.request(url, headers=headers).json()
|
||||
posts = self.request_json(url, headers=headers)
|
||||
|
||||
if "included" in posts:
|
||||
included = self._transform(posts["included"])
|
||||
|
||||
@@ -45,7 +45,7 @@ class PhotovogueUserExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
yield from data["items"]
|
||||
|
||||
if not data["has_next"]:
|
||||
|
||||
@@ -62,7 +62,7 @@ class PicartoGalleryExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
posts = self.request(url, params=params).json()
|
||||
posts = self.request_json(url, params=params)
|
||||
if not posts:
|
||||
return
|
||||
yield from posts
|
||||
|
||||
@@ -55,7 +55,7 @@ class PiczelExtractor(Extractor):
|
||||
params = {"page": pnum}
|
||||
|
||||
while True:
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
|
||||
yield from data["data"]
|
||||
|
||||
@@ -96,4 +96,4 @@ class PiczelImageExtractor(PiczelExtractor):
|
||||
|
||||
def posts(self):
|
||||
url = f"{self.root_api}/api/gallery/{self.groups[0]}"
|
||||
return (self.request(url).json(),)
|
||||
return (self.request_json(url),)
|
||||
|
||||
@@ -126,7 +126,7 @@ class PillowfortPostExtractor(PillowfortExtractor):
|
||||
|
||||
def posts(self):
|
||||
url = f"{self.root}/posts/{self.item}/json/"
|
||||
return (self.request(url).json(),)
|
||||
return (self.request_json(url),)
|
||||
|
||||
|
||||
class PillowfortUserExtractor(PillowfortExtractor):
|
||||
@@ -140,7 +140,7 @@ class PillowfortUserExtractor(PillowfortExtractor):
|
||||
params = {"p": 1}
|
||||
|
||||
while True:
|
||||
posts = self.request(url, params=params).json()["posts"]
|
||||
posts = self.request_json(url, params=params)["posts"]
|
||||
yield from posts
|
||||
|
||||
if len(posts) < 20:
|
||||
|
||||
@@ -43,7 +43,7 @@ class PixeldrainFileExtractor(PixeldrainExtractor):
|
||||
|
||||
def items(self):
|
||||
url = f"{self.root}/api/file/{self.file_id}"
|
||||
file = self.request(url + "/info").json()
|
||||
file = self.request_json(url + "/info")
|
||||
|
||||
file["url"] = url + "?download"
|
||||
file["date"] = self.parse_datetime(file["date_upload"])
|
||||
@@ -69,7 +69,7 @@ class PixeldrainAlbumExtractor(PixeldrainExtractor):
|
||||
|
||||
def items(self):
|
||||
url = f"{self.root}/api/list/{self.album_id}"
|
||||
album = self.request(url).json()
|
||||
album = self.request_json(url)
|
||||
|
||||
files = album["files"]
|
||||
album["count"] = album["file_count"]
|
||||
@@ -120,7 +120,7 @@ class PixeldrainFolderExtractor(PixeldrainExtractor):
|
||||
recursive = self.config("recursive")
|
||||
|
||||
url = f"{self.root}/api/filesystem/{self.groups[0]}"
|
||||
stat = self.request(url + "?stat").json()
|
||||
stat = self.request_json(url + "?stat")
|
||||
|
||||
paths = stat["path"]
|
||||
path = paths[stat["base_index"]]
|
||||
|
||||
@@ -233,7 +233,7 @@ class PixivExtractor(Extractor):
|
||||
def _request_ajax(self, endpoint):
|
||||
url = f"{self.root}/ajax{endpoint}"
|
||||
try:
|
||||
return self.request(url, headers=self.headers_web).json()["body"]
|
||||
return self.request_json(url, headers=self.headers_web)["body"]
|
||||
except Exception:
|
||||
return None
|
||||
|
||||
@@ -1075,7 +1075,7 @@ class PixivSketchExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
data = self.request(url, headers=headers).json()
|
||||
data = self.request_json(url, headers=headers)
|
||||
yield from data["data"]["items"]
|
||||
|
||||
next_url = data["_links"].get("next")
|
||||
|
||||
@@ -77,7 +77,7 @@ class PixnetImageExtractor(PixnetExtractor):
|
||||
"format": "json",
|
||||
}
|
||||
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
data["id"] = text.parse_int(
|
||||
data["url"].rpartition("/")[2].partition("-")[0])
|
||||
data["filename"], _, data["extension"] = data["title"].rpartition(".")
|
||||
|
||||
@@ -49,8 +49,8 @@ class PlurkExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
info = self.request(
|
||||
url, method="POST", headers=headers, data=data).json()
|
||||
info = self.request_json(
|
||||
url, method="POST", headers=headers, data=data)
|
||||
yield from info["responses"]
|
||||
if not info["has_newer"]:
|
||||
return
|
||||
|
||||
@@ -85,8 +85,8 @@ class PoipikuExtractor(Extractor):
|
||||
"MD" : "0",
|
||||
"TWF": "-1",
|
||||
}
|
||||
resp = self.request(
|
||||
url, method="POST", headers=headers, data=data).json()
|
||||
resp = self.request_json(
|
||||
url, method="POST", headers=headers, data=data)
|
||||
|
||||
page = resp["html"]
|
||||
if (resp.get("result_num") or 0) < 0:
|
||||
|
||||
@@ -47,8 +47,8 @@ class PornpicsExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
galleries = self.request(
|
||||
url, params=params, headers=headers).json()
|
||||
galleries = self.request_json(
|
||||
url, params=params, headers=headers)
|
||||
yield from galleries
|
||||
|
||||
if len(galleries) < limit:
|
||||
|
||||
@@ -256,8 +256,8 @@ class RedgifsAPI():
|
||||
def _call(self, endpoint, params=None):
|
||||
url = self.API_ROOT + endpoint
|
||||
self.headers["Authorization"] = self._auth()
|
||||
return self.extractor.request(
|
||||
url, params=params, headers=self.headers).json()
|
||||
return self.extractor.request_json(
|
||||
url, params=params, headers=self.headers)
|
||||
|
||||
def _pagination(self, endpoint, params=None, key="gifs"):
|
||||
if params is None:
|
||||
@@ -277,5 +277,5 @@ class RedgifsAPI():
|
||||
# https://github.com/Redgifs/api/wiki/Temporary-tokens
|
||||
url = self.API_ROOT + "/v2/auth/temporary"
|
||||
self.headers["Authorization"] = None
|
||||
return "Bearer " + self.extractor.request(
|
||||
url, headers=self.headers).json()["token"]
|
||||
return "Bearer " + self.extractor.request_json(
|
||||
url, headers=self.headers)["token"]
|
||||
|
||||
@@ -54,7 +54,7 @@ class Rule34vaultExtractor(BooruExtractor):
|
||||
|
||||
def _fetch_post(self, post_id):
|
||||
url = f"{self.root}/api/v2/post/{post_id}"
|
||||
return self.request(url).json()
|
||||
return self.request_json(url)
|
||||
|
||||
def _pagination(self, endpoint, params=None):
|
||||
url = f"{self.root}/api{endpoint}"
|
||||
@@ -67,7 +67,7 @@ class Rule34vaultExtractor(BooruExtractor):
|
||||
threshold = self.per_page
|
||||
|
||||
while True:
|
||||
data = self.request(url, method="POST", json=params).json()
|
||||
data = self.request_json(url, method="POST", json=params)
|
||||
|
||||
yield from data["items"]
|
||||
|
||||
|
||||
@@ -88,7 +88,7 @@ class Rule34xyzExtractor(BooruExtractor):
|
||||
|
||||
def _fetch_post(self, post_id):
|
||||
url = f"{self.root}/api/v2/post/{post_id}"
|
||||
return self.request(url).json()
|
||||
return self.request_json(url)
|
||||
|
||||
def _pagination(self, endpoint, params=None):
|
||||
url = f"{self.root}/api{endpoint}"
|
||||
@@ -103,7 +103,7 @@ class Rule34xyzExtractor(BooruExtractor):
|
||||
threshold = self.per_page
|
||||
|
||||
while True:
|
||||
data = self.request(url, method="POST", json=params).json()
|
||||
data = self.request_json(url, method="POST", json=params)
|
||||
|
||||
yield from data["items"]
|
||||
|
||||
|
||||
@@ -40,8 +40,8 @@ class SchalenetworkExtractor(Extractor):
|
||||
url_api = self.root_api + endpoint
|
||||
|
||||
while True:
|
||||
data = self.request(
|
||||
url_api, params=params, headers=self.headers).json()
|
||||
data = self.request_json(
|
||||
url_api, params=params, headers=self.headers)
|
||||
|
||||
try:
|
||||
entries = data["entries"]
|
||||
@@ -106,7 +106,7 @@ class SchalenetworkGalleryExtractor(SchalenetworkExtractor, GalleryExtractor):
|
||||
|
||||
def metadata(self, _):
|
||||
url = f"{self.root_api}/books/detail/{self.groups[1]}/{self.groups[2]}"
|
||||
self.data = data = self.request(url, headers=self.headers).json()
|
||||
self.data = data = self.request_json(url, headers=self.headers)
|
||||
data["date"] = text.parse_timestamp(data["created_at"] // 1000)
|
||||
|
||||
tags = []
|
||||
@@ -149,16 +149,16 @@ class SchalenetworkGalleryExtractor(SchalenetworkExtractor, GalleryExtractor):
|
||||
|
||||
if self.cbz:
|
||||
params["action"] = "dl"
|
||||
base = self.request(
|
||||
base = self.request_json(
|
||||
url, method="POST", params=params, headers=self.headers,
|
||||
).json()["base"]
|
||||
)["base"]
|
||||
url = f"{base}?v={data['updated_at']}&w={fmt['w']}"
|
||||
info = text.nameext_from_url(base)
|
||||
if not info["extension"]:
|
||||
info["extension"] = "cbz"
|
||||
return ((url, info),)
|
||||
|
||||
data = self.request(url, params=params, headers=self.headers).json()
|
||||
data = self.request_json(url, params=params, headers=self.headers)
|
||||
base = data["base"]
|
||||
|
||||
results = []
|
||||
|
||||
@@ -110,9 +110,9 @@ class ScrolllerExtractor(Extractor):
|
||||
url = "https://api.scrolller.com/api/v2/graphql"
|
||||
headers["Content-Type"] = "text/plain;charset=UTF-8"
|
||||
|
||||
return self.request(
|
||||
return self.request_json(
|
||||
url, method="POST", headers=headers, data=util.json_dumps(data),
|
||||
).json()["data"]
|
||||
)["data"]
|
||||
|
||||
def _pagination(self, opname, variables, data=None):
|
||||
if data is None:
|
||||
|
||||
@@ -57,7 +57,7 @@ class SimplyhentaiGalleryExtractor(GalleryExtractor):
|
||||
def images(self, _):
|
||||
url = self.page_url + "/all-pages"
|
||||
headers = {"Accept": "application/json"}
|
||||
images = self.request(url, headers=headers).json()
|
||||
images = self.request_json(url, headers=headers)
|
||||
return [
|
||||
(
|
||||
urls["full"].replace("/giant_thumb_", "/"),
|
||||
|
||||
@@ -81,8 +81,8 @@ class SkebExtractor(Extractor):
|
||||
params["offset"] = 0
|
||||
|
||||
while True:
|
||||
posts = self.request(
|
||||
url, params=params, headers=self.headers).json()
|
||||
posts = self.request_json(
|
||||
url, params=params, headers=self.headers)
|
||||
|
||||
for post in posts:
|
||||
parts = post["path"].split("/")
|
||||
@@ -105,8 +105,8 @@ class SkebExtractor(Extractor):
|
||||
params["limit"] = 90
|
||||
|
||||
while True:
|
||||
data = self.request(
|
||||
url, params=params, headers=self.headers).json()
|
||||
data = self.request_json(
|
||||
url, params=params, headers=self.headers)
|
||||
yield from data
|
||||
|
||||
if len(data) < params["limit"]:
|
||||
@@ -115,7 +115,7 @@ class SkebExtractor(Extractor):
|
||||
|
||||
def _get_post_data(self, user_name, post_num):
|
||||
url = f"{self.root}/api/users/{user_name}/works/{post_num}"
|
||||
resp = self.request(url, headers=self.headers).json()
|
||||
resp = self.request_json(url, headers=self.headers)
|
||||
creator = resp["creator"]
|
||||
post = {
|
||||
"post_id" : resp["id"],
|
||||
@@ -265,9 +265,9 @@ class SkebSearchExtractor(SkebExtractor):
|
||||
data = {"requests": (request,)}
|
||||
|
||||
while True:
|
||||
result = self.request(
|
||||
result = self.request_json(
|
||||
url, method="POST", params=params, headers=headers, json=data,
|
||||
).json()["results"][0]
|
||||
)["results"][0]
|
||||
|
||||
for post in result["hits"]:
|
||||
parts = post["path"].split("/")
|
||||
|
||||
@@ -105,7 +105,7 @@ class SlickpicAlbumExtractor(SlickpicExtractor):
|
||||
"sng" : "0",
|
||||
"whq" : "1",
|
||||
}
|
||||
return self.request(url, method="POST", data=data).json()["list"]
|
||||
return self.request_json(url, method="POST", data=data)["list"]
|
||||
|
||||
|
||||
class SlickpicUserExtractor(SlickpicExtractor):
|
||||
|
||||
@@ -30,7 +30,7 @@ class SpeakerdeckPresentationExtractor(GalleryExtractor):
|
||||
params = {
|
||||
"url": f"{self.root}/{user}/{presentation}",
|
||||
}
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
|
||||
self.presentation_id = text.extr(
|
||||
data["html"], 'src="//speakerdeck.com/player/', '"')
|
||||
|
||||
@@ -72,7 +72,7 @@ class SteamgriddbExtractor(Extractor):
|
||||
yield Message.Url, url, text.nameext_from_url(url, asset)
|
||||
|
||||
def _call(self, endpoint, **kwargs):
|
||||
data = self.request(self.root + endpoint, **kwargs).json()
|
||||
data = self.request_json(self.root + endpoint, **kwargs)
|
||||
if not data["success"]:
|
||||
raise exception.StopExtraction(data["error"])
|
||||
return data["data"]
|
||||
|
||||
@@ -233,7 +233,7 @@ class SubscribestarUserExtractor(SubscribestarExtractor):
|
||||
url = text.extr(posts[-1], needle_next_page, '"')
|
||||
if not url:
|
||||
return
|
||||
page = self.request(self.root + text.unescape(url)).json()["html"]
|
||||
page = self.request_json(self.root + text.unescape(url))["html"]
|
||||
|
||||
|
||||
class SubscribestarPostExtractor(SubscribestarExtractor):
|
||||
|
||||
@@ -36,7 +36,7 @@ class SzurubooruExtractor(booru.BooruExtractor):
|
||||
|
||||
def _api_request(self, endpoint, params=None):
|
||||
url = self.root + "/api" + endpoint
|
||||
return self.request(url, headers=self.headers, params=params).json()
|
||||
return self.request_json(url, headers=self.headers, params=params)
|
||||
|
||||
def _pagination(self, endpoint, params):
|
||||
params["offset"] = 0
|
||||
|
||||
@@ -67,7 +67,7 @@ class TapasExtractor(Extractor):
|
||||
|
||||
def request_api(self, url, params=None):
|
||||
headers = {"Accept": "application/json, text/javascript, */*;"}
|
||||
return self.request(url, params=params, headers=headers).json()["data"]
|
||||
return self.request_json(url, params=params, headers=headers)["data"]
|
||||
|
||||
|
||||
class TapasEpisodeExtractor(TapasExtractor):
|
||||
|
||||
@@ -137,8 +137,8 @@ class TsuminoSearchExtractor(TsuminoBase, Extractor):
|
||||
data.update(self._parse(self.query))
|
||||
|
||||
while True:
|
||||
info = self.request(
|
||||
url, method="POST", headers=headers, data=data).json()
|
||||
info = self.request_json(
|
||||
url, method="POST", headers=headers, data=data)
|
||||
|
||||
for gallery in info["data"]:
|
||||
yield gallery["entry"]
|
||||
|
||||
@@ -61,7 +61,7 @@ class UnsplashExtractor(Extractor):
|
||||
params["page"] = self.page_start
|
||||
|
||||
while True:
|
||||
photos = self.request(url, params=params).json()
|
||||
photos = self.request_json(url, params=params)
|
||||
if results:
|
||||
photos = photos["results"]
|
||||
yield from photos
|
||||
@@ -79,7 +79,7 @@ class UnsplashImageExtractor(UnsplashExtractor):
|
||||
|
||||
def photos(self):
|
||||
url = f"{self.root}/napi/photos/{self.item}"
|
||||
return (self.request(url).json(),)
|
||||
return (self.request_json(url),)
|
||||
|
||||
|
||||
class UnsplashUserExtractor(UnsplashExtractor):
|
||||
|
||||
@@ -93,7 +93,7 @@ class VscoExtractor(Extractor):
|
||||
yield from map(self._transform_media, extra)
|
||||
|
||||
while True:
|
||||
data = self.request(url, params=params, headers=headers).json()
|
||||
data = self.request_json(url, params=params, headers=headers)
|
||||
medias = data.get(key)
|
||||
if not medias:
|
||||
return
|
||||
@@ -238,7 +238,7 @@ class VscoSpaceExtractor(VscoExtractor):
|
||||
return
|
||||
params["cursor"] = cursor["postcursorcontext"]["postId"]
|
||||
|
||||
data = self.request(url, params=params, headers=headers).json()
|
||||
data = self.request_json(url, params=params, headers=headers)
|
||||
|
||||
|
||||
class VscoSpacesExtractor(VscoExtractor):
|
||||
@@ -262,7 +262,7 @@ class VscoSpacesExtractor(VscoExtractor):
|
||||
}
|
||||
# this would theoretically need to be paginated
|
||||
url = f"{self.root}/grpc/spaces/user/{uid}"
|
||||
data = self.request(url, headers=headers).json()
|
||||
data = self.request_json(url, headers=headers)
|
||||
|
||||
for space in data["spacesWithRoleList"]:
|
||||
space = space["space"]
|
||||
|
||||
@@ -34,12 +34,12 @@ class WeasylExtractor(Extractor):
|
||||
self.session.headers['X-Weasyl-API-Key'] = self.config("api-key")
|
||||
|
||||
def request_submission(self, submitid):
|
||||
return self.request(
|
||||
f"{self.root}/api/submissions/{submitid}/view").json()
|
||||
return self.request_json(
|
||||
f"{self.root}/api/submissions/{submitid}/view")
|
||||
|
||||
def retrieve_journal(self, journalid):
|
||||
data = self.request(
|
||||
f"{self.root}/api/journals/{journalid}/view").json()
|
||||
data = self.request_json(
|
||||
f"{self.root}/api/journals/{journalid}/view")
|
||||
data["extension"] = "html"
|
||||
data["html"] = "text:" + data["content"]
|
||||
data["date"] = text.parse_datetime(data["posted_at"])
|
||||
@@ -54,7 +54,7 @@ class WeasylExtractor(Extractor):
|
||||
}
|
||||
|
||||
while True:
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
for submission in data["submissions"]:
|
||||
if metadata:
|
||||
submission = self.request_submission(
|
||||
|
||||
@@ -152,7 +152,7 @@ class WeiboExtractor(Extractor):
|
||||
|
||||
def _status_by_id(self, status_id):
|
||||
url = f"{self.root}/ajax/statuses/show?id={status_id}"
|
||||
return self.request(url).json()
|
||||
return self.request_json(url)
|
||||
|
||||
def _user_id(self):
|
||||
if len(self.user) >= 10 and self.user.isdecimal():
|
||||
@@ -161,7 +161,7 @@ class WeiboExtractor(Extractor):
|
||||
url = (f"{self.root}/ajax/profile/info?"
|
||||
f"{'screen_name' if self._prefix == 'n' else 'custom'}="
|
||||
f"{self.user}")
|
||||
return self.request(url).json()["data"]["user"]["idstr"]
|
||||
return self.request_json(url)["data"]["user"]["idstr"]
|
||||
|
||||
def _pagination(self, endpoint, params):
|
||||
url = self.root + "/ajax" + endpoint
|
||||
|
||||
@@ -54,7 +54,7 @@ class WikiartExtractor(Extractor):
|
||||
params.update(extra_params)
|
||||
|
||||
while True:
|
||||
data = self.request(url, headers=headers, params=params).json()
|
||||
data = self.request_json(url, headers=headers, params=params)
|
||||
items = data.get(key)
|
||||
if not items:
|
||||
return
|
||||
@@ -78,7 +78,7 @@ class WikiartArtistExtractor(WikiartExtractor):
|
||||
|
||||
def metadata(self):
|
||||
url = f"{self.root}/{self.lang}/{self.artist_name}?json=2"
|
||||
self.artist = self.request(url).json()
|
||||
self.artist = self.request_json(url)
|
||||
return {"artist": self.artist}
|
||||
|
||||
def paintings(self):
|
||||
|
||||
@@ -107,7 +107,7 @@ class WikimediaExtractor(BaseExtractor):
|
||||
)
|
||||
|
||||
while True:
|
||||
data = self.request(url, params=params).json()
|
||||
data = self.request_json(url, params=params)
|
||||
|
||||
# ref: https://www.mediawiki.org/wiki/API:Errors_and_warnings
|
||||
error = data.get("error")
|
||||
|
||||
@@ -74,7 +74,7 @@ class YiffverseExtractor(BooruExtractor):
|
||||
|
||||
def _fetch_post(self, post_id):
|
||||
url = f"{self.root}/api/v2/post/{post_id}"
|
||||
return self.request(url).json()
|
||||
return self.request_json(url)
|
||||
|
||||
def _pagination(self, endpoint, params=None):
|
||||
url = f"{self.root}/api{endpoint}"
|
||||
@@ -87,7 +87,7 @@ class YiffverseExtractor(BooruExtractor):
|
||||
threshold = self.per_page
|
||||
|
||||
while True:
|
||||
data = self.request(url, method="POST", json=params).json()
|
||||
data = self.request_json(url, method="POST", json=params)
|
||||
|
||||
yield from data["items"]
|
||||
|
||||
|
||||
Reference in New Issue
Block a user