自动检测特定元素并刷新页面,同时优化观看体验,删除多余元素并点击提升画质
当前为
// ==UserScript==
// @name Douyin live stream optimization(优化网页)
// @namespace http://tampermonkey.net/
// @version 1.0.2
// @description 自动检测特定元素并刷新页面,同时优化观看体验,删除多余元素并点击提升画质
// @match https://*.douyin.com/*
// @grant none
// @license MIT
// @run-at document-idle
// ==/UserScript==
(function () {
'use strict';
/** ==================== 工具函数定义 ==================== */
function simulateBKeyPress() {
const event = new KeyboardEvent('keydown', {
key: 'b',
code: 'KeyB',
keyCode: 66,
charCode: 0,
which: 66,
shiftKey: false,
ctrlKey: false,
metaKey: false,
bubbles: true
});
document.dispatchEvent(event);
console.log('[优化] 模拟按下 B 键');
}
function clickButton() {
const button = document.querySelector('.psKR9RS0 .WoNKVQmY.Z20k_Nsy');
if (button) {
button.click();
console.log('[优化] 按钮已点击');
} else {
console.log('[优化] 按钮未找到');
}
}
function removeElement(selector, message) {
const element = document.querySelector(selector);
if (element) {
element.remove();
console.log(`[优化] ${message} 已删除`);
} else {
console.log(`[优化] 未找到 ${message}`);
}
}
function removeSpecialContent() {
document.querySelectorAll('div._192Y0el > div.ljM5iqdR').forEach(e => e.remove());
console.log('[优化] 礼物删除成功~');
removeElement('.mDjtvQMS.GiftEffectPlugin', '礼物特效元素');
}
function clickNewElement() {
const newElement = document.querySelector('.D7UhJyco');
if (newElement) {
newElement.click();
console.log('[优化] 画质切换成功~');
} else {
console.log('[优化] 未找到新的指定元素');
}
}
function runOptimization() {
simulateBKeyPress();
clickButton();
removeSpecialContent();
clickNewElement();
}
/** ==================== 轮询检测并删除._D4WLewc.GDP2iTsQ,删除后点击.xJMJ5DRo ==================== */
let notFoundCount = 0;
const maxMisses = 3;
const optimizationInterval = setInterval(() => {
console.log('[轮询] 检测开始');
const targetElement = document.querySelector('._D4WLewc.GDP2iTsQ');
console.log('[轮询] 检测结果:', targetElement);
if (targetElement) {
console.log('[轮询] 检测到._D4WLewc.GDP2iTsQ,执行删除...');
targetElement.remove();
console.log('[轮询] 已删除._D4WLewc.GDP2iTsQ元素');
const clickElem = document.querySelector('.xJMJ5DRo');
if (clickElem) {
clickElem.click();
console.log('[轮询] 删除后点击了 .xJMJ5DRo 元素');
simulateBKeyPress();
} else {
console.log('[轮询] 未找到 .xJMJ5DRo 元素,无法点击');
}
notFoundCount = 0; // 重置计数
} else {
notFoundCount++;
console.log(`[轮询] 第 ${notFoundCount} 次未检测到目标元素`);
if (notFoundCount >= maxMisses) {
console.log(`[轮询] 连续 ${maxMisses} 次未检测到,停止轮询`);
clearInterval(optimizationInterval);
}
}
}, 3000);
/** ==================== 无限轮询:检测 CkKPEcld 刷新,检测 ej6cQnWN 则退出 ==================== */
const refreshInterval = setInterval(() => {
const blockElement = document.querySelector('.ej6cQnWN');
const refreshTarget = document.querySelector('.CkKPEcld');
if (blockElement) {
console.log('[刷新检测] 检测到 .ej6cQnWN,判定无需刷新,停止轮询');
clearInterval(refreshInterval);
} else if (refreshTarget) {
console.log('[刷新检测] 检测到 .CkKPEcld,即将刷新页面');
clearInterval(refreshInterval);
location.reload();
} else {
console.log('[刷新检测] 未检测到 .CkKPEcld,也未出现 .ej6cQnWN,继续轮询...');
}
}, 3000);
/** ==================== 页面加载后延迟任务(可保留) ==================== */
setTimeout(simulateBKeyPress, 5000);
setTimeout(clickButton, 5000);
setTimeout(removeSpecialContent, 5000);
/** ==================== 重复性任务(最多执行 10 次) ==================== */
let counter = 0;
const maxTries = 10;
const interval = setInterval(() => {
removeElement('.LE4P00KT', '优化元素 LE4P00KT');
clickNewElement();
counter++;
if (counter >= maxTries) clearInterval(interval);
}, 1000);
})();