// ==UserScript==
// @name 微信读书网页版截图保存
// @version 0.0.1
// @namespace http://tampermonkey.net/
// @description 内容截图保存
// @contributor Y6blNUlL
// @author Y6blNUlL
// @match https://weread.qq.com/web/reader/*
// @require https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js
// @require http://cdn.staticfile.org/jquery/1.8.3/jquery.min.js
// @require https://cdn.jsdelivr.net/npm/jquery@3.2.1/dist/jquery.min.js
// @require https://cdn.bootcss.com/html2canvas/0.5.0-beta4/html2canvas.js
// @icon https://weread.qq.com/favicon.ico
// @grant GM_log
// @grant GM_addStyle
// @grant unsafeWindow
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_openInTab
// @grant GM_download
// @grant GM_setClipboard
// @grant GM_notification
// ==/UserScript==
GM_addStyle('*{font-family: TsangerJinKai05 !important;}');
GM_addStyle('.readerTopBar{font-family: SourceHanSerifCN-Bold !important;}');
GM_addStyle('.bookInfo_title{font-family: SourceHanSerifCN-Bold !important;}');
GM_addStyle(
'.readerTopBar_title_link{font-family: SourceHanSerifCN-Bold; !important; font-weight:bold !important;}'
);
GM_addStyle(
'.readerTopBar_title_chapter{font-family: SourceHanSerifCN-Bold !important;}'
);
GM_addStyle(
'.wr_whiteTheme .renderTargetContainer .renderTargetContent .wr_readerImage_opacity {background-color: rgba(216,226,200,80) !important;}'
);
GM_addStyle(
'.wr_whiteTheme .renderTargetContainer .renderTargetContent .wr_readerBackground_opacity{background-color: rgba(216,226,200,80) !important;}'
);
GM_addStyle(
'.wr_whiteTheme .readerContent .app_content{background-color: rgba(216,226,200,80) !important;}'
);
GM_addStyle('.readerChapterContent{color: rgba(0,0,0,100) !important;}');
GM_addStyle('.readerControls{margin-left: calc(50% - 60px) !important;}');
GM_addStyle('.readerControls{margin-bottom: -28px !important;}');
//GM_addStyle(".readerChapterContent{font-weight: bold !important;}");
$(window).on('load', async function () {
'use strict';
//-----------wxread-----------
$('.readerTopBar').css('opacity', '0');
$('.readerTopBar').remove();
document.documentElement.scrollTop = 0; //回到顶部
//模拟发送键盘事件
function fireKeyEvent(element, evt_type, key_code) {
var doc = element.ownerDocument,
win = doc.defaultView || doc.parentWindow,
event_target;
if (doc.createEvent) {
if (win.KeyEvent) {
event_target = doc.createEvent('KeyEvents');
event_target.initKeyEvent(
evt_type,
true,
true,
win,
false,
false,
false,
false,
key_code,
0
);
} else {
event_target = doc.createEvent('UIEvents');
Object.defineProperty(event_target, 'keyCode', {
get: function () {
return this.keyCodeVal;
},
});
Object.defineProperty(event_target, 'which', {
get: function () {
return this.keyCodeVal;
},
});
event_target.initUIEvent(evt_type, true, true, win, 1);
event_target.keyCodeVal = key_code;
if (event_target.keyCode !== key_code) {
console.log(
'keyCode ' +
event_target.keyCode +
' 和 (' +
event_target.which +
') 不匹配'
);
}
}
element.dispatchEvent(event_target);
} else if (doc.createEventObject) {
event_target = doc.createEventObject();
event_target.keyCode = key_code;
element.fireEvent('on' + evt_type, event_target);
}
}
//自动阅读实现
function wxAutoReader() {
//翻页等待时间间隔
const _page_turn_interval = 5000;
//重新获取页面元素
function fetchPageElement() {
var abc = $(
'#routerView > div:nth-child(5) > div.readerCatalog > ul > li.chapterItem.chapterItem_current > div > span'
).text();
if (abc.length != 0) {
setTimeout(takePhoto(abc), 800); //等待2s执行一次
//开始下一章截图
fireKeyEvent(document.body, 'keydown', 39);
setTimeout(() => {
fetchPageElement();
}, _page_turn_interval);
}
}
fetchPageElement();
}
//截图事件
function takePhoto(title) {
html2canvas(document.getElementsByClassName('app_content'), {
onrendered: function (canvas) {
var url = canvas.toDataURL();
//以下代码为下载此图片功能
var triggerDownload = $('<a>')
.attr('href', url)
.attr('download', title + '.png')
.appendTo('body');
triggerDownload[0].click();
triggerDownload.remove();
},
});
}
wxAutoReader();
})();
更多内容参考:https://github.com/0x0o/WxRead-WebAutoReader