diff --git a/gallery_dl/extractor/weasyl.py b/gallery_dl/extractor/weasyl.py index ddbfaa06d6..5b4b20b7a5 100644 --- a/gallery_dl/extractor/weasyl.py +++ b/gallery_dl/extractor/weasyl.py @@ -159,15 +159,25 @@ def items(self): class WeasylFavoriteExtractor(WeasylExtractor): subcategory = "favorite" - directory_fmt = ("{category}", "{owner_login}", "Favorites") - pattern = BASE_PATTERN + r"favorites\?userid=(\d+)" + directory_fmt = ("{category}", "{user}", "Favorites") + pattern = BASE_PATTERN + r"favorites(?:\?userid=(\d+)|\/([\w~-]+))" example = "https://www.weasyl.com/favorites?userid=12345" def __init__(self, match): WeasylExtractor.__init__(self, match) self.userid = match.group(1) + self.username = match.group(2) def items(self): + if self.userid is None and self.username is not None: + new_url = self.root + "/favorites/{}".format(self.username) + page = self.request(new_url).text + self.userid = text.extr( + page, + '= 5", }, +{ + "#url" : "https://www.weasyl.com/favorites/furoferre", + "#category": ("", "weasyl", "favorite"), + "#class" : weasyl.WeasylFavoriteExtractor, + "#count" : ">= 5", +} + )