diff --git a/docs/supportedsites.md b/docs/supportedsites.md index 2a8f0b570f..50ad231c16 100644 --- a/docs/supportedsites.md +++ b/docs/supportedsites.md @@ -658,7 +658,7 @@ Consider all sites to be NSFW unless otherwise known. Reddit https://www.reddit.com/ - individual Images, Submissions, Subreddits, User Profiles + Home Feed, individual Images, Submissions, Subreddits, User Profiles OAuth diff --git a/gallery_dl/extractor/reddit.py b/gallery_dl/extractor/reddit.py index 01538bf48f..d35e24e329 100644 --- a/gallery_dl/extractor/reddit.py +++ b/gallery_dl/extractor/reddit.py @@ -144,8 +144,8 @@ def _extract_gallery(self, submission): class RedditSubredditExtractor(RedditExtractor): """Extractor for URLs from subreddits on reddit.com""" subcategory = "subreddit" - pattern = (r"(?:https?://)?(?:\w+\.)?reddit\.com/r/" - r"([^/?#]+(?:/([a-z]+))?)/?(?:\?([^#]*))?(?:$|#)") + pattern = (r"(?:https?://)?(?:\w+\.)?reddit\.com" + r"(/r/[^/?#]+(?:/([a-z]+))?)/?(?:\?([^#]*))?(?:$|#)") test = ( ("https://www.reddit.com/r/lavaporn/", { "range": "1-20", @@ -168,6 +168,20 @@ def submissions(self): return self.api.submissions_subreddit(self.subreddit, self.params) +class RedditHomeExtractor(RedditSubredditExtractor): + """Extractor for submissions from your home feed on reddit.com""" + subcategory = "home" + pattern = (r"(?:https?://)?(?:\w+\.)?reddit\.com" + r"((?:/([a-z]+))?)/?(?:\?([^#]*))?(?:$|#)") + test = ( + ("https://www.reddit.com/", { + "range": "1-20", + "count": ">= 20", + }), + ("https://old.reddit.com/top/?sort=top&t=month"), + ) + + class RedditUserExtractor(RedditExtractor): """Extractor for URLs from posts by a reddit user""" subcategory = "user" @@ -321,7 +335,7 @@ def submission(self, submission_id): def submissions_subreddit(self, subreddit, params): """Collect all (submission, comments)-tuples of a subreddit""" - endpoint = "/r/" + subreddit + "/.json" + endpoint = subreddit + "/.json" params["limit"] = 100 return self._pagination(endpoint, params) diff --git a/scripts/supportedsites.py b/scripts/supportedsites.py index 3557871dbc..27073535b8 100755 --- a/scripts/supportedsites.py +++ b/scripts/supportedsites.py @@ -197,6 +197,9 @@ "sketch": "Sketch", "work": "individual Images", }, + "reddit": { + "home": "Home Feed", + }, "sankaku": { "books": "Book Searches", },