feat: add helper for userallmusicdetail
This commit is contained in:
45
sdgb-api/src/title/helper/mod.rs
Normal file
45
sdgb-api/src/title/helper/mod.rs
Normal file
@@ -0,0 +1,45 @@
|
||||
use nyquest::AsyncClient;
|
||||
|
||||
use crate::{
|
||||
ApiError,
|
||||
title::{
|
||||
MaiVersionExt as _, Sdgb1_50,
|
||||
methods::APIMethod,
|
||||
model::{GetUserMusicApi, GetUserMusicApiResp, UserMusicDetail},
|
||||
},
|
||||
};
|
||||
|
||||
pub async fn get_user_all_music(
|
||||
client: &AsyncClient,
|
||||
user_id: u32,
|
||||
) -> Result<Vec<UserMusicDetail>, ApiError> {
|
||||
let mut music_detail = Vec::new();
|
||||
let mut index = None;
|
||||
|
||||
loop {
|
||||
let GetUserMusicApiResp {
|
||||
next_index,
|
||||
mut user_music_list,
|
||||
..
|
||||
} = Sdgb1_50::request::<_, GetUserMusicApiResp>(
|
||||
&client,
|
||||
APIMethod::GetUserMusicApi,
|
||||
user_id,
|
||||
GetUserMusicApi {
|
||||
user_id,
|
||||
next_index: index.unwrap_or_default(),
|
||||
max_count: 50,
|
||||
},
|
||||
)
|
||||
.await?;
|
||||
|
||||
for list in &mut user_music_list {
|
||||
music_detail.append(&mut list.user_music_detail_list);
|
||||
}
|
||||
|
||||
if next_index == 0 || user_music_list.is_empty() {
|
||||
break Ok(music_detail);
|
||||
}
|
||||
index = Some(next_index);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,8 @@ pub mod encryption;
|
||||
pub mod methods;
|
||||
pub mod model;
|
||||
|
||||
pub mod helper;
|
||||
|
||||
use super::ApiError;
|
||||
|
||||
use nyquest::{
|
||||
|
||||
@@ -23,8 +23,7 @@ pub use get_user_rating_api::{
|
||||
};
|
||||
|
||||
mod get_user_music_api;
|
||||
pub use get_user_music_api::{GetUserMusicApi, GetUserMusicApiResp, UserMusic};
|
||||
|
||||
pub use get_user_music_api::{GetUserMusicApi, GetUserMusicApiResp, UserMusic, UserMusicDetail};
|
||||
|
||||
mod dxrating;
|
||||
pub use dxrating::{
|
||||
@@ -34,4 +33,4 @@ pub use dxrating::{
|
||||
DxMusicRecord,
|
||||
DxRatingNet,
|
||||
DxSheetId,
|
||||
};
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user