bpi_rs/creativecenter/season/
action.rs1use crate::BilibiliRequest;
6use crate::BpiResult;
7use crate::creativecenter::CreativeCenterClient;
8use serde::{Deserialize, Serialize};
9use serde_json::json;
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
14pub struct EpisodeAdd {
15 pub title: String,
16 pub aid: u64,
17 pub cid: u64,
18
19 #[serde(default)]
20 pub charging_pay: i64,
21 #[serde(default)]
22 pub member_first: i64,
23 #[serde(default)]
24 pub limited_free: bool,
25}
26
27impl<'a> CreativeCenterClient<'a> {
28 pub async fn season_create(
43 &self,
44 title: &str,
45 desc: Option<&str>,
46 cover: &str,
47 season_price: Option<u32>,
48 ) -> BpiResult<u64> {
49 let csrf = self.client.csrf()?;
51
52 let mut form = vec![
53 ("title", title.to_string()),
54 ("cover", cover.to_string()),
55 ("csrf", csrf),
56 ];
57
58 if let Some(d) = desc {
59 form.push(("desc", d.to_string()));
60 }
61 if let Some(price) = season_price {
62 form.push(("season_price", price.to_string()));
63 }
64
65 self.client
66 .post("https://member.bilibili.com/x2/creative/web/season/add")
67 .form(&form)
68 .send_bpi_payload("creativecenter.season.create")
69 .await
70 }
71
72 pub async fn season_delete(&self, season_id: u64) -> BpiResult<Option<serde_json::Value>> {
84 let csrf = self.client.csrf()?;
85
86 let form = vec![("id", season_id.to_string()), ("csrf", csrf)];
87
88 self.client
89 .post("https://member.bilibili.com/x2/creative/web/season/del")
90 .form(&form)
91 .send_bpi_optional_payload("creativecenter.season.delete")
92 .await
93 }
94
95 pub async fn season_episodes_add(
108 &self,
109 section_id: u64,
110 episodes: Vec<EpisodeAdd>,
111 ) -> BpiResult<Option<serde_json::Value>> {
112 let csrf = self.client.csrf()?;
114
115 let payload = json!({
116 "sectionId": section_id,
117 "episodes": episodes
118 });
119
120 self.client
121 .post("https://member.bilibili.com/x2/creative/web/season/section/episodes/add")
122 .with_bilibili_headers()
123 .query(&[("csrf", csrf)])
124 .json(&payload)
125 .send_bpi_optional_payload("creativecenter.season.episodes.add")
126 .await
127 }
128}
129
130#[cfg(test)]
131mod tests {}