module_clients/
module_clients.rs1use std::env;
2
3use bpi_rs::bangumi::BangumiInfoParams;
4use bpi_rs::ids::{Bvid, MediaId};
5use bpi_rs::video::VideoViewParams;
6use bpi_rs::{BpiClient, BpiResult};
7
8#[tokio::main]
9async fn main() -> BpiResult<()> {
10 let client = client_from_env()?;
11 let video_params = VideoViewParams::from_bvid("BV1xx411c7mD".parse::<Bvid>()?);
12 let bangumi_params = BangumiInfoParams::new(MediaId::new(28_220_978)?);
13
14 if !run_live_example() {
15 println!("module-client quickstart compiled; set BPI_RUN_EXAMPLE=1 to call live APIs");
16 return Ok(());
17 }
18
19 let video = client.video().view(video_params).await?;
20 println!("video: {}", video.title);
21
22 let bangumi = client.bangumi().info(bangumi_params).await?;
23 println!("bangumi: {}", bangumi.media.title);
24
25 if env::var_os("BPI_COOKIE").is_some() {
26 let nav = client.login().nav().await?;
27 println!("logged in: {}", nav.is_login);
28 }
29
30 Ok(())
31}
32
33fn client_from_env() -> BpiResult<BpiClient> {
34 match env::var("BPI_COOKIE") {
35 Ok(cookie) if !cookie.trim().is_empty() => BpiClient::builder().cookie(cookie).build(),
36 _ => BpiClient::builder().build(),
37 }
38}
39
40fn run_live_example() -> bool {
41 env::var("BPI_RUN_EXAMPLE").is_ok_and(|value| value == "1")
42}