您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
When Youtube using Immersive Translation copies the subtitles to the clipboard, supporting before translation, after translation, or select all Youtube
当前为
// ==UserScript== // @name Youtube Copying Selected Subtitles - Immersive Translation // @name:zh 沉浸式翻译字幕复制 // @name:en Youtube Copying Selected Subtitles - Immersive Translation // @namespace https://github.com/i02sDarling/tools // @description When Youtube using Immersive Translation copies the subtitles to the clipboard, supporting before translation, after translation, or select all Youtube // @description:zh 使用沉浸式翻译时将字幕复制到剪贴板,支持翻译前,翻译后,或者全选 // @description:en When Youtube using Immersive Translation copies the subtitles to the clipboard, supporting before translation, after translation, or select all Youtube // @license MIT // @author i02sDarling // @version 1.2.2 // @include *//www.youtube.com/watch?v=* // @match *://*.youtube.com/* // @exclude *://accounts.youtube.com/* // @exclude *://www.youtube.com/live_chat_replay* // @exclude *://www.youtube.com/persist_identity* // @icon https://www.google.com/s2/favicons?sz=64&domain=youtube.com // @license MIT // @compatible edge // @compatible firefox // @compatible chrome // ==/UserScript== (function () { 'use strict'; console.log("02sdarling:Running"); let curSelect = 1; const OutSelection = ['Ori', 'Out', 'Both']; const button = document.createElement('button'); const toggleBtn = document.createElement('button'); mkContainer(); let intervalId; intervalId = setInterval(addClickEventWhenTargetAppears, 4000); function toggle() { button.textContent = 'Copy'; } function appendStyle(btn) { btn.style.position = 'absolute'; btn.style.left = '10px'; btn.style.transform = 'translateY(-70%)'; btn.style.backgroundColor = '#007bff'; btn.style.color = '#fff'; btn.style.padding = '10px 15px'; btn.style.border = 'none'; btn.style.borderRadius = '5px'; btn.style.cursor = 'pointer'; } function mkContainer() { button.id = '02sdarling'; button.textContent = 'Waiting'; button.style.top = '70%'; appendStyle(button); document.body.appendChild(button); } function mkToggle() { toggleBtn.id = '02sdarlingYa'; toggleBtn.textContent = OutSelection[curSelect]; toggleBtn.style.top = '90%'; appendStyle(toggleBtn); document.body.appendChild(toggleBtn); } toggleBtn.addEventListener('click', function () { curSelect = (curSelect + 1) % 3; toggleBtn.textContent = OutSelection[curSelect]; }) function getSpan() { const ytbPlayer = document.getElementById('ytd-player'); const TopCont = ytbPlayer.children[0]; const container = TopCont.children[0].lastChild; if (container.id !== 'immersive-translate-caption-window') { console.log('Lost window container! make sure you have installed the immersive translation and opened it. If you have already done these things, you can wait.') return false; } const TmpString = container.getInnerHTML(); const domstring = TmpString.replace(/<template[^>]*>|<\/template>/g, ''); const doc = new DOMParser().parseFromString(domstring, "text/xml"); let span = doc.getElementsByTagName('span'); if (span) return span; console.err("Open the subtitle translate first"); return false; } function getText() { const span = getSpan(); if (span) { if (curSelect === 2) { return span[0].textContent + " " + span[1].textContent; } else { return span[curSelect].textContent; } } return "falut to copy"; } function addClickEventWhenTargetAppears() { try { if (getSpan()) { mkToggle(); toggle(); clearInterval(intervalId); } if (button.textContent === 'Waiting') { return; } //const ClickContainer=doc.getElementsByClassName('captions-text'); button.addEventListener('click', function () { let res = getText(); navigator.clipboard.writeText(res) .then(() => { console.log('Copy successful:', res); }) .catch(err => { console.error('Copy failed:', err); }); }) } catch (e) { console.log('Waiting'); } } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址