From e93360e45d40f7abe1eba52cefaf4b125df8da08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20F=C3=A4hrmann?= Date: Fri, 10 Sep 2021 20:02:08 +0200 Subject: [PATCH] [reddit] extend subcategory depending on input URL (closes #1836) - https://www.reddit.com/r/lavaporn/ -> 'subreddit' - https://www.reddit.com/r/lavaporn/new/ -> 'subreddit-new' - https://www.reddit.com/user/username/ -> 'user' - https://www.reddit.com/user/username/gilded/ -> 'user-gilded' --- gallery_dl/extractor/reddit.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/gallery_dl/extractor/reddit.py b/gallery_dl/extractor/reddit.py index 8953eddc..43c7e50d 100644 --- a/gallery_dl/extractor/reddit.py +++ b/gallery_dl/extractor/reddit.py @@ -139,7 +139,7 @@ class RedditSubredditExtractor(RedditExtractor): """Extractor for URLs from subreddits on reddit.com""" subcategory = "subreddit" pattern = (r"(?:https?://)?(?:\w+\.)?reddit\.com/r/" - r"([^/?#]+(?:/[a-z]+)?)/?(?:\?([^#]*))?(?:$|#)") + r"([^/?#]+(?:/([a-z]+))?)/?(?:\?([^#]*))?(?:$|#)") test = ( ("https://www.reddit.com/r/lavaporn/", { "range": "1-20", @@ -152,9 +152,11 @@ class RedditSubredditExtractor(RedditExtractor): ) def __init__(self, match): + self.subreddit, sub, params = match.groups() + self.params = text.parse_query(params) + if sub: + self.subcategory += "-" + sub RedditExtractor.__init__(self, match) - self.subreddit = match.group(1) - self.params = text.parse_query(match.group(2)) def submissions(self): return self.api.submissions_subreddit(self.subreddit, self.params) @@ -164,7 +166,7 @@ class RedditUserExtractor(RedditExtractor): """Extractor for URLs from posts by a reddit user""" subcategory = "user" pattern = (r"(?:https?://)?(?:\w+\.)?reddit\.com/u(?:ser)?/" - r"([^/?#]+(?:/[a-z]+)?)/?(?:\?([^#]*))?") + r"([^/?#]+(?:/([a-z]+))?)/?(?:\?([^#]*))?") test = ( ("https://www.reddit.com/user/username/", { "count": ">= 2", @@ -175,9 +177,11 @@ class RedditUserExtractor(RedditExtractor): ) def __init__(self, match): + self.user, sub, params = match.groups() + self.params = text.parse_query(params) + if sub: + self.subcategory += "-" + sub RedditExtractor.__init__(self, match) - self.user = match.group(1) - self.params = text.parse_query(match.group(2)) def submissions(self): return self.api.submissions_user(self.user, self.params)