您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Tries full interaction: focus, pointer events, then click to open settings menu and select 1080p60 (or fallback) on kick.com. Restarts on URL change.
// ==UserScript== // @name Kick.com Auto Select 1080p60 Quality [2025 Working!] // @namespace http://tampermonkey.net/ // @version 1.6 // @description Tries full interaction: focus, pointer events, then click to open settings menu and select 1080p60 (or fallback) on kick.com. Restarts on URL change. // @match https://kick.com/* // @author Paradox109 // @icon https://www.google.com/s2/favicons?sz=64&domain=kick.com // @license MIT // @grant none // ==/UserScript== (function () { 'use strict'; const preferredQualities = ['1080p60', '720p60']; let currentHref = window.location.href; let mainInterval; function findCogButton() { const buttons = document.querySelectorAll('button[aria-haspopup="menu"]'); for (const btn of buttons) { const svg = btn.querySelector('svg path'); if (!svg) continue; const pathD = svg.getAttribute('d'); if (!pathD) continue; if (pathD.startsWith('M25.7,17.3c0.1-0.4')) return btn; } return null; } function simulateFullClick(el) { if (!el) return; el.focus(); ['pointerover', 'pointerenter', 'pointerdown', 'mousedown', 'pointerup', 'mouseup', 'click'].forEach(type => { const event = new PointerEvent(type, { bubbles: true, cancelable: true, composed: true, pointerId: 1, pointerType: 'mouse', isPrimary: true, }); el.dispatchEvent(event); }); el.click(); // fallback } function selectQuality() { const items = document.querySelectorAll('[role="menuitemradio"]'); if (items.length === 0) { console.log('Quality options not available yet.'); return false; } for (const quality of preferredQualities) { const match = Array.from(items).find(item => item.textContent.trim() === quality); if (match) { console.log(`Selecting quality: ${quality}`); match.click(); return true; } } return false; } function observeMenuAndSelect() { const menuContainer = document.querySelector('div[role="menu"]') || document.body; const observer = new MutationObserver((_, obs) => { if (selectQuality()) { console.log('Quality selected, disconnecting observer and stopping script.'); obs.disconnect(); clearInterval(mainInterval); } }); observer.observe(menuContainer, { childList: true, subtree: true }); } function trySelectQuality() { const cogButton = findCogButton(); if (!cogButton) { console.log('Cog button not found yet.'); return; } console.log('Cog button found, simulating full interaction click...'); simulateFullClick(cogButton); observeMenuAndSelect(); } function startScript() { clearInterval(mainInterval); mainInterval = setInterval(() => { trySelectQuality(); }, 50); } // Start first run startScript(); // Monitor URL change every 500ms setInterval(() => { if (window.location.href !== currentHref) { console.log('URL changed, restarting script...'); currentHref = window.location.href; startScript(); } }, 500); })();