// ==UserScript== // @name Bilibili Live Danmaku Filter // @namespace http://tampermonkey.net/ // @version 0.4.0 // @description 使用一个简单的定时器把弹幕按照给定的正则表达式过滤一遍,征求更好的实现方式中 // @supportURL http://nga.178.com/read.php?tid=17690584 // @author yuyuyzl // @require https://code.jquery.com/jquery-3.4.0.min.js // @require https://cdn.bootcss.com/jqueryui/1.12.1/jquery-ui.min.js // @grant unsafeWindow // @grant GM_getValue // @grant GM_setValue // @grant GM_setClipboard // @grant GM_info // @match *://live.bilibili.com/* // @match *://yuyuyzl.github.io/BiliDMFilter/* // @match *://localhost*BiliDMFilter/* // @downloadURL none // ==/UserScript== var BLDFReg; var intervalID=-1; var config={ "BLDFAutoStart": true, "BLDFIntervalDelay": 20, "BLDFNeedSubBody": true, "BLDFRegex": "(?<=[“【]).*(?=[】”])", "BLDFShowDanmaku": false, "BLDFShowMatchedDanmakuText": true, "BLDFShowOtherDanmaku": false }; (function() { 'use strict'; var reloadConfig=function(){ Object.keys(config).forEach(function(key){ //console.log(key,config[key]); var valuet=GM_getValue(key); if(valuet!=null){ config[key]=valuet; }else { GM_setValue(key,config[key]); } }); }; reloadConfig(); if(window.location.href.match(/.*live.bilibili.com.*/)) { setTimeout(function () { // 以下CSS以及字幕框元素来自SOW社团的自动字幕组件 // 发布帖链接:http://nga.178.com/read.php?tid=17180967 $("head").append(''); $(".icon-left-part").append(''); $(".icon-left-part").append(''); if (config.BLDFNeedSubBody) { $("#gift-control-vm").before('
" + matchres + "
"); $('.SubtitleTextBody').each(function (i, obj) { $(obj).children().each(function (i, obj) { if (i >= 6) { //obj.remove(); } }); }); if (config.BLDFShowMatchedDanmakuText) obj.innerText = matchres + ' '; else obj.innerText = obj.innerText + ' '; } else { obj.innerText = obj.innerText + ' '; if (!config.BLDFShowOtherDanmaku) $(obj).addClass("invisibleDanmaku"); } } }) }, config.BLDFIntervalDelay); } if (config.BLDFAutoStart) startInterval(); $("#regexSettings").click(function () { window.open("https://yuyuyzl.github.io/BiliDMFilter/"); }); $("#regexOn").click(function () { if (intervalID >= 0) { clearInterval(intervalID); $(".bilibili-danmaku").each(function (i, obj) { $(obj).removeClass("invisibleDanmaku"); }); intervalID=-1; } else startInterval(); }); }, 3000); }else if(window.location.href.match(/.*\/BiliDMFilter\/.*/)){ console.log(config); $("#BLDFSettingsSave").removeAttr("disabled"); Object.keys(config).forEach(function(key){ $("#"+key).removeAttr("disabled"); console.log(typeof config[key]); if (typeof config[key]=="string"||typeof config[key]=="number")$("#"+key).val(config[key]); if (typeof config[key]=="boolean")$("#"+key).attr("checked", config[key]); }); $('#BLDFSettingsSave').click(function () { GM_setValue("UpdateTime",new Date()); Object.keys(config).forEach(function(key){ if (typeof config[key]=="string")GM_setValue(key,$("#"+key).val()); if (typeof config[key]=="number")GM_setValue(key,parseInt($("#"+key).val())); if (typeof config[key]=="boolean")GM_setValue(key,$("#"+key).is(':checked')); }); }) } })();