use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PageDimension {
pub width: u32,
pub height: u32,
pub rotate: u8,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PageItem {
pub cid: u64,
pub page: u32,
pub from: String,
pub part: String,
pub duration: u32,
pub vid: String,
pub weblink: String,
pub dimension: Option<PageDimension>,
pub first_frame: Option<String>,
pub ctime: u64,
}
#[cfg(test)]
mod tests {
use crate::ids::Aid;
use crate::video::params::VideoPageListParams;
use crate::{BpiClient, BpiError};
#[ignore = "legacy live API test; requires explicit BPI_LIVE_TEST review"]
#[tokio::test]
async fn test_video_pagelist() -> Result<(), BpiError> {
let bpi = BpiClient::new().expect("client should build");
let data = bpi
.video()
.page_list(VideoPageListParams::from_aid(Aid::new(10001)?))
.await?;
for item in data {
tracing::info!(
"P{}: {}, cid={}, duration={}秒",
item.page,
item.part,
item.cid,
item.duration
);
}
Ok(())
}
}