From d5db8b0d85fbd680417323cf541a1edcc654907a Mon Sep 17 00:00:00 2001 From: VC Date: Tue, 15 Nov 2022 21:14:01 +0100 Subject: [PATCH] feat: add customizable page_size to twitter timeline --- src/lib.rs | 16 +++++++++++++--- src/twitter.rs | 3 ++- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 38fe096..2b2a18e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -28,6 +28,7 @@ use tokio::{spawn, sync::Mutex}; use futures::StreamExt; const DEFAULT_RATE_LIMIT: usize = 4; +const DEFAULT_PAGE_SIZE: i32 = 200; /// This is where the magic happens #[tokio::main] @@ -44,6 +45,11 @@ pub async fn run(config: Config) { let mut stream = futures::stream::iter(config.mastodon.into_values()) .map(|mastodon_config| { + // calculate Twitter page size + let page_size = mastodon_config + .twitter_page_size + .unwrap_or_else(|| config.twitter.page_size.unwrap_or(DEFAULT_PAGE_SIZE)); + // create temporary value for each task let scootaloo_cache_path = config.scootaloo.cache_path.clone(); let token = get_oauth2_token(&config.twitter); @@ -59,9 +65,13 @@ pub async fn run(config: Config) { drop(lconn); // get user timeline feed (Vec) - let mut feed = - get_user_timeline(&mastodon_config.twitter_screen_name, &token, last_tweet_id) - .await?; + let mut feed = get_user_timeline( + &mastodon_config.twitter_screen_name, + &token, + last_tweet_id, + page_size, + ) + .await?; // empty feed -> exiting if feed.is_empty() { diff --git a/src/twitter.rs b/src/twitter.rs index 50e4ac8..01b2ad0 100644 --- a/src/twitter.rs +++ b/src/twitter.rs @@ -32,10 +32,11 @@ pub async fn get_user_timeline( screen_name: &str, token: &Token, lid: Option, + page_size: i32, ) -> Result, Box> { // fix the page size to 200 as it is the maximum Twitter authorizes let (_, feed) = user_timeline(UserID::from(screen_name.to_owned()), true, false, token) - .with_page_size(200) + .with_page_size(page_size) .older(lid) .await?;