From e1aa4a716291f44f2de55338fd50b6d41b2ac154 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Wed, 27 Nov 2024 15:19:27 +0100 Subject: [PATCH] [kemonoparty] support new discord channel URLs (#6542) --- gallery_dl/extractor/kemonoparty.py | 17 ++++++++--------- test/results/kemonoparty.py | 10 ++++++++++ 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/gallery_dl/extractor/kemonoparty.py b/gallery_dl/extractor/kemonoparty.py index e731e550..c17f8817 100644 --- a/gallery_dl/extractor/kemonoparty.py +++ b/gallery_dl/extractor/kemonoparty.py @@ -345,18 +345,15 @@ class KemonopartyDiscordExtractor(KemonopartyExtractor): "{channel_name|channel}") filename_fmt = "{id}_{num:>02}_{filename}.{extension}" archive_fmt = "discord_{server}_{id}_{num}" - pattern = BASE_PATTERN + r"/discord/server/(\d+)(?:/channel/(\d+))?#(.*)" - example = "https://kemono.su/discord/server/12345#CHANNEL" + pattern = (BASE_PATTERN + r"/discord/server/(\d+)" + r"(?:/(?:channel/)?(\d+)(?:#(.+))?|#(.+))") + example = "https://kemono.su/discord/server/12345/12345" def items(self): self._prepare_ddosguard_cookies() + _, _, server_id, channel_id, channel_name, channel = self.groups - _, _, server_id, channel_id, channel = self.groups - channel_name = "" - - if channel_id: - channel_name = channel - else: + if channel_id is None: if channel.isdecimal() and len(channel) >= 16: key = "id" else: @@ -370,6 +367,8 @@ class KemonopartyDiscordExtractor(KemonopartyExtractor): channel_id = ch["id"] channel_name = ch["name"] + elif channel_name is None: + channel_name = "" find_inline = re.compile( r"https?://(?:cdn\.discordapp.com|media\.discordapp\.net)" @@ -422,7 +421,7 @@ class KemonopartyDiscordServerExtractor(KemonopartyExtractor): def items(self): server_id = self.groups[2] for channel in self.api.discord_server(server_id): - url = "{}/discord/server/{}/channel/{}#{}".format( + url = "{}/discord/server/{}/{}#{}".format( self.root, server_id, channel["id"], channel["name"]) channel["_extractor"] = KemonopartyDiscordExtractor yield Message.Queue, url, channel diff --git a/test/results/kemonoparty.py b/test/results/kemonoparty.py index 6a388452..b44ae3ec 100644 --- a/test/results/kemonoparty.py +++ b/test/results/kemonoparty.py @@ -299,6 +299,16 @@ __tests__ = ( "type" : "attachment", }, +{ + "#url" : "https://kemono.su/discord/server/488668827274444803/608504710906904576", + "#category": ("", "kemonoparty", "discord"), + "#class" : kemonoparty.KemonopartyDiscordExtractor, + "#count" : 4, + + "channel" : "608504710906904576", + "channel_name": "", +}, + { "#url" : "https://kemono.su/discord/server/488668827274444803#608504710906904576", "#category": ("", "kemonoparty", "discord"),