Greasy Fork is available in English.
屏蔽B站、油管、推特三大##的原神、星穹铁道内鬼爆料视频和消息
// ==UserScript== // @name B站、油管、推特屏蔽原神内鬼爆料相关视频 // @namespace http://tampermonkey.net/ // @version 3.0.0-alpha.2 // @description 屏蔽B站、油管、推特三大##的原神、星穹铁道内鬼爆料视频和消息 // @author 凡云 - https://space.bilibili.com/3491267 // @match *://*.bilibili.com/* // @match *://*.youtube.com/* // @match *://*.twitter.com/* // @icon https://static.hdslb.com/images/favicon.ico // @require https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js // @grant GM_getValue // @grant GM_setValue // @grant GM_deleteValue // @grant GM_listValues // @grant GM_addValueChangeListener // @grant GM_addStyle // @grant GM_xmlhttpRequest // @noframes // @license MIT // ==/UserScript== (function() { 'use strict'; const authorLink = 'https://space.bilibili.com/3491267' const scriptLink = 'https://greasyfork.org/zh-CN/scripts/447376' const baseApi = 'https://lcybff.github.io/helper/mihoyoLeaksBlock' const configApi = baseApi + '/config.json' const areaApi = baseApi + '/arealist.json' const imagesAll = { bilibili: { // 右侧按钮背景图标 openIcon: 'https://i0.hdslb.com/bfs/article/7e764e5831314a698d116f59f2977aed3491267.png', // 设置界面标题背景图 layoutHeaderBg: 'https://i0.hdslb.com/bfs/article/f2ef018ee493b3e6df285333f6a9fc623491267.jpg', // 设置界面四角图标 cornerIcon: 'https://i0.hdslb.com/bfs/article/e99bbc04cdb89bcd1da5d78fdab0b1dd3491267.png', // 外链图标 outlinkIcon: 'https://i0.hdslb.com/bfs/article/546d3a598cbe738e74ab6645b8d3ed023491267.png', // 帮助图标 helpIcon: 'https://i0.hdslb.com/bfs/article/91129a4c63c0bd1a77dd423a5f9b6c313491267.png', // 关闭按钮 closeIcon: 'https://i0.hdslb.com/bfs/article/a4ac29bb1567b563b6a682d6ae467ba23491267.png', // 设置界面底部图 brImg: 'https://i0.hdslb.com/bfs/article/16e88865719a0baaa4433e1334d047fb3491267.png', // 导入配置图标 importIcon: 'https://i0.hdslb.com/bfs/article/03b81284c1e2e110b1fb07dc59e30ced3491267.png', // 导出配置图标 exportIcon: 'https://i0.hdslb.com/bfs/article/cbe024b4261dc156cf3b154af33f56ef3491267.png', // 查看图标 watchIcon: 'https://i0.hdslb.com/bfs/article/bbbf6251696153107c2774f6aa4c604b3491267.png', // 清除缓存配置图标 clearIcon: 'https://i0.hdslb.com/bfs/article/0fbfaeb4d2b116bc729429745a27c4f53491267.png' }, youtube: { openIcon: 'https://pbs.twimg.com/media/FgzUHioakAAQxc0?format=png', layoutHeaderBg: 'https://pbs.twimg.com/media/FhdHiktaYAAtB6Q?format=jpg', cornerIcon: 'https://pbs.twimg.com/media/FgzUHimaYAE0RgH?format=png', outlinkIcon: 'https://pbs.twimg.com/media/FyQ6cRmaMAgxd2N?format=png', helpIcon: 'https://pbs.twimg.com/media/FyQ6cReacAA_AFg?format=png', closeIcon: 'https://pbs.twimg.com/media/FyQ6cRaaYAIBj7o?format=png', brImg: 'https://pbs.twimg.com/media/FhdHikiaUAE1nRX?format=png', importIcon: 'https://pbs.twimg.com/media/FyQ6eqIaUAAaaq-?format=png', exportIcon: 'https://pbs.twimg.com/media/FyQ6eppaMAEh_C2?format=png', watchIcon: 'https://pbs.twimg.com/media/FyQ6cRfaIAAICMe?format=png', clearIcon: 'https://pbs.twimg.com/media/FyQ7cWPakAALZeB?format=png', }, twitter: { openIcon: 'https://pbs.twimg.com/media/FgzUHioakAAQxc0?format=png', layoutHeaderBg: 'https://pbs.twimg.com/media/FhdHiktaYAAtB6Q?format=jpg', cornerIcon: 'https://pbs.twimg.com/media/FgzUHimaYAE0RgH?format=png', outlinkIcon: 'https://pbs.twimg.com/media/FyQ6cRmaMAgxd2N?format=png', helpIcon: 'https://pbs.twimg.com/media/FyQ6cReacAA_AFg?format=png', closeIcon: 'https://pbs.twimg.com/media/FyQ6cRaaYAIBj7o?format=png', brImg: 'https://pbs.twimg.com/media/FhdHikiaUAE1nRX?format=png', importIcon: 'https://pbs.twimg.com/media/FyQ6eqIaUAAaaq-?format=png', exportIcon: 'https://pbs.twimg.com/media/FyQ6eppaMAEh_C2?format=png', watchIcon: 'https://pbs.twimg.com/media/FyQ6cRfaIAAICMe?format=png', clearIcon: 'https://pbs.twimg.com/media/FyQ7cWPakAALZeB?format=png', }, } const blockTimeout = 500 // 远程获取初始化配置 function requestConfig(api = '') { return new Promise(function(resolve, reject){ GM_xmlhttpRequest({ method: 'GET', url: api, responseType: 'json', onload: function(res) { if (res.status == 200) { resolve(res.response); } else { reject({ error: '数据请求失败,请稍后重试' }); } }, onerror: function() { alert('请求失败,请允许访问跨源资源重试') } }) }) } var fullBlockTitle, fullBlockUsers, fullBlockUsersWhite, areaList, areaListGM, images, activeDomain // 初始化过滤 function initialize() { // 获取全部区域 areaListGM = GMGetValue('areaList', []) images = imagesAll.common if (/bilibili/.test(document.domain)) { areaList = getAreaList('bilibili') initActive(toCnName('Bili'), 'Bili') blockArea('bilibili') images = imagesAll.bilibili } if (/youtube/.test(document.domain)) { areaList = getAreaList('youtube') initActive(toCnName('Ytb'), 'Ytb') blockArea('youtube') images = imagesAll.youtube } if (/twitter/.test(document.domain)) { areaList = getAreaList('twitter') initActive(toCnName('Twitter'), 'Twitter') blockArea('twitter') images = imagesAll.twitter } initImages() // 表单赋值 document.getElementById('blockTitle').value = GMGetValue(fullBlockTitle) document.getElementById('blockUsers').value = GMGetValue(fullBlockUsers) document.getElementById('blockUsersWhite').value = GMGetValue(fullBlockUsersWhite) // 监听 GMChange(fullBlockTitle) GMChange(fullBlockUsers) GMChange(fullBlockUsersWhite) } // 转换标识英文 function toCnName(string = '') { if (/Bili/.test(string)) { return 'B站' } else if (/Ytb/.test(string)) { return '油管' } else { return '推特' } } // 公共 function blockCommon(main = '', item = '', text = '', media = '', user = '', home = false) { let blockTitle = getBlockRegExp(fullBlockTitle); let blockUsers = getBlockRegExp(fullBlockUsers); let blockUsersWhite = getBlockRegExp(fullBlockUsersWhite); $(main).find(item).each(function(){ let that = $(this) let textString = text ? that.find(text).text():'' let userString = user ? (home === true ? $(user).text() : that.find(user).text()):'' if (blockUsersWhite.test(userString.trim())) { // 白名单 } else if (blockTitle.test(textString) || blockUsers.test(userString)) { blurBlock('on', that, text, media) } else { blurBlock('off', that, text, media) } }) } // 推特 function blockTwitter(item = '', text = '', media = '', user = '') { let blockTitle = getBlockRegExp(fullBlockTitle); let blockUsers = getBlockRegExp(fullBlockUsers); let blockUsersWhite = getBlockRegExp(fullBlockUsersWhite); $(item).each(function(){ let that = $(this) let textString = text ? that.find(text).text():'' let userString = user ? that.find(user).text():'' if (blockUsersWhite.test(userString.trim())) { // 白名单 } else if ((blockTitle.test(textString) || blockUsers.test(userString)) && $(item).attr('tabindex') === '0') { blurBlock('on', that, text, media) } else { blurBlock('off', that, text, media) } }) } // 获取生效区域列表 function getAreaList(name = '', field = 'area') { let list = [] $('#blockLayout #areaWrap .areaBox .areaList').empty() areaListGM.forEach((e, i) => { let switchStatus = e.on === true ? 'on' : '' if (e[field] == name) { list.push(e) $('#blockLayout #areaWrap .areaBox .areaList').append('<div class="areaItem"><div class="name" title="' + e.name + '" data-index="' + i + '">' + e.name + '</div><div class="actions"><div class="switchButton ' + switchStatus + '" data-index="' + i + '"><i></i></div></div></div>') } }); return list } // 统一过滤入口 function blockArea(name = '') { setInterval(() => { areaList.forEach(e => { // 启用屏蔽状态 if (e.on === true) { switch (name) { case 'twitter': blockTwitter(e.item, e.text, e.media, e.user) break; default: blockCommon(e.main, e.item, e.text, e.media, e.user, e.home) break; } } }) }, blockTimeout) } // 目标标题和图片模糊化处理 function blurBlock(type = '', item = '', text = '', media = '') { if (type === 'on') { // 添加模糊化 item.find(text).addClass('blurBlock').attr('title', item.find(text).text()) item.find(media).addClass('blurBlock') } else { // 去除模糊化 item.find(text).removeClass('blurBlock') item.find(media).removeClass('blurBlock') } } // 恢复过滤前的状态 function blockRestart() { $('.blurBlock').removeClass('blurBlock') } // 设置当前生效配置 function initActive(name = '', activeName = '') { $('#blockLayout .tabs .tabs-title .tab').text(name) // 赋值键名 fullBlockTitle = 'blockTitle' + activeName fullBlockUsers = 'blockUsers' + activeName fullBlockUsersWhite = 'blockUsersWhite' + activeName activeDomain = activeName } // 显示/隐藏 屏蔽设置界面 $('body').on('click', '#blockOpenButton, #blockLayout .bg, #blockLayout .closeButton1', function() { $('#blockLayout').toggleClass('active') }) // 显示/隐藏区域界面 $('body').on('click', '#blockLayout .btnGroup .listButton, #blockLayout #areaWrap .closeButton2', function() { $('#blockLayout #areaWrap').toggleClass('show') }) // 隐藏更新界面 $('body').on('click', '#blockLayout #updateWrap .closeButton3', function() { $('#blockLayout #updateWrap').removeClass('show') }) // 隐藏比较界面 $('body').on('click', '#blockLayout #compareWrap .closeButton4', function() { $('#blockLayout #compareWrap').removeClass('show') }) // 显示屏蔽区域参数修改界面 $('body').on('click', '#blockLayout #areaWrap .areaBox .areaList .areaItem .name', function() { $('#blockLayout #areaWrap .areaBox .areaForm').css('display', 'flex') $('#blockLayout #areaWrap .areaBox .areaList').css('display', 'none') areaFormInit(areaListGM[$(this).data('index')], $(this).data('index')) }) // 隐藏屏蔽区域参数修改界面 $('body').on('click', '#blockLayout #areaWrap .areaBox .areaForm .backToList', function() { $('#blockLayout #areaWrap .areaBox .areaForm').hide() $('#blockLayout #areaWrap .areaBox .areaList').show() areaFormInit() }) // 提交修改屏蔽区域参数 $('body').on('click', '#blockLayout #areaWrap .areaBox .areaForm .submitArea', function() { let areaForm = document.getElementById('areaForm'); let areaFormData = new FormData(areaForm); let areaData = {} for(var d of areaFormData.entries()) { let value = d[1] if (d[0] == 'on') { value = value == 'true' ? true : false } areaData[d[0]] = value; } $('#blockLayout #areaWrap .areaBox .areaForm').css('display', 'none') $('#blockLayout #areaWrap .areaBox .areaList').css('display', 'block') let index = $(this).data('index') ? $(this).data('index'):0 areaListGM[index] = areaData GM_setValue('areaList', areaListGM) showMsg('修改成功') areaFormInit() clearInterval() blockRestart() initialize() return false; }) // 屏蔽列表区域选项开关 $('body').on('click', '#blockLayout #areaWrap .areaBox .areaList .areaItem .switchButton', function() { $(this).toggleClass("on") areaListGM[$(this).data('index')].on = $(this).hasClass('on') GM_setValue('areaList', areaListGM) clearInterval() blockRestart() initialize() }); var importConfig = [] // 导入配置 $('body').on('click', '#blockLayout .importConfigButton', function() { requestConfig(configApi).then(res => { importConfig = res $('#blockLayout #updateWrap').addClass('show') $('#blockLayout #updateWrap .areaBox .areaList').empty() let keys = Object.keys(importConfig) let name, checked = '', newIcon = '' keys.forEach(key => { if (/blockTitle/.test(key)) name = toCnName(key) + ' 屏蔽关键词' else if (/blockUsersWhite/.test(key)) name = toCnName(key) + ' 作者白名单' else if (/blockUsers/.test(key)) name = toCnName(key) + ' 作者黑名单' if (str2RegExp('/' + activeDomain + '/').test(key)) checked = 'checked' if (importConfig[key] != GMGetValue(key)) newIcon = '<i></i>' $('#blockLayout #updateWrap .areaBox .areaList').append('<div class="areaItem"><div class="name" title="' + name + '">' + name + '</div><div class="actions"><div><input id="' + key + '" type="checkbox" ' + checked + '><label for="' + key + '"></label></div><div class="watchButton iconButton" title="查看对比" style="background-image: url(' + images.watchIcon + ')" data-key="' + key + '">' + newIcon + '</div></div></div>') checked = '' newIcon = '' }) }) }) // 导入区域列表配置 $('body').on('click', '#blockLayout .importAreaButton', function() { requestConfig(areaApi).then(res => { GM_setValue('areaList', res.arealist) clearInterval() blockRestart() initialize() }) }) // 查看新旧值对比 $('body').on('click', '#blockLayout #updateWrap .areaBox .areaList .areaItem .watchButton', function() { let oldConfig = GMGetValue($(this).data('key')) let newConfig = importConfig[$(this).data('key')] $('#blockLayout #compareWrap').addClass('show') $('#blockLayout #compareWrap .old').val(oldConfig) $('#blockLayout #compareWrap .new').val(newConfig) }); // 全选更新区域按钮 $('body').on('click', '#blockLayout #updateWrap #checkAllUpdate', function(e) { if ($(this).prop('checked')) { $('#blockLayout #updateWrap .areaBox .areaList input').prop('checked', true) } else { $('#blockLayout #updateWrap .areaBox .areaList input').prop('checked', false) } }) // 确认更新设置 $('body').on('click', '#blockLayout .btnGroup .submitButton2', function() { clearInterval() $('#blockLayout #updateWrap .areaBox .areaList input').each(function() { if ($(this).prop('checked')) { let key = $(this).attr('id') GM_setValue(key, importConfig[key]) console.log(importConfig[key]) } }) showMsg('更新成功') $('#blockLayout #updateWrap').removeClass('show') $('#blockLayout #updateWrap .areaBox .areaList').empty() $('#blockLayout #compareWrap').removeClass('show') $('#blockLayout #compareWrap textarea').val('') $("#blockLayout #updateWrap #checkAllUpdate").prop('checked', false) importConfig = [] blockRestart() initialize() }) // 导出配置 $('body').on('click', '#blockLayout .exportConfigButton', function() { var configList = {} GM_listValues().forEach(e => { configList[e] = GM_getValue(e) }) var text = JSON.stringify(configList, null, "\t"); var element = document.createElement('a'); element.style.display = 'none'; document.body.appendChild(element); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', '米哈游内鬼屏蔽插件配置.json'); element.click(); document.body.removeChild(element); }) // 清理缓存配置 $('body').on('click', '#blockLayout .clearConfigButton', function() { if (confirm('确认清除本地缓存?')) { clearInterval() blockRestart() GM_listValues().forEach(e => { GM_deleteValue(e) }) initialize() showMsg('清理缓存成功') } }) // 重置初始化设置 $('body').on('click', '#blockLayout .btnGroup .resetButton', function() { if (confirm('确认初始化当前网站配置?')) { requestConfig(configApi).then(res => { clearInterval() GM_setValue(fullBlockTitle, res[fullBlockTitle]) GM_setValue(fullBlockUsers, res[fullBlockUsers]) GM_setValue(fullBlockUsersWhite, res[fullBlockUsersWhite]) showMsg('初始化成功') blockRestart() initialize() }) } }) // 确认保存设置 $('body').on('click', '#blockLayout .btnGroup .submitButton', function() { clearInterval() GM_setValue(fullBlockTitle, $('#blockTitle').val()) GM_setValue(fullBlockUsers, $('#blockUsers').val()) GM_setValue(fullBlockUsersWhite, $('#blockUsersWhite').val()) showMsg('保存成功') blockRestart() initialize() }) // 获取配置,如不存在则返回默认值 function GMGetValue(name = '', defaultValue = '') { return GM_getValue(name) ? GM_getValue(name) : defaultValue; } // 监听同域名的其他标签页的修改操作 function GMChange(name) { if (GM_getValue(name)) { GM_addValueChangeListener(name, function(Name, old_value, new_value, remote) { if (remote === true) { clearInterval() blockRestart() initialize() } }) } } // 显示提示 function showMsg(msg = '', timeout = 3000) { $('#blockMsg').text(msg) $('#blockMsg').addClass('active') setTimeout(() => { $('#blockMsg').removeClass('active') }, timeout); } // 获取屏蔽文本并转成RegExp对象 function getBlockRegExp(name = '') { let str = GM_getValue(name) ? GM_getValue(name) : null return new str2RegExp(str) } // 字符串转RegExp对象 function str2RegExp(str = '') { return new RegExp(str.replace(/^\/|\/[a-z]*$/gi, ''), str.replace(/^\/.*\/[^a-z]*/i, '')) } // 渲染屏蔽列表表单 function areaFormInit(data = {}, index = 0) { if (data) { let dataKeys = Object.keys(data) dataKeys.forEach((e, i) => { $('#blockLayout #areaForm ' + '[name="' + e + '"').val(data[e]) }) $('#blockLayout #areaWrap .areaBox .areaForm .submitArea').attr('data-index', index) } else { $('#blockLayout #areaWrap .areaBox .areaForm input').val('') } } // 屏蔽设置界面追加 function addBlockConsole() { // 右侧按钮 const blockOpenButton = "<a id='blockOpenButton'>米哈游内鬼屏蔽</a>"; $('body').append(blockOpenButton) // 区域界面 const areaWrap = '<div id="areaWrap"><div class="toolerGroup"><a href="javascript:;"class="importAreaButton iconButton"title="导入屏蔽配置"></a><a href="javascript:;"class="closeButton closeButton2 iconButton"title="关闭区域列表"></a></div><div class="areaBox"><h2>区域列表</h2><div class="areaList"></div><form id="areaForm"class="areaForm"><p>名称</p><input type="text"name="name"><p>域名</p><input type="text"name="area"><p>父类</p><input type="text"name="main"><p>目标</p><input type="text"name="item"><p>标题</p><input type="text"name="text"><p>媒体</p><input type="text"name="media"><input type="hidden"name="on"><input type="hidden"name="home"><p>用户名</p><input type="text"name="user"><button type="button"class="backToList">返回列表</button><button type="button"class="submitArea">确认修改</button></form></div></div>' // 更新、比较界面 const updateWrap = '<div id="updateWrap"><div class="toolerGroup"><div><input id="checkAllUpdate" type="checkbox"><label for="checkAllUpdate"></label></div><a href="javascript:;"class="closeButton closeButton3 iconButton"title="关闭更新列表"></a></div><div class="areaBox"><h2>更新列表</h2><div class="areaList"></div><div class="btnGroup"><div class="submitButton2 button" alt=""><div class="icon"><div class="yellow-circle"><div class="black-circle"></div></div></div><div class="text">确认更新</div></div></div></div></div><div id="compareWrap"><div class="toolerGroup"><a href="javascript:;"class="closeButton closeButton4 iconButton"title="关闭比较界面"></a></div><div class="areaBox"><h2>更新比较</h2><p>旧值</p><textarea class="old"rows="5" readonly></textarea><p>新值</p><textarea class="new"rows="5" readonly></textarea></div></div>' // 设置全局界面 const blockLayout = '<div id="blockLayout"><div class="bg"></div><div class="box"><div class="cornerIcon lt"></div><div class="cornerIcon rt"></div><div class="cornerIcon lb"></div><div class="cornerIcon rb"></div><div class="toolerGroup"><a href="javascript:;"class="clearConfigButton iconButton"title="清除缓存"></a><a href="javascript:;"class="exportConfigButton iconButton"title="导出配置"></a><a href="javascript:;"class="importConfigButton iconButton"title="导入区域配置"></a><a href="javascript:;"class="outlinkButton iconButton"target="_blank"title="作者B站主页"></a><a href="javascript:;"class="helpButton iconButton"target="_blank"title="帮助文档"></a><a href="javascript:;"class="closeButton closeButton1 iconButton"title="关闭界面"></a></div><div class="header"><h1>米哈游内鬼屏蔽工具</h1></div><div class="body"><div class="tabs"><div class="tabs-title"><div class="tab"></div></div><div class="tabs-content"><div class="tab-item"><p>屏蔽关键词</p><textarea id="blockTitle"rows="5"></textarea><p>作者黑名单</p><textarea id="blockUsers"rows="5"></textarea><p>作者白名单</p><textarea id="blockUsersWhite"rows="5"></textarea></div></div></div><div class="btnGroup"><div class="listButton button"alt=""><div class="icon listIcon"><span></span><span></span><span></span></div><div class="text">区域列表</div></div><div class="submitButton button"alt=""><div class="icon"><div class="yellow-circle"><div class="black-circle"></div></div></div><div class="text">确认修改</div></div></div><img src=""class="brImg"alt=""></div></div><div class="modulesWrap">' + areaWrap + updateWrap + '</div><div id="blockMsg"></div></div>'; $('body').append(blockLayout) } // 追加静态图片 function initImages() { $('#blockOpenButton').css('background-image', 'url(' + images.openIcon + ')') $('#blockLayout .box .header').css('background-image', 'url(' + images.layoutHeaderBg + ')') $('#blockLayout .cornerIcon').css('background-image', 'url(' + images.cornerIcon + ')') $('#blockLayout .outlinkButton').css('background-image', 'url(' + images.outlinkIcon + ')').attr('href', authorLink) $('#blockLayout .helpButton').css('background-image', 'url(' + images.helpIcon + ')').attr('href', scriptLink) $('#blockLayout .closeButton').css('background-image', 'url(' + images.closeIcon + ')') $('#blockLayout .importConfigButton').css('background-image', 'url(' + images.importIcon + ')') $('#blockLayout .importAreaButton').css('background-image', 'url(' + images.importIcon + ')') $('#blockLayout .exportConfigButton').css('background-image', 'url(' + images.exportIcon + ')') $('#blockLayout .clearConfigButton').css('background-image', 'url(' + images.clearIcon + ')') $('.brImg').attr('src', images.brImg) } // 初始化屏蔽界面 addBlockConsole() // 初始化 initialize() // 样式表 const BLOCK_STYLE = ` #blockOpenButton { position:fixed; z-index:99997; right:0; top:40%; width:30px; border-top-right-radius:2px; border-bottom-right-radius:2px; background-color:rgba(0 178 255); font-size:12px; color:#fff; padding:8px 9px; line-height:14px; box-sizing:border-box; text-decoration:none; outline:none; cursor:pointer; background-position: center 5px; background-size: 24px; background-repeat: no-repeat; padding-top: 30px; border-top-left-radius: 8px; border-bottom-left-radius: 8px; transition: all 0.3s; } #blockOpenButton:hover { box-shadow:0 0px 10px 0 rgba(0 178 255 / 40%); } #blockLayout { display: none; } #blockLayout *::-webkit-scrollbar { width: 6px; height: 1px; } #blockLayout *::-webkit-scrollbar-thumb { border-radius: 10px; -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2); background: #dfd0b3; } #blockLayout *::-webkit-scrollbar-track { -webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2); border-radius: 10px; background: #ededed; } #blockLayout * { font-family: 'system-ui' !important } #blockLayout .bg { position: fixed; inset: 0px; background: rgba(0, 0, 0, 0.7); animation-name: balh-settings-bg; animation-duration: 0.5s; z-index: 99997; cursor: pointer; } #blockLayout .box { position: fixed; background: rgb(59, 67, 84); top: 50%; left: 50%; transform: translate(-50%, -50%); cursor: default; z-index: 99997; } #blockLayout .box * { line-height: 1.5 } #blockLayout .box .header { border-top-left-radius: 10px; border-top-right-radius: 10px; text-align: center; background-size: contain; background-repeat: no-repeat; height: 80px; } #blockLayout .box .body { padding: 20px; background-color: #ece5d8; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px; background-size: cover; } #blockLayout .box img { max-width: 100%; } #blockLayout.active { display: block; } #blockLayout .box h1 { color: #d3bc8e; font-size: 32px; font-weight: bolder; line-height: 80px; margin: 0; } #blockLayout .box p { color: #323947; font-size: 18px; margin: 0; margin-bottom: 10px; } #blockLayout .box label { font-size: 16px; } #blockLayout .box .tabs { width: 100%; } #blockLayout .box .tabs-title { position: relative; height: 40px; white-space: nowrap; border-bottom: 1px solid #7e7e7e; display: flex; } #blockLayout .box .tabs-title .tab { display: inline-block; vertical-align: middle; font-size: 18px; position: relative; line-height: 40px; padding: 0 15px; text-align: center; cursor: pointer; flex: 1 0 0; width: auto; color: #7e7e7e; color: #323947; } #blockLayout .box .tabs-title .tab::after { position: absolute; left: 0; top: 0; content: ""; width: 100%; height: 41px; border-radius: 2px 2px 0 0; box-sizing: border-box; pointer-events: none; border-bottom: 2px solid #323947; } #blockLayout .box .tabs-content .tab-item { padding: 10px 0; max-height: 400px; overflow-x: hidden; padding-right: 8px; } #blockLayout textarea, #blockLayout input { width: 100%; box-sizing: border-box; resize:none; padding: 10px; font-size: 16px; color: #000; height: 120px; border-radius: 5px; background-color: #fff; border: 0; margin-bottom: 10px; } #blockLayout input { padding: 4px 5px; height: auto; font-size: 14px; } #blockLayout textarea:focus-visible, #blockLayout input:focus-visible { outline: 0; } #blockLayout input[type="checkbox"] { padding: 0; margin: 0; width: auto; } #blockLayout input[type="checkbox"] + label { position: relative; margin-right: 10px; } #blockLayout input[type="checkbox"] + label::before { background-color: #ece5d8; border-radius: 0.5px; color: #FFF; content: "\\a0"; display: inline-block; height: 15px; text-align: center; line-height: 100%; width: 15px; cursor: pointer; position: absolute; top: 50%; left: 50%; transform: translate(-50%,-50%); } #blockLayout input[type="checkbox"] { clip: rect(0, 0, 0, 0); position: absolute; } #blockLayout input[type="checkbox"]:checked + label::before { content: "\\2713"; color: #323947; } #blockLayout .cornerIcon { position: absolute; width: 24px; height: 24px; background-size: 24px 24px; } #blockLayout .cornerIcon.lt { left: -10px; top: -10px; } #blockLayout .cornerIcon.rt { right: -10px; top: -10px; transform: rotate(90deg); } #blockLayout .cornerIcon.lb { left: -10px; bottom: -10px; transform: rotate(-90deg); } #blockLayout .cornerIcon.rb { right: -10px; bottom: -10px; transform: rotate(180deg); } #blockLayout .toolerGroup { position: absolute; top: 30px; right: 20px; display: flex; align-items: center; } #blockLayout .iconButton { cursor: pointer; display: inline-block; width: 24px; height: 24px; background-size: 24px 24px; margin-left: 5px; position: relative; } #blockLayout .iconButton.watchButton i { position: absolute; display: block; top: 0; right: 0; width: 6px; height: 6px; background: red; border-radius: 50%; } #blockLayout .btnGroup { display: flex; justify-content: space-evenly; margin-top: 10px; } #blockLayout #blockMsg { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); min-width: 100px; border-radius: 2px; background-color: rgba(0,0,0,.6); color: #fff; visibility: hidden; transition: all 0.3s; padding: 12px 25px; text-align: center; } #blockLayout #blockMsg.active { visibility: visible; z-index: 99999; } .blurBlock { filter: blur(30px); } #blockLayout .button { background-color: #4a5366; border-radius: 50px; padding: 5px; display: flex; align-items: center; cursor: pointer; transition: all 0.3s; } #blockLayout .button:hover { box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); } #blockLayout .button .icon { background: #333333; border-radius: 50%; position: relative; width: 40px; height: 40px; display: flex; justify-content: center; align-items: center; } #blockLayout .button .text { color: #ece5d8; margin: 0 30px; font-size: 18px; } #blockLayout .button .icon span { border-radius: 10px; width: 20px; height: 2px; } #blockLayout .resetButton span { background-color: #38a1e4; position: absolute; } #blockLayout .resetButton span:first-child { -webkit-transform: rotate(-45deg); transform: rotate(-45deg); } #blockLayout .resetButton span:last-child { -webkit-transform: rotate(45deg); transform: rotate(45deg); } #blockLayout .button .icon.listIcon { flex-direction: column; } #blockLayout .button .icon.listIcon span { background-color: #ece5d8; margin: 3px 0 } #blockLayout .button .icon .yellow-circle { width: 25px; height: 25px; background-color: #ffcc33; border-radius: 50%; display: flex; align-items: center; justify-content: center; } #blockLayout .button .icon .black-circle { background-color: #333333; width: 20px; height: 20px; border-radius: 50%; } #blockLayout .modulesWrap { position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); z-index: 99998; display: flex; gap: 10px } #blockLayout .modulesWrap > * { position: relative; width: 300px; border-radius: 2px; background-color: #323947; color: #fff; display: none; text-align: center; z-index: 99998; border: 5px solid #fff; border-radius: 10px; } #blockLayout .modulesWrap #compareWrap { width: 400px } #blockLayout .modulesWrap > *.show { display: block; } #blockLayout .modulesWrap .toolerGroup { top: 12px; } #blockLayout .modulesWrap .areaBox { padding: 12px; } #blockLayout .modulesWrap .areaBox h2 { font-size: 18px; font-weight: 400; margin: 0; color: #fff; } #blockLayout .modulesWrap .areaBox .areaList, #blockLayout .modulesWrap .areaBox .areaForm { margin-top: 10px; overflow-x: hidden; max-height: 340px; padding: 0 2px; } #blockLayout .modulesWrap #updateWrap .areaBox .areaList { overflow: unset; } #blockLayout .modulesWrap .areaBox .areaList .areaItem { padding: 0px 10px; margin-bottom: 5px; border-radius: 5px; background-color: #fff; display: flex; align-items: center; justify-content: space-between; color: #323947; height: 33px; } #blockLayout .modulesWrap .areaBox .areaList .areaItem:hover { transform: scale(1.01); } #blockLayout .modulesWrap .areaBox .areaList .areaItem:last-child { margin-bottom: 0; } #blockLayout .modulesWrap .areaBox .areaList .areaItem .name { width: 70%; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; cursor: pointer; text-align: left; font-size: 14px; } #blockLayout .modulesWrap .areaBox .areaList .areaItem .actions { width: 20%; display: flex; align-items: center; justify-content: flex-end; } #blockLayout #areaWrap .areaBox .areaList .areaItem .actions .switchButton { position: relative; height: 22px; line-height: 22px; width: 45px; border: 1px solid #d2d2d2; border-radius: 20px; cursor: pointer; background-color: #fff; -webkit-transition: .1s linear; transition: .1s linear; } #blockLayout #areaWrap .areaBox .areaList .areaItem .actions .switchButton.on { border-color: #cfc1a6; background-color: #cfc1a6; } #blockLayout #areaWrap .areaBox .areaList .areaItem .actions .switchButton i { position: absolute; left: 5px; top: 2.5px; width: 16px; height: 16px; border-radius: 20px; background-color: #d2d2d2; -webkit-transition: .1s linear; transition: .1s linear; } #blockLayout #areaWrap .areaBox .areaList .areaItem .actions .switchButton.on i { left: 100%; margin-left: -21px; background-color: #fff; } #blockLayout #areaWrap .areaBox .areaForm { display: none; flex-wrap: wrap; justify-content: space-evenly; align-items: center; } #blockLayout #areaWrap .areaBox .areaForm p { width: 25%; font-size: 14px; margin-top: 0; } #blockLayout #areaWrap .areaBox .areaForm input { width: 75%; line-height: 0; } #blockLayout #areaWrap .areaBox .areaForm > * { margin-bottom: 10px; } #blockLayout #areaWrap .areaBox .areaForm button { width: 35%; margin-top: 10px; height: 30px; border-radius: 5px; border: 0; cursor:pointer; } #blockLayout #areaWrap .areaBox .areaForm button.backToList { background: #fff; color: #323947; } #blockLayout #areaWrap .areaBox .areaForm button.submitArea { background: #00b2ff; color: #fff; } #blockLayout #compareWrap .areaBox p { font-size: 16px; text-align: left; margin-bottom: 10px; } @media screen and (max-width: 768px){ #blockLayout .box { width: 95%; } #blockLayout .box .header { height: 50px; } #blockLayout .box h1 { font-size: 18px; line-height: 50px; } #blockLayout .toolerGroup { top: 15px; } } `; GM_addStyle(BLOCK_STYLE) })();