去他喵的大会员彩色弹幕

将大会员彩色弹幕改回默认颜色或彻底屏蔽,由于屏蔽失效且原作者qianxu长时间未更新,故修改一版暂时使用,版权归原作者所有

// ==UserScript==
// @name         去他喵的大会员彩色弹幕
// @description  将大会员彩色弹幕改回默认颜色或彻底屏蔽,由于屏蔽失效且原作者qianxu长时间未更新,故修改一版暂时使用,版权归原作者所有
// @author       shy0511
// @license MIT
// @version      1.1.0
// @match        https://www.bilibili.com/video/*
// @match        https://www.bilibili.com/list/*
// @match        https://www.bilibili.com/bangumi/play/*
// @icon         https://www.bilibili.com/favicon.ico
// @namespace    https://greasyfork.org/scripts/501945
// @grant        GM_getValue
// @grant        GM_setValue
// @grant        GM_deleteValue
// @grant        GM_registerMenuCommand
// ==/UserScript==

;(function () {
  'use strict'

  // 读取配置
  const blockVipDm = GM_getValue('blockVipDm') // 是否彻底屏蔽大会员彩色弹幕
  const playerProfile = localStorage.getItem('bpx_player_profile') // 播放器配置

  // 注册菜单
  GM_registerMenuCommand(`${blockVipDm ? '"彻底屏蔽大会员彩色弹幕"' : '"保留大会员彩色弹幕内容"'} `, () => {
    if (blockVipDm) {
      GM_deleteValue('blockVipDm')
    } else {
      GM_setValue('blockVipDm', true)
    }
    location.reload()
  })

  // 配置样式
  let strokeType = 0 // 描边类型,默认为重墨

  // 有播放器配置则则读取用户设置的描边类型
  if (playerProfile) {
    strokeType = JSON.parse(playerProfile).dmSetting.fontborder
  }

  let textShadow = '' // 文本阴影

  // 根据描边类型设置文本阴影
  switch (strokeType) {
    case 1: // 描边
      textShadow = '0 0 1px #000,0 0 1px #000,0 0 1px #000'
      break
    case 2: // 45° 投影
      textShadow = '1px 1px 2px #000,0 0 1px #000'
      break
    default: // 重墨
      textShadow = '1px 0 1px #000,0 1px 1px #000,0 -1px 1px #000,-1px 0 1px #000'
  }

  // 创建样式元素
  const styleElement = document.createElement('style')

  // 根据配置设置样式内容
  if (blockVipDm) {
    // 彻底屏蔽
    styleElement.innerHTML = '.bili-danmaku-x-dm-vip, .bili-dm-vip {display:none} '
  } else {
    // 改回默认颜色
    styleElement.innerHTML = `.bili-danmaku-x-dm, .bili-dm {--textShadow:${textShadow}}.bili-danmaku-x-dm-vip, .bili-dm-vip {background-image:none !important;text-shadow:inherit !important}`
  }

  // 将样式元素添加到页面中
  document.body.appendChild(styleElement)
})()