微信读书脚本

// ==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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值