为你的哔哩哔哩PC首页增加「猜你喜欢」模块
Total ratings
4.61
(Rating count:
46)
Review summary
Pros
- 插件功能很不错
- 可以改善B站的推荐视频体验
- 感谢作者的更新
- 用户界面友好
Cons
- 停止更新,无法适配新版首页
- 在新版首页上失效
- 存在bug,比如视频封面拉伸
- 不能与其他浏览器同步
Most mentioned
- 新版首页无法使用
- 求升级维护
- 插件停止更新
- 视频推荐显示不正常
Upgrade to see all 80 reviews
Recent reviews
Recent rating average:
5.00
All time rating average:
4.61
Upgrade to see all 80 reviews
Rating filters
5 star 4 star
3 star
2 star
1 star
Date | Author | Rating | Lang | Comment |
---|---|---|---|---|
2023-10-27 | 雷托 | 是很不错的插件,可惜停止更新了,新版已经无法适配了,已失效 | ||
2023-10-27 | 雷托 | zh | 是很不错的插件,可惜停止更新了,新版已经无法适配了,已失效 | |
2023-09-01 | 萌之神唑 | B站强制更新新版首页,已经失效了 | ||
2023-09-01 | 萌之神唑 | zh | B站强制更新新版首页,已经失效了 | |
2021-10-30 | hp l | zh | 为什么没用,根本没显示。。。 | |
2022-01-29 | Autism | 请问出现这个怎么办 // 插入页面 // 目前看来第一个<section class="bili-grid short-margin grid-anchor">是首屏的推荐模块,我们直接插在她下面就可以了 const anchor = document.querySelector('.bili-grid.short-margin.grid-anchor'); if (!anchor) { throw new Error(`${LOG_PREFIX} 无法定位首屏推荐模块 <section class="bili-grid short-margin grid-anchor">`) } anchor.insertAdjacentElement('afterEnd', node); UI.node = node; resolve(); }); }, // 获取推荐模块的引用 getRecommandNode() { return new Promise(async(resolve) => { // 检查是否有已插入的节点 UI.node = document.querySelector('#_bili_guessyoulike'); if (!UI.node) { // 没有就创建 await UI.insertRecommands(); } resolve(); }); }, renderVideoCard(video) { function toWan(number) { return number > 9999 ? ((number / 10000).toFixed(1) + '万') : number; } function toMin(seconds) { return String(Math.floor(seconds / 60)).padStart(2, '0') + ':' + String(seconds % 60).padStart(2, '0'); } function toHttps(url) { return url.replace('http://', 'https://'); } return videoCardTemplate.replaceAll('!#{bvid}', video.bvid) .replaceAll('!#{duration}', toMin(video.duration)) .replaceAll('!#{title}', video.title) .replaceAll('!#{cover}', toHttps(video.pic)) .replaceAll('!#{view}', toWan(video.stat.view)) .replaceAll('!#{like}', toWan(video.stat.like)) .replaceAll('!#{uid}', video.up.mid) .replaceAll('!#{avatar}', toHttps(video.up.face)) .replaceAll('!#{username}', video.up.name) }, async updateRecommands(videos) { await UI.getRecommandNode(); const node = UI.node; const stage = node.querySelector('.bangumi-activity-body'); if (videos.length) { // 生成视频卡片 const videoCardsHTML = videos.map(video => UI.renderVideoCard(video)).join(''); stage.innerHTML = videoCardsHTML; } else { stage.innerHTML = '<p style="color: #777; line-height: 360px; text-align: center; width: 100%;">观看记录为空,快去看几个视频吧~</p>'; } }, // 监听来自页面的更新请求 listen() { window.addEventListener('message', (ev) => { if (ev.data.type && ev.data.type == 'UPDATE_RECOMMANDS') { RECOMMAND.recommand(recommandMax); } }); } } // 在视频页直接点击关联视频并不会刷新页面,而是直接ajax加载改变url,所以我们要监听hashchange // 试了下hashchange事件好像监听不到?不知道为啥,写个dirty check吧 const URLLISTENER = { timer: null, bvid: '', tick() { const bvid = UI.getBVID(); if (bvid !== URLLISTENER.bvid) { DB.logUserViewHistory(bvid); RECOMMAND.get(bvid); URLLISTENER.bvid = bvid; console.log(`${LOG_PREFIX} Logged ${bvid}`); } }, init() { URLLISTENER.timer = setInterval(URLLISTENER.tick, 10000); // 10s检查一次差不多了吧 URLLISTENER.tick(); } } function init() { // 当前是否首页? if (UI.isIndex()) { RECOMMAND.recommand(recommandMax); UI.listen(); } // 当前是否视频播放页? // 如果是视频播放页,则获取当前视频的相关推荐视频 if (UI.isVideo()) { URLLISTENER.init(); } } // 增加了bvid字段,需要清除以前的数据 DB.get('_20200325_clear_data', (cleared) => { if (cleared) { init(); } else { chrome.storage.local.clear(() => { DB.set({ '_20200325_clear_data': true }); init(); }); } }); | ||
2022-01-29 | Autism | zh | 请问出现这个怎么办 // 插入页面 // 目前看来第一个<section class="bili-grid short-margin grid-anchor">是首屏的推荐模块,我们直接插在她下面就可以了 const anchor = document.querySelector('.bili-grid.short-margin.grid-anchor'); if (!anchor) { throw new Error(`${LOG_PREFIX} 无法定位首屏推荐模块 <section class="bili-grid short-margin grid-anchor">`) } anchor.insertAdjacentElement('afterEnd', node); UI.node = node; resolve(); }); }, // 获取推荐模块的引用 getRecommandNode() { return new Promise(async(resolve) => { // 检查是否有已插入的节点 UI.node = document.querySelector('#_bili_guessyoulike'); if (!UI.node) { // 没有就创建 await UI.insertRecommands(); } resolve(); }); }, renderVideoCard(video) { function toWan(number) { return number > 9999 ? ((number / 10000).toFixed(1) + '万') : number; } function toMin(seconds) { return String(Math.floor(seconds / 60)).padStart(2, '0') + ':' + String(seconds % 60).padStart(2, '0'); } function toHttps(url) { return url.replace('http://', 'https://'); } return videoCardTemplate.replaceAll('!#{bvid}', video.bvid) .replaceAll('!#{duration}', toMin(video.duration)) .replaceAll('!#{title}', video.title) .replaceAll('!#{cover}', toHttps(video.pic)) .replaceAll('!#{view}', toWan(video.stat.view)) .replaceAll('!#{like}', toWan(video.stat.like)) .replaceAll('!#{uid}', video.up.mid) .replaceAll('!#{avatar}', toHttps(video.up.face)) .replaceAll('!#{username}', video.up.name) }, async updateRecommands(videos) { await UI.getRecommandNode(); const node = UI.node; const stage = node.querySelector('.bangumi-activity-body'); if (videos.length) { // 生成视频卡片 const videoCardsHTML = videos.map(video => UI.renderVideoCard(video)).join(''); stage.innerHTML = videoCardsHTML; } else { stage.innerHTML = '<p style="color: #777; line-height: 360px; text-align: center; width: 100%;">观看记录为空,快去看几个视频吧~</p>'; } }, // 监听来自页面的更新请求 listen() { window.addEventListener('message', (ev) => { if (ev.data.type && ev.data.type == 'UPDATE_RECOMMANDS') { RECOMMAND.recommand(recommandMax); } }); } } // 在视频页直接点击关联视频并不会刷新页面,而是直接ajax加载改变url,所以我们要监听hashchange // 试了下hashchange事件好像监听不到?不知道为啥,写个dirty check吧 const URLLISTENER = { timer: null, bvid: '', tick() { const bvid = UI.getBVID(); if (bvid !== URLLISTENER.bvid) { DB.logUserViewHistory(bvid); RECOMMAND.get(bvid); URLLISTENER.bvid = bvid; console.log(`${LOG_PREFIX} Logged ${bvid}`); } }, init() { URLLISTENER.timer = setInterval(URLLISTENER.tick, 10000); // 10s检查一次差不多了吧 URLLISTENER.tick(); } } function init() { // 当前是否首页? if (UI.isIndex()) { RECOMMAND.recommand(recommandMax); UI.listen(); } // 当前是否视频播放页? // 如果是视频播放页,则获取当前视频的相关推荐视频 if (UI.isVideo()) { URLLISTENER.init(); } } // 增加了bvid字段,需要清除以前的数据 DB.get('_20200325_clear_data', (cleared) => { if (cleared) { init(); } else { chrome.storage.local.clear(() => { DB.set({ '_20200325_clear_data': true }); init(); }); } }); | |
2022-01-18 | 郁祉峤 | 感谢作者更新,新版首页也是配了,排版布局也不变型了,给点个赞。 | ||
2022-01-18 | 郁祉峤 | zh | 感谢作者更新,新版首页也是配了,排版布局也不变型了,给点个赞。 | |
2022-01-13 | Yinan Chen | 之前用的挺喜欢的,但是好像新版首页又不能用了 |
Upgrade to see all 80 reviews