// ==UserScript== // @name 高亮个别用户的弹幕 // @namespace http://tampermonkey.net/ // @version 0.6.1 // @description 高亮个别用户的弹幕, 有时候找一些特殊人物(其他直播主出现在直播房间)用 // @author Eric Lam // @include /https?:\/\/live\.bilibili\.com\/(blanc\/)?\d+\??.*/ // @require https://code.jquery.com/jquery-3.5.1.js // @require https://cdnjs.cloudflare.com/ajax/libs/pako/1.0.10/pako.min.js // @require https://greasyfork.org/scripts/417560-bliveproxy/code/bliveproxy.js?version=875812 // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; console.log('using highlight filter') // 设定 // 高亮用户 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: 0x66FF00, // 透明度 opacity: 1.0 } // 代码 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]) }) 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) })();