百度文库文本转doc源码解析下载, 无限制, 永不付费(脚本来源于网络,侵删!)
当前为
// ==UserScript==
// @name 某度文库解析下载, 文库下载解析, 文库doc下载
// @namespace https://greasyfork.org/zh-CN/users/757983-up%E5%B0%8F%E9%BB%8E
// @version 0.36.1
// @description 百度文库文本转doc源码解析下载, 无限制, 永不付费(脚本来源于网络,侵删!)
// @require https://cdn.bootcss.com/jquery/2.2.4/jquery.js
// @require https://greasyfork.org/scripts/405376-filesaver-html5/code/FileSaver(html5).js?version=816426
// @require https://greasyfork.org/scripts/372672-everything-hook/code/Everything-Hook.js?version=784972
// @author UP小黎
// @match *://wenku.baidu.com/view*
// @match *://wenku.baidu.com/link*
// @run-at document-start
// @license MIT
// @grant none
// ==/UserScript==
function wait(ms) {
return new Promise(resolve => {
setTimeout(() => {
resolve();
}, ms);
})
}
if (typeof jQuery !== "undefined" && typeof saveAs !== "undefined") {
(function ($) {
~function (global) {
'use strict';
if (global.eHook) {
global.eHook.plugins({
name: 'wenku2word',
/**
* 加载
*/
mount: function (util) {
this.hookBefore(Element.prototype, 'removeChild',
function (m, args) {
var ele = args[0];
if (ele && ele.classList && ele.classList.contains('reader-parent')) {
var instead = document.createElement('div');
this.appendChild(instead);
args[0] = instead;
}
}, false);
return {
wordExport: function (elements, fileName) {
fileName = typeof fileName !== 'undefined' ? fileName : document.title;
var constant = {
wordHtml: {
top: "Mime-Version: 1.0\nContent-Base: " + location.href + "\nContent-Type: Multipart/related; boundary=\"NEXT.ITEM-BOUNDARY\";type=\"text/html\"\n\n--NEXT.ITEM-BOUNDARY\nContent-Type: text/html; charset=\"utf-8\"\nContent-Location: " + location.href + "\n\n<!DOCTYPE html>\n<html>\n_html_</html>",
head: "<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n<style>\n_styles_\n</style>\n</head>\n",
body: "<body>_body_</body>"
}
};
var markup = $(elements).clone();
markup.each(function () {
var self = $(this);
if (self.is(':hidden'))
self.remove();
});
var htmlEnd = "\n";
htmlEnd += "--NEXT.ITEM-BOUNDARY--";
var fileContent = constant.wordHtml.top.replace("_html_", constant.wordHtml.head.replace("_styles_", '') + constant.wordHtml.body.replace("_body_", markup.text().split('\n').map(t => `<p>${t}</p>`).join(''))) + htmlEnd;
var blob = new Blob([fileContent], {
type: "application/msword;charset=utf-8"
});
saveAs(blob, fileName + ".doc");
},
doExport: function () {
this.wordExport($(".reader-word-layer"));
},
isLoaded: false,
fetchMoreContent() {
var goNext = document.querySelector('.goBtn') || document.querySelector('.read-all');
let elem = document.documentElement;
let elem2 = document.body;
let totalHeight = elem.scrollHeight;
let scrollTop = elem.scrollTop || elem2.scrollTop;
let clientHeight = elem.clientHeight;
var _this = this;
if (totalHeight - scrollTop <= clientHeight * 1.1 || this.isLoaded) {
this.isLoaded = true;
return Promise.resolve();
}
if ($(goNext).is(':hidden') || !goNext) {
return wait(200).then(
function () {
window.scroll(0, scrollTop + clientHeight / 4);
return _this.fetchMoreContent();
}
);
}
goNext && goNext.click();
return wait(2000).then(
function () {
return _this.fetchMoreContent();
}
);
}
}
}
});
}
}(window);
console.log('wenku2word loaded successfully');
window.addEventListener('load', function () {
var existBtn = $('.core-btn-wrapper > div');
if (!existBtn || !existBtn.length) {
return;
}
var btn = $('<div></div>')
if (existBtn) {
btn = existBtn.clone();
}
btn[0].className = 'btn-download btn-pay reader-download';
btn[0].innerHTML = 'word识别下载 ';
btn[0].style.marginLeft = '10px';
btn.click(function (e) {
e.preventDefault();
e.stopPropagation();
window.scroll(0, 0);
var spinner = document.createElement('div');
spinner.innerText = '解析文章中, 请稍候...';
spinner.style.position = 'fixed';
spinner.style.width = '100%';
spinner.style.height = '100%';
spinner.style.textAlign = 'center';
spinner.style.paddingTop = '10rem';
spinner.style.backgroundColor = 'rgba(255,255,255,.8)';
spinner.style.zIndex = '99999';
spinner.style.fontSize = '3rem';
spinner.style.top = '0';
spinner.style.left = '0';
document.body.appendChild(spinner);
window.wenku2word.fetchMoreContent()
.then(function () {
spinner.innerText = '解析成功, 正在创建下载文件...';
return wait(2000)
}).then(function () {
window.wenku2word.doExport();
document.body.removeChild(spinner);
}
);
});
$('.toolbar-core-btns-wrap').append(btn[0]);
$('.core-btn-wrapper').append(btn[0]);
console.log('button added');
})
})(jQuery);
} else {
console.log('wenku2word loaded failed');
}