diff --git a/docs/configuration.rst b/docs/configuration.rst index 1c57f38f..daf4108e 100644 --- a/docs/configuration.rst +++ b/docs/configuration.rst @@ -1497,6 +1497,16 @@ Description See https://wallhaven.cc/help/api for more information. +extractor.weasyl.api-key +Type + ``string`` +Default + ``null`` +Description + Generate an API key at https://www.weasyl.com/control/apikeys + Set this field in your config to the value of that key. + + extractor.weibo.retweets ------------------------ Type diff --git a/docs/supportedsites.rst b/docs/supportedsites.rst index 4a70ca95..dd42cf93 100644 --- a/docs/supportedsites.rst +++ b/docs/supportedsites.rst @@ -128,7 +128,7 @@ Twitter https://twitter.com/ |twitter-C| VSCO https://vsco.co/ Collections, individual Images, User Profiles Wallhaven https://wallhaven.cc/ individual Images, Search Results Optional (`API Key `__) Warosu https://warosu.org/ Threads -Weasyl https://www.weasyl.com/ Favorites, Folders, Journals, Submissions +Weasyl https://www.weasyl.com/ Favorites, Folders, Journals, Submissions Optional Webtoon https://www.webtoons.com/ Comics, Episodes Weibo https://www.weibo.com/ Images from Statuses, User Profiles WikiArt.org https://www.wikiart.org/ Artists, Artist Listings, Artworks diff --git a/gallery_dl/extractor/weasyl.py b/gallery_dl/extractor/weasyl.py index a39fbf17..67997847 100644 --- a/gallery_dl/extractor/weasyl.py +++ b/gallery_dl/extractor/weasyl.py @@ -30,6 +30,10 @@ class WeasylExtractor(Extractor): return True return False + def __init__(self, match): + Extractor.__init__(self, match) + self.session.headers['X-Weasyl-API-Key'] = self.config("api-key") + def request_submission(self, submitid): return self.request( "{}/api/submissions/{}/view".format(self.root, submitid)).json() @@ -64,7 +68,7 @@ class WeasylExtractor(Extractor): class WeasylSubmissionExtractor(WeasylExtractor): subcategory = "submission" - pattern = BASE_PATTERN + r"(?:~[\w-]+/submissions|submission)/(\d+)" + pattern = BASE_PATTERN + r"(?:~[\w~-]+/submissions|submission)/(\d+)" test = ( ("https://www.weasyl.com/~fiz/submissions/2031/a-wesley", { "pattern": "https://cdn.weasyl.com/~fiz/submissions/2031/41ebc1c29" @@ -105,12 +109,13 @@ class WeasylSubmissionExtractor(WeasylExtractor): class WeasylSubmissionsExtractor(WeasylExtractor): subcategory = "submissions" - pattern = BASE_PATTERN + r"(?:~|submissions/)([\w-]+)/?$" + pattern = BASE_PATTERN + r"(?:~|submissions/)([\w~-]+)/?$" test = ( ("https://www.weasyl.com/~tanidareal", { "count": ">= 200" }), ("https://www.weasyl.com/submissions/tanidareal"), + ("https://www.weasyl.com/~aro~so") ) def __init__(self, match): @@ -126,7 +131,7 @@ class WeasylSubmissionsExtractor(WeasylExtractor): class WeasylFolderExtractor(WeasylExtractor): subcategory = "folder" directory_fmt = ("{category}", "{owner_login}", "{folder_name}") - pattern = BASE_PATTERN + r"submissions/([\w-]+)\?folderid=(\d+)" + pattern = BASE_PATTERN + r"submissions/([\w~-]+)\?folderid=(\d+)" test = ("https://www.weasyl.com/submissions/tanidareal?folderid=7403", { "count": ">= 12" }) @@ -175,7 +180,7 @@ class WeasylJournalsExtractor(WeasylExtractor): subcategory = "journals" filename_fmt = "{journalid} {title}.{extension}" archive_fmt = "{journalid}" - pattern = BASE_PATTERN + r"journals/([\w-]+)" + pattern = BASE_PATTERN + r"journals/([\w~-]+)" test = ("https://www.weasyl.com/journals/charmander", { "count": ">= 2", }) diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index 762a8bc3..3df14369 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -186,6 +186,7 @@ AUTH_MAP = { "tumblr" : "Optional" + _OAUTH, "twitter" : "Optional", "wallhaven" : "Optional" + _APIKEY_WH, + "weasyl" : "Optional", } IGNORE_LIST = (