diff --git a/gallery_dl/extractor/sankaku.py b/gallery_dl/extractor/sankaku.py index 0e06429f..36b6aef5 100644 --- a/gallery_dl/extractor/sankaku.py +++ b/gallery_dl/extractor/sankaku.py @@ -210,8 +210,25 @@ class SankakuAPI(): return self._call("/posts/{}/notes".format(post_id), params) def tags(self, post_id): - params = {"lang": "en"} - return self._call("/posts/{}/tags".format(post_id), params)["data"] + endpoint = "/posts/{}/tags".format(post_id) + params = { + "lang" : "en", + "page" : 1, + "limit": 100, + } + + tags = None + while True: + data = self._call(endpoint, params) + + if tags is None: + tags = data["data"] + else: + tags.extend(data["data"]) + + if len(tags) >= data["total"]: + return tags + params["page"] += 1 def pools(self, pool_id): params = {"lang": "en"} diff --git a/test/results/sankaku.py b/test/results/sankaku.py index 1287b2a4..e433f343 100644 --- a/test/results/sankaku.py +++ b/test/results/sankaku.py @@ -179,6 +179,146 @@ __tests__ = ( "tags_general": list, }, +{ + "#url" : "https://sankaku.app/posts/9PMwlDWjXaB", + "#comment" : ">100 tags", + "#category": ("booru", "sankaku", "post"), + "#class" : sankaku.SankakuPostExtractor, + "#options" : {"tags": True}, + + "id" : "9PMwlDWjXaB", + "md5" : "dc9a3cbfcfee836779bc4f8d5d95c346", + "tag_names": "len:106", + + "tags": [ + "mahou_shoujo_madoka_magica", + "mahou_shoujo_madoka_magica:_hangyaku_no_monogatari", + "pixiv", + "akemi_homura", + "kaname_madoka", + ], + "tags_copyright": [ + "mahou_shoujo_madoka_magica", + "mahou_shoujo_madoka_magica:_hangyaku_no_monogatari", + ], + "tags_studio": [ + "pixiv", + ], + "tags_character": [ + "akemi_homura", + "kaname_madoka", + "akuma_homura", + "kaname_madoka_(magical_girl)", + ], + "tags_artist": [ + "mie_haha", + ], + "tags_genre": [ + "size_difference", + "giant", + "giantess", + ], + "tags_general": [ + "clothing", + "tied_hair", + "headwear", + "hair_ornament", + "bangs", + "skirt", + "footwear", + "gloves", + "dress", + "twintails", + "ribbon", + "bow", + "shoes", + "hair_ribbon", + "boots", + "hairband", + "hair_bow", + "short_sleeves", + "choker", + "frills", + "makeup", + "high_heels", + "white_gloves", + "puffy_sleeves", + "miniskirt", + "black_footwear", + "black_dress", + "red_bow", + "red_ribbon", + "puffy_short_sleeves", + "eyeshadow", + "short_twintails", + "frilled_dress", + "white_skirt", + "pink_bow", + "pink_dress", + "frilled_skirt", + "frilled_sleeves", + "high_heel_boots", + "white_sleeves", + "red_hairband", + "center_frills", + "red_choker", + "pink_choker", + "pink_eyeshadow", + "crystal_wings", + "female", + "long_hair", + "short_hair", + "black_hair", + "pink_hair", + "wings", + "pink_eyes", + "eyelashes", + "feathers", + "feathered_wings", + "black_wings", + "standing", + "closed_mouth", + "frown", + "outstretched_arms", + "holding", + "looking_at_another", + "looking_down", + "holding_doll", + "magical_girl", + "sparkle", + "buttons", + "glass", + "doll", + "character_doll", + "pink_gemstone", + "bodily_fluids", + "tears", + "1girl", + "solo", + "multiple_girls", + "2girls", + "stairs", + "bow_choker", + "broken_glass", + "button_eyes", + "chest_jewel", + "mahou_shoujo_madoka_magica_(anime)", + "pendant_choker", + "shards", + "soul_gem", + "square_neckline", + "surreal", + "high_resolution", + "very_high_resolution", + "large_filesize", + ], + "tags_medium": [ + "gradient", + "gradient_background", + "black_background", + ], +}, + { "#url" : "https://sankaku.app/posts/VAr2mjLJ2av", "#comment" : "notes (#5073)",