feat: 支持搜索关注的 UP 主 (#588)

This commit is contained in:
ᴀᴍᴛᴏᴀᴇʀ
2026-01-05 00:39:45 +08:00
committed by GitHub
parent 0b5ae3d664
commit 56f5ed8e01
5 changed files with 44 additions and 17 deletions

View File

@@ -82,6 +82,7 @@ pub struct FollowedCollectionsRequest {
pub struct FollowedUppersRequest {
pub page_num: Option<i32>,
pub page_size: Option<i32>,
pub name: Option<String>,
}
#[derive(Deserialize, Validate)]

View File

@@ -153,7 +153,9 @@ pub async fn get_followed_uppers(
let credential = &VersionedConfig::get().read().credential;
let me = Me::new(bili_client.as_ref(), credential);
let (page_num, page_size) = (params.page_num.unwrap_or(1), params.page_size.unwrap_or(20));
let bili_uppers = me.get_followed_uppers(page_num, page_size).await?;
let bili_uppers = me
.get_followed_uppers(page_num, page_size, params.name.as_deref())
.await?;
let bili_uid: Vec<_> = bili_uppers.list.iter().map(|upper| upper.mid).collect();

View File

@@ -60,21 +60,31 @@ impl<'a> Me<'a> {
Ok(serde_json::from_value(resp["data"].take())?)
}
pub async fn get_followed_uppers(&self, page_num: i32, page_size: i32) -> Result<FollowedUppers> {
pub async fn get_followed_uppers(
&self,
page_num: i32,
page_size: i32,
name: Option<&str>,
) -> Result<FollowedUppers> {
ensure!(
!self.mid().is_empty(),
"未获取到用户 ID请确保填写设置中的 B 站认证信息"
);
let mut resp = self
let url = if name.is_some() {
"https://api.bilibili.com/x/relation/followings/search"
} else {
"https://api.bilibili.com/x/relation/followings"
};
let mut request = self
.client
.request(
Method::GET,
"https://api.bilibili.com/x/relation/followings",
self.credential,
)
.request(Method::GET, url, self.credential)
.await
.query(&[("vmid", self.mid())])
.query(&[("pn", page_num), ("ps", page_size)])
.query(&[("pn", page_num), ("ps", page_size)]);
if let Some(name) = name {
request = request.query(&[("name", name)]);
}
let mut resp = request
.send()
.await?
.error_for_status()?