diff --git a/gallery_dl/extractor/2ch.py b/gallery_dl/extractor/2ch.py
index 4e9a13fe..e2903f9d 100644
--- a/gallery_dl/extractor/2ch.py
+++ b/gallery_dl/extractor/2ch.py
@@ -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"
diff --git a/gallery_dl/extractor/35photo.py b/gallery_dl/extractor/35photo.py
index 2eeb5041..ec5f0cb6 100644
--- a/gallery_dl/extractor/35photo.py
+++ b/gallery_dl/extractor/35photo.py
@@ -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"],
diff --git a/gallery_dl/extractor/4chan.py b/gallery_dl/extractor/4chan.py
index 1ab6b963..dcc42227 100644
--- a/gallery_dl/extractor/4chan.py
+++ b/gallery_dl/extractor/4chan.py
@@ -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"]:
diff --git a/gallery_dl/extractor/500px.py b/gallery_dl/extractor/500px.py
index 967b5a8b..d1ac5034 100644
--- a/gallery_dl/extractor/500px.py
+++ b/gallery_dl/extractor/500px.py
@@ -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):
diff --git a/gallery_dl/extractor/8chan.py b/gallery_dl/extractor/8chan.py
index 29b4a4a8..03850676 100644
--- a/gallery_dl/extractor/8chan.py
+++ b/gallery_dl/extractor/8chan.py
@@ -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"]
diff --git a/gallery_dl/extractor/artstation.py b/gallery_dl/extractor/artstation.py
index 42e2c4e8..6cd24e54 100644
--- a/gallery_dl/extractor/artstation.py
+++ b/gallery_dl/extractor/artstation.py
@@ -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}
diff --git a/gallery_dl/extractor/behance.py b/gallery_dl/extractor/behance.py
index 3426f2aa..8ab7fc4a 100644
--- a/gallery_dl/extractor/behance.py
+++ b/gallery_dl/extractor/behance.py
@@ -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
diff --git a/gallery_dl/extractor/bilibili.py b/gallery_dl/extractor/bilibili.py
index c38d7eec..95bf36a2 100644
--- a/gallery_dl/extractor/bilibili.py
+++ b/gallery_dl/extractor/bilibili.py
@@ -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)
diff --git a/gallery_dl/extractor/bluesky.py b/gallery_dl/extractor/bluesky.py
index fb32df3c..2de8dd63 100644
--- a/gallery_dl/extractor/bluesky.py
+++ b/gallery_dl/extractor/bluesky.py
@@ -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"]
diff --git a/gallery_dl/extractor/bunkr.py b/gallery_dl/extractor/bunkr.py
index c084deed..da036387 100644
--- a/gallery_dl/extractor/bunkr.py
+++ b/gallery_dl/extractor/bunkr.py
@@ -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}"
diff --git a/gallery_dl/extractor/cien.py b/gallery_dl/extractor/cien.py
index ea864121..7dfe6b67 100644
--- a/gallery_dl/extractor/cien.py
+++ b/gallery_dl/extractor/cien.py
@@ -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
diff --git a/gallery_dl/extractor/civitai.py b/gallery_dl/extractor/civitai.py
index a12d058a..cb2667d5 100644
--- a/gallery_dl/extractor/civitai.py
+++ b/gallery_dl/extractor/civitai.py
@@ -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]
diff --git a/gallery_dl/extractor/comicvine.py b/gallery_dl/extractor/comicvine.py
index e24943fa..39397b9f 100644
--- a/gallery_dl/extractor/comicvine.py
+++ b/gallery_dl/extractor/comicvine.py
@@ -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:
diff --git a/gallery_dl/extractor/cyberdrop.py b/gallery_dl/extractor/cyberdrop.py
index a547c4c5..b3944f78 100644
--- a/gallery_dl/extractor/cyberdrop.py
+++ b/gallery_dl/extractor/cyberdrop.py
@@ -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)",
diff --git a/gallery_dl/extractor/e621.py b/gallery_dl/extractor/e621.py
index 8b7e17b7..1a5d8374 100644
--- a/gallery_dl/extractor/e621.py
+++ b/gallery_dl/extractor/e621.py
@@ -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):
diff --git a/gallery_dl/extractor/exhentai.py b/gallery_dl/extractor/exhentai.py
index 63317c48..81c1de12 100644
--- a/gallery_dl/extractor/exhentai.py
+++ b/gallery_dl/extractor/exhentai.py
@@ -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"]
diff --git a/gallery_dl/extractor/fantia.py b/gallery_dl/extractor/fantia.py
index 9a2b2146..e32a86b1 100644
--- a/gallery_dl/extractor/fantia.py
+++ b/gallery_dl/extractor/fantia.py
@@ -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"]),
diff --git a/gallery_dl/extractor/foolfuuka.py b/gallery_dl/extractor/foolfuuka.py
index cfbb4d7a..97c2bd2a 100644
--- a/gallery_dl/extractor/foolfuuka.py
+++ b/gallery_dl/extractor/foolfuuka.py
@@ -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
diff --git a/gallery_dl/extractor/furry34.py b/gallery_dl/extractor/furry34.py
index 92307b36..a93ec752 100644
--- a/gallery_dl/extractor/furry34.py
+++ b/gallery_dl/extractor/furry34.py
@@ -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"]
diff --git a/gallery_dl/extractor/fuskator.py b/gallery_dl/extractor/fuskator.py
index a34e4399..b7cf0c8a 100644
--- a/gallery_dl/extractor/fuskator.py
+++ b/gallery_dl/extractor/fuskator.py
@@ -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, "
", "").strip()
title, _, gallery_id = title.rpartition("#")
diff --git a/gallery_dl/extractor/gelbooru.py b/gallery_dl/extractor/gelbooru.py
index b4a2d011..4cde1da4 100644
--- a/gallery_dl/extractor/gelbooru.py
+++ b/gallery_dl/extractor/gelbooru.py
@@ -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
diff --git a/gallery_dl/extractor/gofile.py b/gallery_dl/extractor/gofile.py
index 5d23925e..a1c49852 100644
--- a/gallery_dl/extractor/gofile.py
+++ b/gallery_dl/extractor/gofile.py
@@ -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":
diff --git a/gallery_dl/extractor/hentaihand.py b/gallery_dl/extractor/hentaihand.py
index 67121696..f4f9d861 100644
--- a/gallery_dl/extractor/hentaihand.py
+++ b/gallery_dl/extractor/hentaihand.py
@@ -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']}"
diff --git a/gallery_dl/extractor/imagechest.py b/gallery_dl/extractor/imagechest.py
index 4ebad882..3a94640e 100644
--- a/gallery_dl/extractor/imagechest.py
+++ b/gallery_dl/extractor/imagechest.py
@@ -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
diff --git a/gallery_dl/extractor/imgbb.py b/gallery_dl/extractor/imgbb.py
index fd6b0554..e6abdeb9 100644
--- a/gallery_dl/extractor/imgbb.py
+++ b/gallery_dl/extractor/imgbb.py
@@ -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"]
diff --git a/gallery_dl/extractor/imgur.py b/gallery_dl/extractor/imgur.py
index 88578b07..1ac76e0b 100644
--- a/gallery_dl/extractor/imgur.py
+++ b/gallery_dl/extractor/imgur.py
@@ -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:
diff --git a/gallery_dl/extractor/inkbunny.py b/gallery_dl/extractor/inkbunny.py
index e92fef4d..be562a43 100644
--- a/gallery_dl/extractor/inkbunny.py
+++ b/gallery_dl/extractor/inkbunny.py
@@ -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"))
diff --git a/gallery_dl/extractor/instagram.py b/gallery_dl/extractor/instagram.py
index 243133e3..e7a495ee 100644
--- a/gallery_dl/extractor/instagram.py
+++ b/gallery_dl/extractor/instagram.py
@@ -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):
diff --git a/gallery_dl/extractor/itchio.py b/gallery_dl/extractor/itchio.py
index 2c2fd725..6312e58a 100644
--- a/gallery_dl/extractor/itchio.py
+++ b/gallery_dl/extractor/itchio.py
@@ -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"]
diff --git a/gallery_dl/extractor/kabeuchi.py b/gallery_dl/extractor/kabeuchi.py
index 9c1e4352..c259c473 100644
--- a/gallery_dl/extractor/kabeuchi.py
+++ b/gallery_dl/extractor/kabeuchi.py
@@ -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):
diff --git a/gallery_dl/extractor/lexica.py b/gallery_dl/extractor/lexica.py
index 00a4dac2..6e548478 100644
--- a/gallery_dl/extractor/lexica.py
+++ b/gallery_dl/extractor/lexica.py
@@ -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
diff --git a/gallery_dl/extractor/lolisafe.py b/gallery_dl/extractor/lolisafe.py
index 6b888468..52330332 100644
--- a/gallery_dl/extractor/lolisafe.py
+++ b/gallery_dl/extractor/lolisafe.py
@@ -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,
diff --git a/gallery_dl/extractor/mangadex.py b/gallery_dl/extractor/mangadex.py
index 4392b209..10616844 100644
--- a/gallery_dl/extractor/mangadex.py
+++ b/gallery_dl/extractor/mangadex.py
@@ -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()
diff --git a/gallery_dl/extractor/mangapark.py b/gallery_dl/extractor/mangapark.py
index cc78ae5d..76d59368 100644
--- a/gallery_dl/extractor/mangapark.py
+++ b/gallery_dl/extractor/mangapark.py
@@ -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):
diff --git a/gallery_dl/extractor/naver.py b/gallery_dl/extractor/naver.py
index 9ca0369e..2758ae44 100644
--- a/gallery_dl/extractor/naver.py
+++ b/gallery_dl/extractor/naver.py
@@ -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="
diff --git a/gallery_dl/extractor/naverwebtoon.py b/gallery_dl/extractor/naverwebtoon.py
index f70516cc..237692de 100644
--- a/gallery_dl/extractor/naverwebtoon.py
+++ b/gallery_dl/extractor/naverwebtoon.py
@@ -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="
diff --git a/gallery_dl/extractor/newgrounds.py b/gallery_dl/extractor/newgrounds.py
index e8228ed7..63782c63 100644
--- a/gallery_dl/extractor/newgrounds.py
+++ b/gallery_dl/extractor/newgrounds.py
@@ -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="', '"'):
diff --git a/gallery_dl/extractor/nsfwalbum.py b/gallery_dl/extractor/nsfwalbum.py
index 0e66d1f4..0b84f9cc 100644
--- a/gallery_dl/extractor/nsfwalbum.py
+++ b/gallery_dl/extractor/nsfwalbum.py
@@ -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
diff --git a/gallery_dl/extractor/oauth.py b/gallery_dl/extractor/oauth.py
index 2d20f689..b7848dc2 100644
--- a/gallery_dl/extractor/oauth.py
+++ b/gallery_dl/extractor/oauth.py
@@ -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")
diff --git a/gallery_dl/extractor/patreon.py b/gallery_dl/extractor/patreon.py
index c9d71895..83277387 100644
--- a/gallery_dl/extractor/patreon.py
+++ b/gallery_dl/extractor/patreon.py
@@ -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"])
diff --git a/gallery_dl/extractor/photovogue.py b/gallery_dl/extractor/photovogue.py
index bc6c43ae..e6043044 100644
--- a/gallery_dl/extractor/photovogue.py
+++ b/gallery_dl/extractor/photovogue.py
@@ -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"]:
diff --git a/gallery_dl/extractor/picarto.py b/gallery_dl/extractor/picarto.py
index ba3ae627..62ac38ac 100644
--- a/gallery_dl/extractor/picarto.py
+++ b/gallery_dl/extractor/picarto.py
@@ -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
diff --git a/gallery_dl/extractor/piczel.py b/gallery_dl/extractor/piczel.py
index b5ba4573..968776b4 100644
--- a/gallery_dl/extractor/piczel.py
+++ b/gallery_dl/extractor/piczel.py
@@ -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),)
diff --git a/gallery_dl/extractor/pillowfort.py b/gallery_dl/extractor/pillowfort.py
index 9944b661..05bc8e7f 100644
--- a/gallery_dl/extractor/pillowfort.py
+++ b/gallery_dl/extractor/pillowfort.py
@@ -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:
diff --git a/gallery_dl/extractor/pixeldrain.py b/gallery_dl/extractor/pixeldrain.py
index 03886bb0..4e76f2ee 100644
--- a/gallery_dl/extractor/pixeldrain.py
+++ b/gallery_dl/extractor/pixeldrain.py
@@ -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"]]
diff --git a/gallery_dl/extractor/pixiv.py b/gallery_dl/extractor/pixiv.py
index 902910a6..af34bdd5 100644
--- a/gallery_dl/extractor/pixiv.py
+++ b/gallery_dl/extractor/pixiv.py
@@ -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")
diff --git a/gallery_dl/extractor/pixnet.py b/gallery_dl/extractor/pixnet.py
index 1fd98cc1..66b7e914 100644
--- a/gallery_dl/extractor/pixnet.py
+++ b/gallery_dl/extractor/pixnet.py
@@ -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(".")
diff --git a/gallery_dl/extractor/plurk.py b/gallery_dl/extractor/plurk.py
index 8a09860b..37b9b100 100644
--- a/gallery_dl/extractor/plurk.py
+++ b/gallery_dl/extractor/plurk.py
@@ -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
diff --git a/gallery_dl/extractor/poipiku.py b/gallery_dl/extractor/poipiku.py
index 974b6e84..957e3164 100644
--- a/gallery_dl/extractor/poipiku.py
+++ b/gallery_dl/extractor/poipiku.py
@@ -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:
diff --git a/gallery_dl/extractor/pornpics.py b/gallery_dl/extractor/pornpics.py
index 6f61a2e3..34a0111e 100644
--- a/gallery_dl/extractor/pornpics.py
+++ b/gallery_dl/extractor/pornpics.py
@@ -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:
diff --git a/gallery_dl/extractor/redgifs.py b/gallery_dl/extractor/redgifs.py
index f74d1b6a..07fe0ae9 100644
--- a/gallery_dl/extractor/redgifs.py
+++ b/gallery_dl/extractor/redgifs.py
@@ -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"]
diff --git a/gallery_dl/extractor/rule34vault.py b/gallery_dl/extractor/rule34vault.py
index 69f440e4..14d5aefa 100644
--- a/gallery_dl/extractor/rule34vault.py
+++ b/gallery_dl/extractor/rule34vault.py
@@ -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"]
diff --git a/gallery_dl/extractor/rule34xyz.py b/gallery_dl/extractor/rule34xyz.py
index 7011b61e..d63f9cc8 100644
--- a/gallery_dl/extractor/rule34xyz.py
+++ b/gallery_dl/extractor/rule34xyz.py
@@ -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"]
diff --git a/gallery_dl/extractor/schalenetwork.py b/gallery_dl/extractor/schalenetwork.py
index 49a7d364..d5172870 100644
--- a/gallery_dl/extractor/schalenetwork.py
+++ b/gallery_dl/extractor/schalenetwork.py
@@ -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 = []
diff --git a/gallery_dl/extractor/scrolller.py b/gallery_dl/extractor/scrolller.py
index c2810db2..40f047a5 100644
--- a/gallery_dl/extractor/scrolller.py
+++ b/gallery_dl/extractor/scrolller.py
@@ -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:
diff --git a/gallery_dl/extractor/simplyhentai.py b/gallery_dl/extractor/simplyhentai.py
index 87a971f2..a7393561 100644
--- a/gallery_dl/extractor/simplyhentai.py
+++ b/gallery_dl/extractor/simplyhentai.py
@@ -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_", "/"),
diff --git a/gallery_dl/extractor/skeb.py b/gallery_dl/extractor/skeb.py
index cd0c47a6..e5c7f41c 100644
--- a/gallery_dl/extractor/skeb.py
+++ b/gallery_dl/extractor/skeb.py
@@ -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("/")
diff --git a/gallery_dl/extractor/slickpic.py b/gallery_dl/extractor/slickpic.py
index f6bed219..ee877f20 100644
--- a/gallery_dl/extractor/slickpic.py
+++ b/gallery_dl/extractor/slickpic.py
@@ -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):
diff --git a/gallery_dl/extractor/speakerdeck.py b/gallery_dl/extractor/speakerdeck.py
index 342ca319..b809b7fa 100644
--- a/gallery_dl/extractor/speakerdeck.py
+++ b/gallery_dl/extractor/speakerdeck.py
@@ -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/', '"')
diff --git a/gallery_dl/extractor/steamgriddb.py b/gallery_dl/extractor/steamgriddb.py
index 8844865f..de8a872c 100644
--- a/gallery_dl/extractor/steamgriddb.py
+++ b/gallery_dl/extractor/steamgriddb.py
@@ -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"]
diff --git a/gallery_dl/extractor/subscribestar.py b/gallery_dl/extractor/subscribestar.py
index d9d6d9e5..504bbc36 100644
--- a/gallery_dl/extractor/subscribestar.py
+++ b/gallery_dl/extractor/subscribestar.py
@@ -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):
diff --git a/gallery_dl/extractor/szurubooru.py b/gallery_dl/extractor/szurubooru.py
index d1114b9e..9f042b78 100644
--- a/gallery_dl/extractor/szurubooru.py
+++ b/gallery_dl/extractor/szurubooru.py
@@ -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
diff --git a/gallery_dl/extractor/tapas.py b/gallery_dl/extractor/tapas.py
index a53e5d39..d823f6a9 100644
--- a/gallery_dl/extractor/tapas.py
+++ b/gallery_dl/extractor/tapas.py
@@ -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):
diff --git a/gallery_dl/extractor/tsumino.py b/gallery_dl/extractor/tsumino.py
index ec80d137..688f6d6b 100644
--- a/gallery_dl/extractor/tsumino.py
+++ b/gallery_dl/extractor/tsumino.py
@@ -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"]
diff --git a/gallery_dl/extractor/unsplash.py b/gallery_dl/extractor/unsplash.py
index 0821ee83..cf6631fc 100644
--- a/gallery_dl/extractor/unsplash.py
+++ b/gallery_dl/extractor/unsplash.py
@@ -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):
diff --git a/gallery_dl/extractor/vsco.py b/gallery_dl/extractor/vsco.py
index d2adb13f..82858d63 100644
--- a/gallery_dl/extractor/vsco.py
+++ b/gallery_dl/extractor/vsco.py
@@ -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"]
diff --git a/gallery_dl/extractor/weasyl.py b/gallery_dl/extractor/weasyl.py
index 7bc7be7f..a69f3a85 100644
--- a/gallery_dl/extractor/weasyl.py
+++ b/gallery_dl/extractor/weasyl.py
@@ -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(
diff --git a/gallery_dl/extractor/weibo.py b/gallery_dl/extractor/weibo.py
index b878025a..45da8a93 100644
--- a/gallery_dl/extractor/weibo.py
+++ b/gallery_dl/extractor/weibo.py
@@ -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
diff --git a/gallery_dl/extractor/wikiart.py b/gallery_dl/extractor/wikiart.py
index b45d551d..830d8806 100644
--- a/gallery_dl/extractor/wikiart.py
+++ b/gallery_dl/extractor/wikiart.py
@@ -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):
diff --git a/gallery_dl/extractor/wikimedia.py b/gallery_dl/extractor/wikimedia.py
index a6b3d4a0..6304a2f5 100644
--- a/gallery_dl/extractor/wikimedia.py
+++ b/gallery_dl/extractor/wikimedia.py
@@ -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")
diff --git a/gallery_dl/extractor/yiffverse.py b/gallery_dl/extractor/yiffverse.py
index 37c1efac..1595b4d6 100644
--- a/gallery_dl/extractor/yiffverse.py
+++ b/gallery_dl/extractor/yiffverse.py
@@ -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"]