summaryrefslogtreecommitdiffstats
path: root/gallery_dl/extractor/sankaku.py
diff options
context:
space:
mode:
authorLibravatarUnit 193 <unit193@unit193.net>2024-08-03 20:27:44 -0400
committerLibravatarUnit 193 <unit193@unit193.net>2024-08-03 20:27:44 -0400
commit032e5bed275a253e122ed9ac86dac7b8c4204172 (patch)
treeb4eda52ebfe00c4d22e9d633b1ab2d158a9f0573 /gallery_dl/extractor/sankaku.py
parent80e39a8fc7de105510cbbdca8507f2a4b8c9e01d (diff)
New upstream version 1.27.2.upstream/1.27.2
Diffstat (limited to 'gallery_dl/extractor/sankaku.py')
-rw-r--r--gallery_dl/extractor/sankaku.py26
1 files changed, 21 insertions, 5 deletions
diff --git a/gallery_dl/extractor/sankaku.py b/gallery_dl/extractor/sankaku.py
index caf3e16..ad3efa7 100644
--- a/gallery_dl/extractor/sankaku.py
+++ b/gallery_dl/extractor/sankaku.py
@@ -16,7 +16,7 @@ import collections
import re
BASE_PATTERN = r"(?:https?://)?" \
- r"(?:(?:chan|beta|black|white)\.sankakucomplex\.com|sankaku\.app)" \
+ r"(?:(?:chan|www|beta|black|white)\.sankakucomplex\.com|sankaku\.app)" \
r"(?:/[a-z]{2})?"
@@ -45,6 +45,9 @@ class SankakuExtractor(BooruExtractor):
def skip(self, num):
return 0
+ def _init(self):
+ self.api = SankakuAPI(self)
+
def _file_url(self, post):
url = post["file_url"]
if not url:
@@ -81,6 +84,15 @@ class SankakuExtractor(BooruExtractor):
post["tags_" + key] = value
post["tag_string_" + key] = " ".join(value)
+ def _notes(self, post, page):
+ if post.get("has_notes"):
+ post["notes"] = self.api.notes(post["id"])
+ for note in post["notes"]:
+ note["created_at"] = note["created_at"]["s"]
+ note["updated_at"] = note["updated_at"]["s"]
+ else:
+ post["notes"] = ()
+
class SankakuTagExtractor(SankakuExtractor):
"""Extractor for images from sankaku.app by search-tags"""
@@ -109,7 +121,7 @@ class SankakuTagExtractor(SankakuExtractor):
def posts(self):
params = {"tags": self.tags}
- return SankakuAPI(self).posts_keyset(params)
+ return self.api.posts_keyset(params)
class SankakuPoolExtractor(SankakuExtractor):
@@ -125,7 +137,7 @@ class SankakuPoolExtractor(SankakuExtractor):
self.pool_id = match.group(1)
def metadata(self):
- pool = SankakuAPI(self).pools(self.pool_id)
+ pool = self.api.pools(self.pool_id)
pool["tags"] = [tag["name"] for tag in pool["tags"]]
pool["artist_tags"] = [tag["name"] for tag in pool["artist_tags"]]
@@ -151,7 +163,7 @@ class SankakuPostExtractor(SankakuExtractor):
self.post_id = match.group(1)
def posts(self):
- return SankakuAPI(self).posts(self.post_id)
+ return self.api.posts(self.post_id)
class SankakuBooksExtractor(SankakuExtractor):
@@ -167,7 +179,7 @@ class SankakuBooksExtractor(SankakuExtractor):
def items(self):
params = {"tags": self.tags, "pool_type": "0"}
- for pool in SankakuAPI(self).pools_keyset(params):
+ for pool in self.api.pools_keyset(params):
pool["_extractor"] = SankakuPoolExtractor
url = "https://sankaku.app/books/{}".format(pool["id"])
yield Message.Queue, url, pool
@@ -192,6 +204,10 @@ class SankakuAPI():
if not self.username:
self.authenticate = util.noop
+ def notes(self, post_id):
+ params = {"lang": "en"}
+ return self._call("/posts/{}/notes".format(post_id), params)
+
def pools(self, pool_id):
params = {"lang": "en"}
return self._call("/pools/" + pool_id, params)