您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
下载百度文库文档
当前为
// ==UserScript== // @name Wenku Doc Downloader // @namespace http://tampermonkey.net/ // @version 0.2 // @description 下载百度文库文档 // @author [email protected] // @match https://wenku.baidu.com/view/* // @icon https://www.google.com/s2/favicons?domain=limestart.cn // @grant none // @license GPL-3.0-only // @create 2021-11-22 // ==/UserScript== /* * 附属功能函数部分 */ function createAndDownloadFile(fileName, content) { // 创建并下载文件 var aTag = document.createElement('a'); var blob = new Blob([content]); aTag.download = fileName; aTag.href = URL.createObjectURL(blob); aTag.click(); URL.revokeObjectURL(blob); } function formatText(text){ var reg_exp_1 = new RegExp(" [(]?=[\u4e00-\u9fa5] [)]"); var reg_exp_2 = new RegExp("(?<=TEMP[\u4e00-\u9fa5]) "); var reg_exp_3 = new RegExp("(?<=[\u4e00-\u9fa5]) (?=[\u4e00-\u9fa5])"); var text_1 = text.replace(reg_exp_1, "TEMP"); var text_2 = text_1.replace(reg_exp_2, ""); var text_3 = text_2.replace("TEMP", ""); var text_final = text_3.replace(/ /g, " "); return text_final; } /* * 主要功能函数部分 */ function readAll() { var read_all_btn = document.getElementsByClassName("read-all")[0]; // 如果存在“继续阅读”的按钮 if (read_all_btn) { // 点击“继续阅读”按钮 read_all_btn.click(); } // 如果点击完之后仍旧存在该按钮,递归调用自身 // read_all_btn = document.getElementsByClassName("read-all")[0]; // if (read_all_btn) { // readAll(); // } else{ alert("文档已经完全展开,可以导出"); var init_btn = document.getElementsByClassName("init-btn")[0]; var save_doc_btn = document.getElementsByClassName("save-doc-btn")[0]; init_btn.style.display = "none"; save_doc_btn.style.removeProperty("display"); } } function savePDFData() { // 存储pdf型data(假定是内容是pic) alert("Function savePDFData was called."); var pic_urls = document.getElementsByClassName("reader-pic-item"); var text_list = []; // 去掉前缀 var reg_exp_1 = new RegExp(": ?url[(]"); // 去掉后缀 var reg_exp_2 = new RegExp("[)]; ?background-position"); for (var i = 0; i < pic_urls.length; i++){ var whole_text = pic_urls[i].getAttribute("style"); var de_pretext = whole_text.split(reg_exp_1)[1]; var url = de_pretext.split(reg_exp_2)[0]; text_list.push(url); } text_list[0] = text_list[0].replace(/"/g, ""); var content = text_list.join("\n"); createAndDownloadFile("urls.csv", content); } function saveDocData() { // 存储doc型data(内容是text) alert("Function saveTextData was called."); // 获取文本 var text_elements = document.getElementsByClassName("reader-word-layer"); var texts = []; for (var elem of text_elements){ texts.push(elem.textContent); } // 导出文本 var origin_content = texts.join(""); var content = formatText(origin_content); createAndDownloadFile("doc文档.txt", content); } function savePPTData() { // 存储ppt型data(内容是pic) alert("Function savePPTData was called."); var pic_elements = document.getElementsByClassName("ppt-image-wrap"); var pic_urls = []; for (var elem of pic_elements) { var pic_obj = elem.children[0]; var url = pic_obj.src; pic_urls.push(url); } var content = pic_urls.join("\n"); createAndDownloadFile("urls.csv", content); } function detectType() { // 分别尝试获取相应元素列表,若列表长度为0则不存在相应元素,否则存在 var pdf = document.getElementsByClassName("reader-pic-item").length; var doc = document.getElementsByClassName("reader-word-layer").length; var ppt = document.getElementsByClassName("ppt-image-wrap").length; // 判断文档类别 if (pdf && !doc && !ppt) { return "pdf"; } else if (doc && !pdf && !ppt) { return "doc"; } else if (ppt && !pdf && !doc) { return "ppt"; } else { return {"pdf": pdf, "doc": doc, "ppt": ppt}; } } function saveData() { // 存储文档数据到本地 var category = detectType(); if (category === "pdf"){ savePDFData(); } else if (category === "doc") { saveDocData(); } else if (category === "ppt") { savePPTData(); } else { var info = []; for (var key in category){ info.push(key + " : " + category.key); } alert("未知文档类型\n" + info.join("\n")); } } /* * 主函数部分 */ function main() { // 创建脚本启动按钮1、2 var btn_1 = document.createElement("button"); var btn_2 = document.createElement("button"); // 设定按钮1、2样式 btn_1.setAttribute("class", "init-btn"); btn_1.style.height = "25px"; btn_1.style.width = "50%"; btn_1.style.marginLeft = "25%"; btn_1.style.backgroundColor = "blue"; btn_2.setAttribute("class", "save-doc-btn"); btn_2.style.height = "25px"; btn_2.style.width = "50%"; btn_2.style.marginLeft = "25%"; btn_2.style.backgroundColor = "green"; btn_2.style.display = "none"; // 绑定主函数 btn_1.addEventListener("click", readAll); btn_2.addEventListener("click", saveData); // 添加按钮元素到页面 document.body.appendChild(btn_1); document.body.appendChild(btn_2); // 确认主程序加载完毕 console.log("Program Loaded"); } main();