// ==UserScript== // @name 치지직 추가 볼륨 // @namespace 치지직 추가 볼륨 // @match *://chzzk.naver.com/* // @version 0.2 // @description 치지직 추가 증폭 볼륨을 구현합니다. // @icon data:image/png;base64,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 // @author mickey90427 // @grant none // @license MIT // @downloadURL none // ==/UserScript== (function() { 'use strict'; const maxVolume = 16; // 최대 볼륨 증폭 비율 let gainValue = getSavedVolume() || 1; // 쿠키에서 저장된 볼륨 값 불러오기, 기본값 1 const originalVolume = 1; let hideTimeout; // 볼륨 증폭 기능 function boostVolume(video, boost) { let audioContext = video.audioContext; let gainNode = video.gainNode; if (!audioContext) { audioContext = new (window.AudioContext || window.webkitAudioContext)(); let source = audioContext.createMediaElementSource(video); gainNode = audioContext.createGain(); source.connect(gainNode); gainNode.connect(audioContext.destination); video.audioContext = audioContext; video.gainNode = gainNode; video.addEventListener('play', () => { audioContext.resume(); }, { once: true }); } gainNode.gain.value = boost ? gainValue : originalVolume; } // 증폭 적용 기능 function applyVolumeBoost() { let videos = document.querySelectorAll('video'); videos.forEach(video => { boostVolume(video, true); }); saveVolume(gainValue); // 볼륨 값 저장 } // 증폭 해제 기능 function removeVolumeBoost() { let videos = document.querySelectorAll('video'); videos.forEach(video => { boostVolume(video, false); }); } // 슬라이더와 버튼을 페이지에 추가 function addVolumeSlider() { const targetElement = document.querySelector('.pzp-pc__bottom-buttons-left'); if (targetElement) { // 기존에 추가된 슬라이더가 있는지 확인 if (document.querySelector('#volumeBoostSlider')) return; const container = document.createElement('div'); container.style.display = 'flex'; container.style.alignItems = 'center'; container.style.marginLeft = '10px'; container.style.opacity = '0'; // 초기에는 숨김 container.style.transition = 'opacity 0.3s'; const slider = document.createElement('input'); slider.id = 'volumeBoostSlider'; slider.type = 'range'; slider.min = 1; slider.max = maxVolume; slider.value = gainValue; slider.style.width = '150px'; slider.style.marginRight = '10px'; slider.style.cursor = 'pointer'; const label = document.createElement('span'); label.id = 'volumeBoostLabel'; label.textContent = `볼륨: ${((gainValue - 1) / (maxVolume - 1) * 100).toFixed(2)}%`; label.style.color = '#fff'; slider.oninput = () => { gainValue = parseFloat(slider.value); const percentage = ((gainValue - 1) / (maxVolume - 1) * 100).toFixed(2); label.textContent = `볼륨: ${percentage}%`; applyVolumeBoost(); // 볼륨 적용 }; container.appendChild(slider); container.appendChild(label); container.id = 'volumeBoostControl'; targetElement.parentNode.insertBefore(container, targetElement.nextSibling); // 슬라이더 표시 및 숨기기 function showSlider() { container.style.opacity = '1'; // 슬라이더 표시 resetHideTimeout(); } function hideSlider() { container.style.opacity = '0'; // 슬라이더 숨김 } function resetHideTimeout() { clearTimeout(hideTimeout); hideTimeout = setTimeout(hideSlider, 3000); // 3초 후 슬라이더 숨김 } function setupEventListeners() { const videoContainer = document.querySelector('.webplayer-internal-video'); if (videoContainer) { videoContainer.addEventListener('mousemove', showSlider); videoContainer.addEventListener('keydown', showSlider); // 하위 요소들에도 마우스 이벤트 추가 const shadowElements = document.querySelectorAll('.pzp-pc__bottom-shadow, .pzp-pc__bottom'); shadowElements.forEach(element => { element.addEventListener('mousemove', showSlider); element.addEventListener('keydown', showSlider); }); // 입력이 있을 때마다 슬라이더를 다시 보이게 하고 타이머를 리셋 document.addEventListener('mousemove', resetHideTimeout); document.addEventListener('keydown', resetHideTimeout); } } setupEventListeners(); } else { console.log('targetElement를 찾을 수 없습니다.'); } } // 쿠키에 볼륨 값 저장 function saveVolume(value) { const domain = window.location.hostname; document.cookie = `volumeBoost_${domain}=${value}; path=/;`; } // 쿠키에서 볼륨 값 불러오기 function getSavedVolume() { const domain = window.location.hostname; const name = `volumeBoost_${domain}=`; const decodedCookie = decodeURIComponent(document.cookie); const cookies = decodedCookie.split(';'); for (let i = 0; i < cookies.length; i++) { let cookie = cookies[i]; while (cookie.charAt(0) === ' ') { cookie = cookie.substring(1); } if (cookie.indexOf(name) === 0) { return parseFloat(cookie.substring(name.length, cookie.length)); } } return null; // 쿠키에 저장된 볼륨 값이 없으면 null 반환 } // 비디오가 로드된 후에 볼륨을 적용하는 함수 function init() { function waitForVideoAndApply() { const videos = document.querySelectorAll('video'); if (videos.length > 0) { applyVolumeBoost(); // 비디오가 존재할 때 볼륨 적용 addVolumeSlider(); // 슬라이더 추가 } else { // 비디오가 없으면 100ms 후에 다시 시도 setTimeout(waitForVideoAndApply, 100); } } waitForVideoAndApply(); // 비디오 로드 확인 후 볼륨 적용 시작 // MutationObserver를 사용하여 새로운 비디오 요소가 추가되었을 때 다시 시도 const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.addedNodes.length > 0) { waitForVideoAndApply(); // 비디오가 추가되었을 때 볼륨 적용 시도 } }); }); observer.observe(document.body, { childList: true, subtree: true }); } init(); })();