您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Boost audio and take screenshots from videos on the current page with quality options
当前为
// ==UserScript== // @name Audio Booster and Screenshot // @namespace http://tampermonkey.net/ // @version 0.4 // @description Boost audio and take screenshots from videos on the current page with quality options // @author Your Name // @match *://*/* // @grant none // ==/UserScript== (function () { 'use strict'; let currentBoost = 1.0; // Current boost factor document.addEventListener('keydown', function (event) { if (event.key === 'F2') { showAudioBoostMenu(); } }); function showAudioBoostMenu() { // Check if the menu already exists if (document.getElementById('audio-boost-menu')) { return; } // Create a simple menu let menu = document.createElement('div'); menu.id = 'audio-boost-menu'; menu.style.position = 'fixed'; menu.style.top = '10px'; menu.style.right = '10px'; menu.style.backgroundColor = 'white'; menu.style.border = '1px solid black'; menu.style.padding = '10px'; menu.style.zIndex = 10000; menu.style.fontFamily = 'sans-serif'; // --- Audio Controls --- let boostLabel = document.createElement('label'); boostLabel.textContent = 'Boost Factor:'; boostLabel.style.display = 'block'; let boostInput = document.createElement('input'); boostInput.type = 'number'; boostInput.value = 1.5; // Default boost factor boostInput.min = 1.0; boostInput.max = 5.0; boostInput.step = 0.1; boostInput.style.marginBottom = '10px'; boostInput.style.width = '100%'; boostInput.style.boxSizing = 'border-box'; let boostButton = document.createElement('button'); boostButton.textContent = 'Boost Audio'; boostButton.style.marginRight = '5px'; boostButton.onclick = function() { boostAudio(parseFloat(boostInput.value)); }; let resetButton = document.createElement('button'); resetButton.textContent = 'Reset Audio'; resetButton.onclick = resetAudio; // --- Screenshot Controls --- let screenshotButton = document.createElement('button'); screenshotButton.textContent = 'Take Screenshot'; screenshotButton.onclick = takeScreenshot; // NOWOŚĆ: Etykieta dla formatu zrzutu ekranu let formatLabel = document.createElement('label'); formatLabel.textContent = 'Format:'; formatLabel.style.display = 'block'; formatLabel.style.marginTop = '10px'; // NOWOŚĆ: Pole wyboru formatu (PNG/JPG) let formatSelect = document.createElement('select'); formatSelect.id = 'screenshot-format'; formatSelect.style.width = '100%'; formatSelect.innerHTML = '<option value="png">PNG (bezstratny)</option><option value="jpg">JPG (stratny)</option>'; // NOWOŚĆ: Etykieta dla jakości JPG let qualityLabel = document.createElement('label'); qualityLabel.textContent = 'Jakość JPG (1-100):'; qualityLabel.style.display = 'block'; qualityLabel.style.marginTop = '5px'; // NOWOŚĆ: Pole do wprowadzania jakości let qualityInput = document.createElement('input'); qualityInput.type = 'number'; qualityInput.id = 'screenshot-quality'; qualityInput.value = 92; // Dobra domyślna jakość qualityInput.min = 1; qualityInput.max = 100; qualityInput.step = 1; qualityInput.style.width = '100%'; qualityInput.style.boxSizing = 'border-box'; qualityInput.style.marginBottom = '10px'; // --- Close Button --- let closeButton = document.createElement('button'); closeButton.textContent = 'Close'; closeButton.style.marginTop = '10px'; closeButton.onclick = function () { document.body.removeChild(menu); }; // --- Building the menu --- menu.appendChild(boostLabel); menu.appendChild(boostInput); menu.appendChild(boostButton); menu.appendChild(resetButton); menu.appendChild(document.createElement('hr')); // Separator menu.appendChild(screenshotButton); menu.appendChild(formatLabel); menu.appendChild(formatSelect); menu.appendChild(qualityLabel); menu.appendChild(qualityInput); menu.appendChild(document.createElement('hr')); // Separator menu.appendChild(closeButton); document.body.appendChild(menu); } function boostAudio(factor) { currentBoost = factor; let videos = document.querySelectorAll('video, audio'); if (videos.length === 0) { alert('Nie znaleziono elementów wideo/audio na stronie.'); return; } videos.forEach(function (media) { // Web Audio API is needed for boosting beyond 100% // This basic implementation is capped by the browser at 1.0 media.volume = Math.min(1.0, media.volume * factor); // For a true boost, one would need to use the Web Audio API // to create a GainNode, but that is much more complex. // The current code increases volume up to the max (1.0). }); alert(`Głośność ustawiona! (Ograniczona do 100% przez przeglądarkę)`); } function resetAudio() { let videos = document.querySelectorAll('video, audio'); videos.forEach(function (media) { media.volume = 1.0; // Reset volume to original level }); alert('Audio zresetowane do domyślnego poziomu!'); } function takeScreenshot() { let videos = document.querySelectorAll('video'); if (videos.length === 0) { alert('Nie znaleziono elementów wideo.'); return; } let video = videos[0]; // Select the first video element found // Create a canvas element to capture the video frame let canvas = document.createElement('canvas'); canvas.width = video.videoWidth; canvas.height = video.videoHeight; let context = canvas.getContext('2d'); context.drawImage(video, 0, 0, canvas.width, canvas.height); // NOWOŚĆ: Pobranie wartości formatu i jakości z menu const format = document.getElementById('screenshot-format').value; const quality = parseInt(document.getElementById('screenshot-quality').value, 10) / 100; let dataURL; let fileExtension; // NOWOŚĆ: Logika wyboru formatu i jakości if (format === 'jpg') { dataURL = canvas.toDataURL('image/jpeg', quality); fileExtension = 'jpg'; } else { // Domyślnie PNG, jakość nie ma zastosowania dataURL = canvas.toDataURL('image/png'); fileExtension = 'png'; } // Create a link to download the image let link = document.createElement('a'); link.href = dataURL; // NOWOŚĆ: Dynamiczna nazwa pliku z odpowiednim rozszerzeniem link.download = `screenshot.${fileExtension}`; document.body.appendChild(link); link.click(); document.body.removeChild(link); alert('Zrzut ekranu zrobiony!'); } })();