use crate::{ BilibiliRequest, BpiClient, BpiError, BpiResponse };
use serde::{ Deserialize, Serialize };
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct NameUidItem {
pub name: String,
pub uid: String,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
pub struct NameToUidData {
pub uid_list: Vec<NameUidItem>,
}
impl BpiClient {
pub async fn user_name_to_uid(
&self,
names: &[&str]
) -> Result<BpiResponse<NameToUidData>, BpiError> {
let names_str = names.join(",");
self
.get("https://api.bilibili.com/x/polymer/web-dynamic/v1/name-to-uid")
.query(&[("names", names_str)])
.send_bpi("用户名查 UID").await
}
}
#[cfg(test)]
mod tests {
use super::*;
use tracing::info;
#[tokio::test]
async fn test_user_name_to_uid() {
let bpi = BpiClient::new();
let resp = bpi.user_name_to_uid(&["LexBurner", "某科学"]).await;
assert!(resp.is_ok());
if let Ok(r) = resp {
info!("用户名查 UID 返回: {:?}", r);
}
}
}