From 8e54986357a76c6a03077ffb42876f9f5f6744c1 Mon Sep 17 00:00:00 2001 From: Serene-Arc Date: Mon, 15 Feb 2021 13:55:33 +1000 Subject: [PATCH] Re-implement --limit option --- bulkredditdownloader/__main__.py | 1 + bulkredditdownloader/downloader.py | 28 ++++++++++++++++++---------- 2 files changed, 19 insertions(+), 10 deletions(-) diff --git a/bulkredditdownloader/__main__.py b/bulkredditdownloader/__main__.py index 77c0088..678e4fe 100644 --- a/bulkredditdownloader/__main__.py +++ b/bulkredditdownloader/__main__.py @@ -76,6 +76,7 @@ def _add_options(): parser.add_argument("--limit", help="default: unlimited", metavar="Limit", + default=None, type=int) parser.add_argument("--time", help="Either hour, day, week, month, year or all. default: all", diff --git a/bulkredditdownloader/downloader.py b/bulkredditdownloader/downloader.py index 9723668..b99066d 100644 --- a/bulkredditdownloader/downloader.py +++ b/bulkredditdownloader/downloader.py @@ -104,18 +104,22 @@ class RedditDownloader: if self.args.search: return [reddit.search(self.args.search, sort=self.sort_filter.name.lower()) for reddit in subreddits] else: - if self.sort_filter is RedditTypes.SortType.NEW: - sort_function = praw.models.Subreddit.new - elif self.sort_filter is RedditTypes.SortType.RISING: - sort_function = praw.models.Subreddit.rising - elif self.sort_filter is RedditTypes.SortType.CONTROVERSIAL: - sort_function = praw.models.Subreddit.controversial - else: - sort_function = praw.models.Subreddit.hot - return [sort_function(reddit) for reddit in subreddits] + sort_function = self._determine_sort_function() + return [sort_function(reddit, limit=self.args.limit) for reddit in subreddits] else: return [] + def _determine_sort_function(self): + if self.sort_filter is RedditTypes.SortType.NEW: + sort_function = praw.models.Subreddit.new + elif self.sort_filter is RedditTypes.SortType.RISING: + sort_function = praw.models.Subreddit.rising + elif self.sort_filter is RedditTypes.SortType.CONTROVERSIAL: + sort_function = praw.models.Subreddit.controversial + else: + sort_function = praw.models.Subreddit.hot + return sort_function + def _get_multireddits(self) -> list[praw.models.ListingGenerator]: if self.args.multireddit: if self.authenticated: @@ -129,10 +133,14 @@ class RedditDownloader: if any((self.args.upvoted, self.args.submitted, self.args.saved)): if self.authenticated: generators = [] + sort_function = self._determine_sort_function() if self.args.upvoted: generators.append(self.reddit_instance.redditor(self.args.user).upvoted) if self.args.submitted: - generators.append(self.reddit_instance.redditor(self.args.user).submissions) + generators.append( + sort_function( + self.reddit_instance.redditor(self.args.user).submissions, + limit=self.args.limit)) if self.args.saved: generators.append(self.reddit_instance.redditor(self.args.user).saved)