2024-10-25 17:57:34 +08:00
|
|
|
interface Res {
|
|
|
|
code: number
|
|
|
|
message: string
|
|
|
|
ttl: number
|
|
|
|
data: {
|
|
|
|
trending: {
|
|
|
|
title: string
|
|
|
|
trackid: string
|
|
|
|
list: {
|
|
|
|
keyword: string
|
|
|
|
show_name: string
|
|
|
|
icon: string
|
|
|
|
uri: string
|
|
|
|
goto: string
|
|
|
|
heat_score: number
|
|
|
|
}[]
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const hotSearch = defineSource(async () => {
|
|
|
|
const url = "https://api.bilibili.com/x/web-interface/wbi/search/square?limit=30"
|
2024-10-26 22:31:18 +08:00
|
|
|
const cookie = (await $fetch.raw(`https://bilibili.tv`)).headers.getSetCookie()
|
2024-10-25 17:57:34 +08:00
|
|
|
const res: Res = await $fetch(url, {
|
|
|
|
headers: {
|
|
|
|
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36",
|
2024-10-26 22:31:18 +08:00
|
|
|
"cookie": cookie[0].replace(/.tv/g, ".com"),
|
|
|
|
"referer": "https://www.bilibili.com/",
|
2024-10-25 17:57:34 +08:00
|
|
|
},
|
|
|
|
})
|
|
|
|
|
|
|
|
return res.data.trending.list.map(k => ({
|
|
|
|
id: k.keyword,
|
|
|
|
title: k.show_name,
|
|
|
|
url: `https://search.bilibili.com/all?keyword=${encodeURIComponent(k.keyword)}`,
|
|
|
|
extra: {
|
|
|
|
icon: k.icon && `/api/proxy?img=${encodeURIComponent(k.icon)}`,
|
|
|
|
},
|
|
|
|
}))
|
|
|
|
})
|
|
|
|
|
|
|
|
export default defineSource({
|
|
|
|
"bilibili": hotSearch,
|
|
|
|
"bilibili-hot-search": hotSearch,
|
|
|
|
})
|