高亮个别用户的弹幕

高亮个别用户的弹幕, 有时候找一些特殊人物(其他直播主出现在直播房间)用

目前为 2021-01-30 提交的版本。查看 最新版本

// ==UserScript==
// @name         高亮个别用户的弹幕
// @namespace    http://tampermonkey.net/
// @version      0.6.4
// @description  高亮个别用户的弹幕, 有时候找一些特殊人物(其他直播主出现在直播房间)用
// @author       Eric Lam
// @include      /https?:\/\/live\.bilibili\.com\/(blanc\/)?\d+\??.*/
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js
// @require      https://cdn.jsdelivr.net/npm/[email protected]/dist/pako.min.js
// @require      https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/toastr.min.js
// @require      https://gf.qytechs.cn/scripts/417560-bliveproxy/code/bliveproxy.js?version=875812
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    console.log('using highlight filter')

    $(document.head).append(`<link href="https://cdn.jsdelivr.net/gh/CodeSeven/[email protected]/build/toastr.min.css" rel="stylesheet" />`)
    // 设定

    // 高亮用户 ID
    const highlightUsers = [
        396024008, // 日本兄贵
        604890122, // 日本兄贵
        623441609, // 凤玲天天 (DD)
        1618670884, // 日本兄贵
        840358977, // 日本兄贵
        406805563, // 乙女音
        2299184,  // 古守
        625255764, // 辻蓝佳音瑠
        198297, // 冰糖
        1576121, // paryi
    ]

    const settings = {
       // 颜色
       // 颜色列表 https://my.oschina.net/mye/blog/213309
       color: 0xFFFF00,
       // 透明度
       opacity: 1.0,
       playAudio: false // 啟用直播間進入通知音效
    }

    // 代码
    const audio = new Audio('https://mobcup.net/d/w4s8t6ld/mp3')
    const hightlights = new Set()
    bliveproxy.addCommandHandler('DANMU_MSG', command => {
        const userId = command.info[2][0]
        console.debug(userId)
        if (!highlightUsers.includes(userId)) return
        console.debug('detected highlighted user: '+userId)
        command.info[0][3] = settings.color
        command.info[1] += `(${command.info[2][1]})`
        console.debug(`converted danmaku: ${command.info[1]}`)
        hightlights.add(command.info[1])
   })
   toastr.options = {
       "closeButton": false,
       "debug": false,
       "newestOnTop": true,
       "progressBar": true,
       "positionClass": "toast-bottom-left",
       "preventDuplicates": false,
       "onclick": null,
       "showDuration": "300",
       "hideDuration": "1000",
       "timeOut": "5000",
       "extendedTimeOut": "1000",
       "showEasing": "swing",
       "hideEasing": "linear",
       "showMethod": "fadeIn",
       "hideMethod": "fadeOut"
   }
   bliveproxy.addCommandHandler('INTERACT_WORD', ({data}) => {
        const {uid, uname} = data
        if (!highlightUsers.includes(uid)) return
        console.debug(`name: ${uname} has enter this live room`)
        toastr.info(`你所关注的用户 ${uname} 已进入此直播间。`, `噔噔咚!`)
        if (settings.playAudio) audio.play()
   })
    const config = { attributes: false, childList: true, subtree: true }
    function danmakuCheckCallback(mutationsList){
        for(const mu of mutationsList){
            for (const node of mu.addedNodes){
                const danmaku = node?.innerText?.trim() ?? node?.data?.trim()
                if (danmaku === undefined || danmaku === '') continue
                if (!hightlights.has(danmaku)) continue
                console.debug('highlighting danmaku: '+danmaku)
                const n = node.innerText !== undefined ? node : node.parentElement
                const jimaku = $(n)
                jimaku.css('opacity', `${settings.opacity}`)
                hightlights.delete(danmaku)
            }
        }
    }
   const danmakuObserver = new MutationObserver((mu, obs) => danmakuCheckCallback(mu))
   danmakuObserver.observe($('.bilibili-live-player-video-danmaku')[0], config)
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址