1use serde::{Deserialize, Serialize};
2
3#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
4pub struct SearchData<T> {
5 pub seid: String,
6 pub page: i64,
7 #[serde(rename = "pagesize")]
8 pub page_size: i64,
9 #[serde(rename = "numResults")]
10 pub num_results: i64,
11 #[serde(rename = "numPages")]
12 pub num_pages: i64,
13
14 pub result: Option<T>,
17
18 pageinfo: Option<PageInfo>,
20}
21
22#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
23pub struct PageInfo {
24 pub live_user: LivePageInfo,
25 pub live_room: LivePageInfo,
26}
27
28#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
29pub struct LivePageInfo {
30 pub total: i64,
31 #[serde(rename = "numResults")]
32 pub num_results: i64,
33 pub pages: i64,
34 #[serde(rename = "numPages")]
35 pub num_pages: i64,
36}
37
38#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
39pub struct Article {
40 pub category_id: i64,
41 pub category_name: String,
42 pub comment_url: String,
43 pub desc: String,
44 pub id: i64,
45 pub image_urls: Vec<String>,
46 pub is_comment: i64,
47 pub is_fold: bool,
48 pub is_rk1: bool,
49 pub like: i64,
50 pub mid: i64,
51 pub pub_time: i64,
52 pub rank_index: i64,
53 pub rank_offset: i64,
54 pub reply: i64,
55 pub spread_id: i64,
56 pub sub_type: i64,
57 pub template_id: i64,
58 pub title: String,
59 #[serde(rename = "type")]
60 pub type_field: String,
61 pub version: String,
62 pub view: i64,
63}
64
65#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
66pub struct Bangumi {
67 #[serde(rename = "type")]
68 pub type_field: String,
69 pub media_id: i64,
70 pub title: String,
71 pub org_title: String,
72 pub media_type: i64,
73 pub cv: String,
74 pub staff: String,
75 pub season_id: i64,
76 pub is_avid: bool,
77 pub hit_epids: String,
78 pub season_type: i64,
79 pub season_type_name: String,
80 pub selection_style: String,
81 pub ep_size: i64,
82 pub url: String,
83 pub button_text: String,
84 pub is_follow: i64,
85 pub is_selection: i64,
86 pub eps: Vec<Ep>,
87 pub badges: Vec<Badge>,
88 pub cover: String,
89 pub areas: String,
90 pub styles: String,
91 pub goto_url: String,
92 pub desc: String,
93 pub pubtime: i64,
94 pub media_mode: i64,
95 pub fix_pubtime_str: String,
96 pub media_score: MediaScore,
97 pub display_info: Vec<Badge>,
98 pub pgc_season_id: i64,
99 pub corner: i64,
100 pub index_show: String,
101}
102
103#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
104pub struct Ep {
105 pub id: i64,
106 pub cover: String,
107 pub title: String,
108 pub url: String,
109 pub release_date: String,
110 pub badges: Vec<Badge>,
111 pub index_title: String,
112 pub long_title: String,
113}
114
115#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
116pub struct Badge {
117 pub text: String,
118 pub text_color: String,
119 pub text_color_night: String,
120 pub bg_color: String,
121 pub bg_color_night: String,
122 pub border_color: String,
123 pub border_color_night: String,
124 pub bg_style: i64,
125}
126
127#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
128pub struct MediaScore {
129 pub score: f32,
130 pub user_count: i64,
131}
132
133#[derive(Debug, Serialize, Deserialize, Clone)]
135pub struct Video {
136 pub r#type: String,
138
139 pub id: u64,
141
142 pub author: String,
144
145 pub mid: u64,
147
148 pub typeid: String,
150
151 pub typename: String,
153
154 pub arcurl: String,
156
157 pub aid: u64,
159
160 pub bvid: String,
162
163 pub title: String,
165
166 pub pic: String,
168
169 pub play: u64,
171
172 pub danmaku: u64,
174
175 pub favorites: u64,
177
178 pub like: u64,
180
181 pub tag: String,
183
184 pub review: u64,
186
187 pub pubdate: u64,
189
190 pub duration: String,
192}
193
194#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
195pub struct Movie {
196 #[serde(rename = "type")]
197 pub type_field: String,
198 pub media_id: i64,
199 pub title: String,
200 pub org_title: String,
201 pub media_type: i64,
202 pub cv: String,
203 pub staff: String,
204 pub season_id: i64,
205 pub is_avid: bool,
206 pub hit_epids: String,
207 pub season_type: i64,
208 pub season_type_name: String,
209 pub selection_style: String,
210 pub ep_size: i64,
211 pub url: String,
212 pub button_text: String,
213 pub is_follow: i64,
214 pub is_selection: i64,
215 pub badges: Vec<Badge>,
216 pub cover: String,
217 pub areas: String,
218 pub styles: String,
219 pub goto_url: String,
220 pub desc: String,
221 pub pubtime: i64,
222 pub media_mode: i64,
223 pub fix_pubtime_str: String,
224 pub media_score: MediaScore,
225 pub display_info: Vec<Badge>,
226 pub pgc_season_id: i64,
227 pub corner: i64,
228 pub index_show: String,
229}
230
231#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
232pub struct LiveData {
233 live_room: Vec<LiveRoom>,
234 live_user: Vec<LiveUser>,
235}
236
237#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
238pub struct LiveUser {
239 pub area: i64,
241 pub area_v2_id: i64,
243 pub attentions: i64,
245 pub cate_name: String,
247 pub hit_columns: Vec<String>,
249 pub is_live: bool,
251 pub live_status: i64,
253 pub live_time: String,
255 pub rank_index: i64,
257 pub rank_offset: i64,
259 #[serde(rename = "roomid")]
261 pub room_id: i64,
262 pub tags: String,
264 #[serde(rename = "type")]
266 pub type_field: String,
267 pub uface: String,
269 pub uid: i64,
271 pub uname: String,
273 pub id: Option<i64>,
275}
276
277#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
278pub struct LiveRoom {
279 pub area: i64,
281
282 pub attentions: i64,
284
285 pub cate_name: String,
287
288 pub cover: String,
290
291 pub is_live_room_inline: i64,
293
294 pub live_status: i64,
296
297 pub live_time: String,
299
300 pub online: i64,
302
303 pub rank_index: i64,
305
306 pub rank_offset: i64,
308
309 pub roomid: i64,
311
312 pub short_id: i64,
314
315 pub tags: String,
317
318 pub title: String,
320
321 #[serde(rename = "type")]
323 pub type_field: String,
324
325 pub uface: String,
327
328 pub uid: i64,
330
331 pub uname: String,
333
334 pub user_cover: String,
336
337 pub watched_show: Option<WatchedShow>,
339}
340
341#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
342pub struct WatchedShow {
343 pub switch: bool,
344 pub num: i64,
345 pub text_small: String,
346 pub text_large: String,
347 pub icon: String,
348 pub icon_location: String,
349 pub icon_web: String,
350}
351
352#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
353pub struct OfficialVerify {
354 #[serde(rename = "type")]
355 pub r#type: i64,
356 pub desc: String,
357}
358
359#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
360pub struct BiliUserVideo {
361 pub aid: i64,
362 pub bvid: String,
363 pub title: String,
364 pub pubdate: i64,
365 pub arcurl: String,
366 pub pic: String,
367 pub play: String,
368 pub dm: i64,
369 pub coin: i64,
370 pub fav: i64,
371 pub desc: String,
372 pub duration: String,
373 pub is_pay: i64,
374 pub is_union_video: i64,
375 pub is_charge_video: i64,
376 pub vt: i64,
377 pub enable_vt: i64,
378 pub vt_display: String,
379}
380
381#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
382pub struct BiliUser {
383 #[serde(rename = "type")]
384 pub r#type: String,
385 pub mid: i64,
386 pub uname: String,
387 pub usign: String,
388 pub fans: i64,
389 pub videos: i64,
390 pub upic: String,
391 pub face_nft: i64,
392 pub face_nft_type: i64,
393 pub verify_info: String,
394 pub level: i64,
395 pub gender: i64,
396 pub is_upuser: i64,
397 pub is_live: i64,
398 pub room_id: i64,
399 pub res: Vec<BiliUserVideo>,
400 pub official_verify: OfficialVerify,
401 pub is_senior_member: i64,
402}