Closed F-park closed 8 months ago
不要总想一些奇怪的互动方式……尽量少增加新的操作。现在的卡片是悬停在用户名上的,这个feature如果出现只需要悬停在视频上就好了。
但是更重要的是,现在有多少视频支持这个功能。
不要总想一些奇怪的互动方式……尽量少增加新的操作。现在的卡片是悬停在用户名上的,这个feature如果出现只需要悬停在视频上就好了。
但是更重要的是,现在有多少视频支持这个功能。
确实不应该增加新的操作,但悬停在视频上就显示 “视频AI总结” 会导致很容易误触吧(视频封面占据的区域还挺大的,可能会导致 api 访问太过频繁),我觉得还是需要一个按键来触发。(但不应该是鼠标中键,我试了一下按下这个键会在新标签页打开这个视频)
我看了一下我 web 端主页推荐的视频,好几个几千播放的视频都有视频AI总结(有人声音频就会产生AI总结),具体有多少视频支持要交给 python 脚本来验证。
偷了一下懒,直接写到了 biliscope
里调试。
先说下结果,在我的推荐里,10个有6个以上是有视频AI总结的,看起来是可以增加这个功能的。
async function biliWbiGet(url, params, retry = 5) {
// 强制使用Wbi签名
const origUrl = url;
if (biliMixin === null) {
biliMixin = await getBiliMixin();
}
// convert params to url in a sorted order
params["wts"] = Math.floor(Date.now() / 1000);
let keys = Object.keys(params).sort();
let paramsStr = keys.map((key) => `${key}=${params[key]}`).join("&");
let sign = md5(paramsStr + biliMixin);
url = `${url}?${paramsStr}&w_rid=${sign}`;
return fetch(url, {"credentials": "include", "mode": "cors"})
.then((response) => response.json())
.then((data) => {
if (data['code'] == -403) {
biliMixin = null;
}
if (data['code'] == -799 && retry > 0) {
return new Promise(resolve => setTimeout(resolve, 1000))
.then(() => biliGet(origUrl, params, retry - 1));
}
return data;
});
}
const sleep = (timeout) => {
return new Promise((func)=>{
setTimeout(func, timeout)
})
}
async function get_ai_sum(){
// 获取主页推荐,默认获取10个视频
let data = await biliGet('https://api.bilibili.com/x/web-interface/index/top/rcmd', {})
console.log('推荐视频的数量:' + data.data.item.length);
for (let video of data.data.item) {
let bvid = video.bvid;
let cid = video.cid;
let mid = video.owner.mid;
console.log(video.title, video.bvid)
// 判断是否可以AI视频总结
biliWbiGet(`https://api.bilibili.com/x/web-interface/view/conclusion/judge`, {bvid: bvid, cid: cid, up_mid: mid})
.then(data => {
// 0 不能总结,1 可以总结
console.log(data.data.judge);
})
// 强制等待200ms
await sleep(200);
}
}
get_ai_sum();
悬停在视频上显示总结和悬停在up主名字上显示卡片是一样的啊,由于debounce的存在,鼠标不是经过视频就会触发这个卡片,需要在上面停留一定的时间才会触发,现在卡片也是这样的,你的鼠标滑过up主名字的时候什么都不会发生。
悬停在视频上显示总结和悬停在up主名字上显示卡片是一样的啊,由于debounce的存在,鼠标不是经过视频就会触发这个卡片,需要在上面停留一定的时间才会触发,现在卡片也是这样的,你的鼠标滑过up主名字的时候什么都不会发生。
如果有一定响应延迟的话那看起来可以增加这个特性,应该能很好的提升用户体验。
看了一下,显示卡片现在是 300ms 的延迟触发,悬停在视频上估计得做 1s 的延迟触发。
新需求背景
B站web端增加了获取AI总结内容(测试版),感觉可以加入至
biliscope
中。新功能操作方式
悬停在视频上按下某个键将显示当前视频的视频AI总结(固定显示在标题下方)
实现难度
可能需要一个新的卡片UI用来专门显示