Greasy Fork

来自缓存

Greasy Fork is available in English.

电脑弹幕颜色过滤器

将指定的 B 站弹幕颜色隐藏或替换为其他颜色

当前为 2021-02-03 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name             电脑弹幕颜色过滤器
// @description      将指定的 B 站弹幕颜色隐藏或替换为其他颜色
// @namespace        https://cldxiang.com/
// @version          1.0.0
// @include          https://*.bilibili.com/*
// @supportURL       https://github.com/CLDXiang/bili-danmaku-color-filter
// @author           CLDXiang
// @noframes
// ==/UserScript==
 
(function () {
  'use strict';
 
  /** 刷新弹幕颜色的间隔时间(毫秒) */
  var CD = 233;
  /** 需要过滤的颜色列表 */
  var COLORS_TO_FILTER = [
    '#FFFF00', // 示例:过滤亮黄色弹幕
  ];
  /** 想要转换成的颜色,此处默认转为白色弹幕,如果想要直接隐藏,可以用 '#FFF0' */
  var TARGET_COLOR = '#FFF';
 
  /**
   * 将颜色值由十六进制表示转为 RGB 表示,如 `#FFFFFF` 转为 `rgb(255, 255, 255)`
   * @param colorHex 十六进制表示的颜色字符串
   */
  function hex2RGB(colorHex) {
    if (/rgb\(\d{1,3}, \d{1,3}, \d{1,3}\)/.test(colorHex)) {
      return colorHex;
    }
    if (!/#[0-9A-Fa-f]{6}/.test(colorHex)) {
      throw new Error("请按照正确格式输入颜色值,如 '#123abc'");
    }
    var r = parseInt(colorHex.slice(1, 3), 16);
    var g = parseInt(colorHex.slice(3, 5), 16);
    var b = parseInt(colorHex.slice(5, 7), 16);
    return 'rgb(' + r + ', ' + g + ', ' + b + ')';
  }
 
  var parsedColorsToFilter = COLORS_TO_FILTER.map(hex2RGB);
  console.log('将被过滤的弹幕颜色:', parsedColorsToFilter);
 
  setInterval(function () {
    document.querySelectorAll('.b-danmaku').forEach(function (ele) {
      if (parsedColorsToFilter.indexOf(ele.style.color) !== -1) {
        ele.style.color = TARGET_COLOR;
      }
    });
  }, CD);
 
  /** 输出当前显示的所有弹幕的颜色 */
  unsafeWindow.showDanmakuColor = function () {
    var colorList = [];
    document.querySelectorAll('.b-danmaku').forEach(function (ele) {
      colorList.push(ele.style.color);
    });
    if (colorList.length) {
      console.log('当前显示的弹幕颜色:', Array.from(new Set(colorList)));
    } else {
      console.log('没有找到弹幕');
    }
  };
})();