From a91e243eccb8506aafec75aa436ffb708dd5e748 Mon Sep 17 00:00:00 2001 From: Marc Plano-Lesay Date: Fri, 2 May 2025 13:05:40 +1000 Subject: [PATCH] Add --post-count option --- src/args.rs | 4 ++++ src/main.rs | 4 +++- src/reddit_client.rs | 15 +++++++++++++-- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/args.rs b/src/args.rs index 41f503d..8a23054 100644 --- a/src/args.rs +++ b/src/args.rs @@ -12,6 +12,10 @@ pub struct Args { #[arg(short, long)] pub db: Option, + /// Number of posts to load per user + #[arg(long, default_value = "25")] + pub post_count: u32, + #[command(flatten)] pub verbose: Verbosity, } diff --git a/src/main.rs b/src/main.rs index 691ba45..1b550d0 100644 --- a/src/main.rs +++ b/src/main.rs @@ -82,7 +82,9 @@ async fn main() -> Result<()> { let reddit_client = RedditClient::new(); let mut user_posts = MultiMap::new(); for username in unique_usernames { - let submissions = reddit_client.fetch_user_submissions(&username).await?; + let submissions = reddit_client + .fetch_user_submissions(&username, args.post_count) + .await?; user_posts.insert_many(username, submissions); } diff --git a/src/reddit_client.rs b/src/reddit_client.rs index f85e9fa..72f222a 100644 --- a/src/reddit_client.rs +++ b/src/reddit_client.rs @@ -1,5 +1,6 @@ use chrono::{DateTime, TimeZone, Utc}; use color_eyre::eyre::{Result, WrapErr}; +use roux::util::FeedOption; use roux::User; use serde::{Deserialize, Serialize}; @@ -21,10 +22,20 @@ impl RedditClient { } /// Fetch submissions for a user - pub async fn fetch_user_submissions(&self, username: &str) -> Result> { + /// + /// # Arguments + /// + /// * `username` - The Reddit username to fetch submissions for + /// * `post_count` - The maximum number of posts to fetch + pub async fn fetch_user_submissions( + &self, + username: &str, + post_count: u32, + ) -> Result> { let user = User::new(username); + let feed_option = FeedOption::new().limit(post_count); let submissions = user - .submitted(None) + .submitted(Some(feed_option)) .await .context(format!("Failed to fetch submissions for user {}", username))?;