// ==UserScript== // @name (破解字幕)某度网盘添加复制字幕按钮+导出doc按钮(360和chrome均已测试) // @namespace your-namespace // @version 2.1 // @description 在某度网盘中添加复制字幕按钮,并实现复制字幕和导出为doc的功能,按钮名字随操作状态变化(比如没有下载之前,按钮名字为复制字幕,复制后,按钮名字为字幕已复制) // @license Yolanda Morgan // @author Your Name // @match https://pan.baidu.com/* // @exclude *://pan.baidu.com/disk/* // @grant GM_setClipboard // @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js // @downloadURL none // ==/UserScript== (function() { 'use strict'; // 创建复制字幕按钮 function createCopySubtitleButton() { var btn = document.createElement('button'); btn.id = 'copySubtitleBtn'; btn.innerText = '复制字幕'; btn.style.position = 'fixed'; btn.style.left = '20px'; btn.style.bottom = '20px'; btn.style.zIndex = '9999'; btn.style.padding = '10px'; btn.style.backgroundColor = '#fff'; btn.style.border = '1px solid #ccc'; btn.style.cursor = 'pointer'; // 复制字幕按钮点击事件处理函数 btn.addEventListener('click', function() { var subtitle = getSubtitle(); // 获取字幕内容 if (subtitle) { GM_setClipboard(subtitle); // 复制字幕到剪贴板 btn.innerText = '字幕已复制'; } else { btn.innerText = '无法获取字幕'; } }); document.body.appendChild(btn); } // 创建导出为doc按钮 function createExportToDocButton() { var btn = document.createElement('button'); btn.id = 'exportToDocBtn'; btn.innerText = '导出为doc'; btn.style.position = 'fixed'; btn.style.left = '140px'; btn.style.bottom = '20px'; btn.style.zIndex = '9999'; btn.style.padding = '10px'; btn.style.backgroundColor = '#fff'; btn.style.border = '1px solid #ccc'; btn.style.cursor = 'pointer'; // 导出为doc按钮点击事件处理函数 btn.addEventListener('click', function() { var subtitle = getSubtitle(); // 获取字幕内容 if (subtitle) { var filename = getDefaultFilename(); var blob = new Blob([subtitle], {type: 'text/plain;charset=utf-8'}); saveAs(blob, filename); // 使用FileSaver.js保存文件 btn.innerText = '字幕已导出为doc文件'; } else { btn.innerText = '无法获取字幕'; } }); document.body.appendChild(btn); } // 获取字幕内容的逻辑处理代码 function getSubtitle() { var subtitleElements = document.querySelectorAll('.ai-draft__wrap-list p.ai-draft__p-paragraph'); // 获取所有段落元素 var subtitleText = []; for (var i = 0; i < subtitleElements.length; i++) { subtitleText.push(subtitleElements[i].innerText.trim()); // 将每个段落的文本添加到字幕数组中 } return subtitleText.join('\n\n'); // 将字幕数组以空行连接起来并返回 } // 获取默认文件名 function getDefaultFilename() { var videoNameElement = document.querySelector('div.vp-video-page-card span.is-playing.vp-video-page-card__video-name'); if (videoNameElement) { var originalFilename = videoNameElement.innerText.trim(); var newFilename = originalFilename.replace(/\.[^/.]+$/, '') + '.doc'; // 去掉原始文件名的后缀,并添加新的后缀名 return newFilename; } return 'subtitle.doc'; } // 添加复制字幕按钮和导出为doc按钮 createCopySubtitleButton(); createExportToDocButton(); })();