// ==UserScript== // @name Chzzk Auto High Quality // @namespace http://tampermonkey.net/ // @version 1.7 // @description Automatically select highest quality on Chzzk streams // @author DSK // @match https://chzzk.naver.com/* // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; let lastUrl = location.href; function handleAdBlockPopup() { const popupContainer = document.querySelector('div[class^="popup_container"]'); if (popupContainer && popupContainer.textContent.includes('광고 차단 프로그램을 사용 중이신가요')) { popupContainer.remove(); } } function selectHighestQuality() { const settingsButton = document.querySelector('button[class*="pzp-pc-setting-button"]'); if (!settingsButton) return; settingsButton.click(); const qualityButton = document.querySelector('div[class*="pzp-pc-setting-intro-quality"]'); if (!qualityButton) return; qualityButton.click(); // Find quality option that contains "1080" const qualityOptions = document.querySelectorAll('li[class*="quality-item"]'); const qualityOption = Array.from(qualityOptions).find(option => option.textContent.includes('1080')); if (!qualityOption) return; qualityOption.focus(); const enterEvent = new KeyboardEvent('keydown', { bubbles: true, cancelable: true, key: 'Enter', code: 'Enter', keyCode: 13, which: 13 }); qualityOption.dispatchEvent(enterEvent); } // Listen for click events document.addEventListener('click', () => { if (location.href !== lastUrl) { lastUrl = location.href; if (lastUrl.includes('/live/') || lastUrl.includes('/video/')) { setTimeout(() => { handleAdBlockPopup(); }, 500); setTimeout(() => { handleAdBlockPopup(); }, 1000); setTimeout(() => { handleAdBlockPopup(); selectHighestQuality(); }, 2000); } } }); setTimeout(() => { handleAdBlockPopup(); }, 500); setTimeout(() => { handleAdBlockPopup(); }, 1000); // Execute once when page loads setTimeout(() => { handleAdBlockPopup(); selectHighestQuality(); }, 2000); })();