use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SeasonByAidData {
pub id: u64,
pub title: String,
pub desc: Option<String>,
pub cover: String,
#[serde(rename = "isEnd")]
pub is_end: u32,
pub mid: u64,
#[serde(rename = "isAct")]
pub is_act: u32,
pub is_pay: u32,
pub state: i32,
#[serde(rename = "partState")]
pub part_state: u32,
#[serde(rename = "signState")]
pub sign_state: u32,
#[serde(rename = "rejectReason")]
pub reject_reason: Option<String>,
pub ctime: u64,
pub mtime: u64,
pub no_section: u32,
pub forbid: u32,
pub protocol_id: Option<String>,
pub ep_num: u32,
pub season_price: u32,
pub is_opened: u32,
pub has_charging_pay: u32,
pub has_pugv_pay: u32,
}
#[cfg(test)]
mod tests {
use crate::creativecenter::season::SeasonByAidParams;
use crate::ids::Aid;
use crate::{BpiClient, BpiError};
const TEST_AID: u64 = 113602455409683;
#[ignore = "legacy live API test; requires explicit BPI_LIVE_TEST review"]
#[tokio::test]
async fn test_season_by_aid() -> Result<(), BpiError> {
let bpi = BpiClient::new().expect("client should build");
let params = SeasonByAidParams::new(Aid::new(TEST_AID)?);
let data = bpi.creativecenter().season_by_aid(params).await?;
tracing::info!("视频 {} 所属合集 {} - {}", TEST_AID, data.id, data.title);
Ok(())
}
#[test]
fn season_by_aid_params_serializes_query() -> Result<(), BpiError> {
let params = SeasonByAidParams::new(Aid::new(TEST_AID)?);
assert_eq!(params.query_pairs(), [("id", TEST_AID.to_string())]);
Ok(())
}
}