mirror of
https://framagit.org/veretcle/scootaloo.git
synced 2025-07-20 17:11:19 +02:00
Some more testing on tweet entities
This commit is contained in:
48
src/lib.rs
48
src/lib.rs
@@ -15,6 +15,7 @@ use egg_mode::{
|
|||||||
Token,
|
Token,
|
||||||
KeyPair,
|
KeyPair,
|
||||||
tweet::{
|
tweet::{
|
||||||
|
Tweet,
|
||||||
user_timeline,
|
user_timeline,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
@@ -38,6 +39,25 @@ fn write_state(f: &str, s: u64) -> Result<(), std::io::Error> {
|
|||||||
write(f, format!("{}", s))
|
write(f, format!("{}", s))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn get_oauth2_token(config: &Config) -> Token {
|
||||||
|
let con_token = KeyPair::new(String::from(&config.twitter.consumer_key), String::from(&config.twitter.consumer_secret));
|
||||||
|
let access_token = KeyPair::new(String::from(&config.twitter.access_key), String::from(&config.twitter.access_secret));
|
||||||
|
|
||||||
|
Token::Access {
|
||||||
|
consumer: con_token,
|
||||||
|
access: access_token,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_user_timeline(config: &Config, token: Token, lid: Option<u64>) -> Result<Vec<Tweet>, Box<dyn Error>> {
|
||||||
|
// fix the page size to 200 as it is the maximum Twitter authorizes
|
||||||
|
let (_timeline, feed) = block_on_all(user_timeline(&config.twitter.username, false, false, &token)
|
||||||
|
.with_page_size(200)
|
||||||
|
.older(lid))?;
|
||||||
|
|
||||||
|
Ok(feed.to_vec())
|
||||||
|
}
|
||||||
|
|
||||||
/**********
|
/**********
|
||||||
* Config structure
|
* Config structure
|
||||||
***********/
|
***********/
|
||||||
@@ -92,26 +112,30 @@ impl Config {
|
|||||||
|
|
||||||
/// This is where the magic happens
|
/// This is where the magic happens
|
||||||
pub fn run(config: Config) {
|
pub fn run(config: Config) {
|
||||||
|
// retrieve the last tweet ID for the username
|
||||||
let last_tweet_id = read_state(&config.twitter.last_tweet_path);
|
let last_tweet_id = read_state(&config.twitter.last_tweet_path);
|
||||||
|
|
||||||
let con_token = KeyPair::new(String::from(&config.twitter.consumer_key), String::from(&config.twitter.consumer_secret));
|
// get OAuth2 token
|
||||||
let access_token = KeyPair::new(String::from(&config.twitter.access_key), String::from(&config.twitter.access_secret));
|
let token = get_oauth2_token(&config);
|
||||||
|
|
||||||
let token = Token::Access {
|
// get user timeline feed (Vec<tweet>)
|
||||||
consumer: con_token,
|
let feed = get_user_timeline(&config, token, last_tweet_id).unwrap_or_else(|e|
|
||||||
access: access_token,
|
panic!("Something went wrong when trying to retrieve {}’s timeline: {}", &config.twitter.username, e)
|
||||||
};
|
);
|
||||||
|
|
||||||
let (_timeline, mut feed) = block_on_all(user_timeline(&config.twitter.username, false, false, &token)
|
if feed.len() == 0 {
|
||||||
.with_page_size(200)
|
println!("Nothing to retrieve since last time, exiting…");
|
||||||
.older(last_tweet_id)).unwrap();
|
return;
|
||||||
|
|
||||||
for tweet in &feed {
|
|
||||||
println!("{}: <@{}> {}", tweet.id, tweet.user.as_ref().unwrap().screen_name, tweet.text);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for tweet in &feed {
|
||||||
|
println!("ID: {}\ttext: {}\tentities: {:#?}\tmedia: {:#?}", tweet.id, tweet.text, tweet.entities, tweet.extended_entities);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
write_state(&config.twitter.last_tweet_path, feed[0].id).unwrap_or_else(|e|
|
write_state(&config.twitter.last_tweet_path, feed[0].id).unwrap_or_else(|e|
|
||||||
panic!("Can’t write the last tweet retrieved: {}", e)
|
panic!("Can’t write the last tweet retrieved: {}", e)
|
||||||
);
|
);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user