use rustboxd::{User, Search};
use std::error::Error;
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
println!("Advanced Rustboxd Usage Examples");
println!("================================");
println!("\n1. Advanced search with multiple pages:");
let mut search = Search::new("christopher nolan", Some("films")).await?;
println!("Initial results: {} films", search.results.films.len());
search.get_more_results(3).await?;
println!("After pagination: {} films", search.results.films.len());
for (i, film) in search.results.films.iter().take(5).enumerate() {
println!(" {}. {} ({})", i + 1, film.title,
film.year.map_or("Unknown".to_string(), |y| y.to_string()));
}
println!("\n2. User activity analysis:");
let user = User::new("nmcassa").await?;
match user.get_liked_films().await {
Ok(liked) => println!("User has liked {} films", liked.len()),
Err(e) => println!("Error getting liked films: {}", e),
}
match user.get_reviews().await {
Ok(reviews) => println!("User has written {} reviews", reviews.len()),
Err(e) => println!("Error getting reviews: {}", e),
}
match user.get_watchlist().await {
Ok(watchlist) => println!("User has {} films in watchlist", watchlist.len()),
Err(e) => println!("Error getting watchlist: {}", e),
}
match user.get_followers().await {
Ok(followers) => println!("User has {} followers", followers.len()),
Err(e) => println!("Error getting followers: {}", e),
}
match user.get_following().await {
Ok(following) => println!("User is following {} people", following.len()),
Err(e) => println!("Error getting following: {}", e),
}
println!("\n3. User genre preferences:");
match user.get_genre_info().await {
Ok(genre_info) => {
println!("Retrieved genre statistics: {} entries", genre_info.len());
}
Err(e) => println!("Error getting genre info: {}", e),
}
println!("\n4. Different search types:");
let review_search = Search::new("the godfather", Some("reviews")).await?;
println!("Found {} reviews for 'the godfather'", review_search.results.reviews.len());
let list_search = Search::new("best films", Some("lists")).await?;
println!("Found {} lists for 'best films'", list_search.results.lists.len());
let member_search = Search::new("filmmaker", Some("members")).await?;
println!("Found {} members for 'filmmaker'", member_search.results.members.len());
println!("\nAdvanced examples completed!");
Ok(())
}