🏠 Home 

Bilibili 按标签、标题、时长、UP主屏蔽视频

对Bilibili的视频卡片,以标签、标题、UP主、时长、竖屏、充电、评论等信息来屏蔽视频,附带去除视频卡片中的直播、广告、推广内容的功能。

< Обсуждения: Bilibili 按标签、标题、时长、UP主屏蔽视频

Отзыв: Хороший — скрипт работает как нужно

§
Создано: 18.04.2024
Изменено: 18.04.2024

使用BewlyBewly网页插件美化bilibili,并同时使用该插件时,首页会因为获取视频列表失败而导致屏蔽失效,对部分代码进行修改可以修复: 将function getVideoElements()函数修改成如下内容:

// 获取视频元素
function getVideoElements() {
// 获取所有有可能是视频元素的标签
//let videoElements = document.querySelectorAll(
// div.bili-video-card 首页(https://www.bilibili.com/)、分区首页(https://www.bilibili.com/v/*)、搜索页面(https://search.bilibili.com/*)
// div.video-page-card-small 播放页右侧推荐(https://www.bilibili.com/video/BV****)
// li.bili-rank-list-video__item 分区首页-子分区右侧热门(https://www.bilibili.com/v/*)
// div.video-card 综合热门(https://www.bilibili.com/v/popular/all) 、每周必看(https://www.bilibili.com/v/popular/weekly) 、入站必刷(https://www.bilibili.com/v/popular/history)
// div.video-card-reco 旧版首页推送(https://www.bilibili.com/)
// div.video-card-common 旧版首页分区(https://www.bilibili.com/)
// div.rank-wrap 旧版首页分区右侧排行(https://www.bilibili.com/)
//"div.bili-video-card, div.video-page-card-small, li.bili-rank-list-video__item, div.video-card, div.video-card-reco, div.video-card-common, div.rank-wrap, div.video-card.group"
//);
let videoElements;
if (window.location.href === "https://www.bilibili.com/"){
//获取shadowDOM父标签
let container = document.getElementById("bewly");
let shadowRoot = container.shadowRoot;
//获取视频列表
videoElements = shadowRoot.querySelectorAll("div.bili-video-card, div.video-page-card-small, li.bili-rank-list-video__item, div.video-card, div.video-card-reco, div.video-card-common, div.rank-wrap, div.video-card.group");
//为刷新视频列表按钮添加事件监听器再次调用屏蔽器,否则刷新的视频列表无法屏蔽,调用屏蔽器时延时调用,不然获取不到视频列表
shadowRoot.querySelector("button.b-button.b-button--type-default.b-button--size-small").addEventListener("click", ()=>{
setTimeout(####YouBilibiliRecommendationSystem, 1000);
}, { once: true });
}
else{
//如果不是首页,没有获取视频列表问题,使用原来的获取方式即可
videoElements = document.querySelectorAll(
"div.bili-video-card, div.video-page-card-small, li.bili-rank-list-video__item, div.video-card, div.video-card-reco, div.video-card-common, div.rank-wrap, div.video-card.group"
);
}
//let videoElements = document.getElementsByClassName("video-card");
// 过滤掉没有包含a标签的元素
videoElements = Array.from(videoElements).filter((element) => element.querySelector("a"));
// 返回处理后的结果
return videoElements;
}

将1186行左右页面加载结束运行脚本的部分进行延时,否则太早获取视频列表无法成功(可以尝试把延时时间缩短,单位是ms)如下:

// 页面加载完成后运行脚本
window.addEventListener("load", ()=>{
setTimeout(####YouBilibiliRecommendationSystem, 1000);
});

Ответить

Войдите, чтобы ответить.