summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/fantia.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2023-01-30 04:40:57 -0500
committerLibravatarUnit 193 <unit193@unit193.net>2023-01-30 04:40:57 -0500
commit919f8ba16a7b82ba1099bd25b2c61c7881a05aa2 (patch)
tree50eb34c3286538164a2f2b7048d110dc89b2a971 /gallery_dl/extractor/fantia.py
parentf1051085013c0d702ef974b9b27ea43b3fc73259 (diff)
New upstream version 1.24.5.upstream/1.24.5
Diffstat (limited to 'gallery_dl/extractor/fantia.py')
-rw-r--r--gallery_dl/extractor/fantia.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/gallery_dl/extractor/fantia.py b/gallery_dl/extractor/fantia.py
index c05ec39..476fdeb 100644
--- a/gallery_dl/extractor/fantia.py
+++ b/gallery_dl/extractor/fantia.py
@@ -21,6 +21,10 @@ class FantiaExtractor(Extractor):
_warning = True
def items(self):
+ self.headers = {
+ "Accept" : "application/json, text/plain, */*",
+ "Referer": self.root,
+ }
if self._warning:
if not self._check_cookies(("_session_id",)):
@@ -43,10 +47,11 @@ class FantiaExtractor(Extractor):
def _pagination(self, url):
params = {"page": 1}
- headers = {"Referer": self.root}
+ headers = self.headers
while True:
page = self.request(url, params=params, headers=headers).text
+ self._csrf_token(page)
post_id = None
for post_id in text.extract_iter(
@@ -57,11 +62,16 @@ class FantiaExtractor(Extractor):
return
params["page"] += 1
+ def _csrf_token(self, page=None):
+ if not page:
+ page = self.request(self.root + "/").text
+ self.headers["X-CSRF-Token"] = text.extr(
+ page, 'name="csrf-token" content="', '"')
+
def _get_post_data(self, post_id):
"""Fetch and process post data"""
- headers = {"Referer": self.root}
url = self.root+"/api/v1/posts/"+post_id
- resp = self.request(url, headers=headers).json()["post"]
+ resp = self.request(url, headers=self.headers).json()["post"]
post = {
"post_id": resp["id"],
"post_url": self.root + "/posts/" + str(resp["id"]),
@@ -173,4 +183,5 @@ class FantiaPostExtractor(FantiaExtractor):
self.post_id = match.group(1)
def posts(self):
+ self._csrf_token()
return (self.post_id,)