feat: add customizable page_size to twitter timeline

This commit is contained in:
VC
2022-11-15 21:14:01 +01:00
parent fe8e81b54d
commit d5db8b0d85
2 changed files with 15 additions and 4 deletions

View File

@@ -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<tweet>)
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() {

View File

@@ -32,10 +32,11 @@ pub async fn get_user_timeline(
screen_name: &str,
token: &Token,
lid: Option<u64>,
page_size: i32,
) -> Result<Vec<Tweet>, Box<dyn Error>> {
// 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?;