您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
在某度网盘中添加复制字幕按钮,并实现复制字幕和导出为doc、srt的功能,按钮名字随操作状态变化(比如没有下载之前,按钮名字为复制字幕,复制后,按钮名字为字幕已复制)
当前为
// ==UserScript== // @name 🔥【就是爽】某度网盘添加复制字幕按钮+导出doc按钮(360和chrome均已测试) // @namespace your-namespace // @version 2.3 // @description 在某度网盘中添加复制字幕按钮,并实现复制字幕和导出为doc、srt的功能,按钮名字随操作状态变化(比如没有下载之前,按钮名字为复制字幕,复制后,按钮名字为字幕已复制) // @license Yolanda Morgan // @author Yolanda Morgan // @match https://pan.baidu.com/* // @exclude *://pan.baidu.com/disk/* // @exclude *://pan.baidu.com/s/* // @grant GM_download // @grant GM_setClipboard // @require https://cdnjs.cloudflare.com/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js // ==/UserScript== (function() { 'use strict'; // 创建复制字幕按钮 function createCopySubtitleButton() { const btn = document.createElement('button'); btn.id = 'copySubtitleBtn'; btn.innerText = '复制字幕'; btn.style = 'position: fixed; left: 40px; bottom: 20px; z-index: 9999; padding: 10px; background: #fff; border: 1px solid #ccc; cursor: pointer;'; // 复制字幕按钮点击事件处理函数 btn.addEventListener('click', function() { const subtitleElements = document.querySelectorAll('.ai-draft__wrap-list p.ai-draft__p-paragraph'); // 获取所有段落元素 if (subtitleElements.length === 0) { btn.innerText = '无字幕'; // alert('无法获取字幕'); return; } const subtitleText = []; for (let i = 0; i < subtitleElements.length; i++) { subtitleText.push(subtitleElements[i].innerText.trim()); // 将每个段落的文本添加到字幕数组中 } navigator.clipboard.writeText(subtitleText.join('\n\n')).then(function() { btn.innerText = '已复制'; //alert('字幕已复制'); }); }); document.body.appendChild(btn); } // 创建导出文稿doc按钮 function createExportToDocButton() { const btn = document.createElement('button'); btn.id = 'exportToDocBtn'; btn.innerText = '导出文稿doc'; btn.style = 'position: fixed; left: 120px; bottom: 20px; z-index: 9999; padding: 10px; background: #fff; border: 1px solid #ccc; cursor: pointer;'; // 导出文稿doc按钮点击事件处理函数 btn.addEventListener('click', function() { const subtitleElements = document.querySelectorAll('.ai-draft__wrap-list p.ai-draft__p-paragraph'); // 获取所有段落元素 if (subtitleElements.length === 0) { btn.innerText = '无字幕'; //alert('无法获取字幕'); return; } const subtitleText = []; for (let i = 0; i < subtitleElements.length; i++) { subtitleText.push(subtitleElements[i].innerText.trim()); // 将每个段落的文本添加到字幕数组中 } const subtitle = subtitleText.join('\n\n'); // 获取字幕内容 const filename = getDefaultFilename('.doc'); var blob = new Blob([subtitle], { type: 'text/plain;charset=utf-8' }); saveAs(blob, filename); // 使用FileSaver.js保存文件 btn.innerText = '已导doc'; //alert('导出成功'); }); document.body.appendChild(btn); } // 创建导出字幕srt按钮 function createExportToSrtButton() { const btn = document.createElement('button'); btn.id = 'exportToSrtBtn'; btn.innerText = '导出字幕srt'; btn.style = 'position: fixed; left: 220px; bottom: 20px; z-index: 9999; padding: 10px; background: #fff; border: 1px solid #ccc; cursor: pointer;'; // 导出字幕srt按钮点击事件处理函数 btn.addEventListener('click', function() { const subtitleElements = document.querySelectorAll('.ai-draft__wrap-list p.ai-draft__p-paragraph'); // 获取所有段落元素 if (subtitleElements.length === 0) { btn.innerText = '无字幕'; //alert('无法获取字幕'); return; } const subtitleText = []; for (let i = 0; i < subtitleElements.length; i++) { subtitleText.push(subtitleElements[i].innerText.trim()); // 将每个段落的文本添加到字幕数组中 } const blobArray = []; for (let i = 0; i < subtitleText.length; i++) { const srtText = (i + 1) + '\n' + '00:00:00,000 --> 00:00:01,000\n' + subtitleText[i] + '\n\n'; const srtBlob = new Blob([srtText], { type: 'text/plain;charset=utf-8' }); blobArray.push(srtBlob); } var combinedBlob = new Blob(blobArray, { type: 'text/plain;charset=utf-8' }); saveAs(combinedBlob, getDefaultFilename('.srt')); btn.innerText = '已导srt'; //alert('导出成功'); }); document.body.appendChild(btn); } // 在页面加载完成后创建按钮 window.addEventListener('load', function() { createCopySubtitleButton(); createExportToDocButton(); createExportToSrtButton(); }); // 获取默认文件名 function getDefaultFilename(extension) { 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(/\.[^/.]+$/, '') + extension; // 去掉原始文件名的后缀,并添加新的后缀名 return newFilename; } return 'subtitle' + extension; } })();