WxRead-WebAutoReader
使用 微读自动阅读器,帮助你解放生产力 (双手) ,该干啥干啥去,书币照样拿!
新版本发布啦!!!欢迎大家尝鲜!!!
- 新版使用 PyQt5 作为基础框架,且代码完全开源,大家可以戳戳小手指点下关注
👉 WxReader2.0 - 另外因为设备限制,只打包了 Windows 版本,原则上是可以跨平台的,有条件的可以试试
- 新版本下载包传送门
新版本预告(桌面版)
距离上次更新一年半载了,期间收到了许多反馈,留言和催更。 新版本正在研发中,请各位静待佳音,我想未来一个月内发布新的正式版应该问题不大。 现在,为了方便整理,就目前收集到的反馈内容,我总结一下几个问题:
-
严重的:大部分用户都反馈了自动阅读概率性失效问题,但我挂机很久发现复现次数很低
- 首先,应该是使用 setInterval 做滚动不大稳定
- 其次,在网络状态不佳时,章节内容未加载完成时,极大概率会出现问题
- 新版本将放弃使用 setInterval 做滚动,并注意测试网络状态的影响
-
一般的:很多人不看首页的说明,跑来问使用方法😂
- 新版本会增加工具栏以增强可视化操作
- 当然,快捷键是会继续保留的,考虑支持自定义
- 极少数高端用户想要整本书读完时能对外开放一个GET/POST请求,我记住了
-
另外一个提及较多的:有部分网友仍在使用从书签栏启动的那个初版,希望我继续维护,我只能说还是放弃吧,限制太多了,要解决这些问题,还想要使用从书签栏启动的方式是不现实的
-
不考虑的:只有一个人提出要增加Text2Speech功能,说白了就是听书,我发现官方已经推出这个功能了,给绑个快捷键吧
-
反复重申的:
- 登录是在微信读书首页的右上角,如果看不到请拉大窗口,一定会看到的!
- 另外,这个是网页套壳,登录二维码是官方的,不会收集或者制造泄露任何用户信息的情况!我发4!
接下来说说目前新版本的计划:
-
放弃 Electron.js 做 Webview 的套壳,因为咱们就套一个微信读书网页端,用 Electron.js 太大材小用了,而且最重要的是打出来的包太大了。
-
按计划,新方案将改用 PyQt5 作为底层支持,目前项目已经启动,正处于技术验证阶段。
-
当前比较棘手的问题是,在 PyQt5 中 Python 与 JS 的交互策略较差,考虑使用 WebSocket 进行双方通信,有 QWebEngineView 这方面经验的朋友可以交流一下。
-
最后,开发不易,大大们小手一挥打赏一点碎银,给我点个外卖加个餐呀~
感谢你们
> 身后的痕迹好多都是踩过的坑,轮子只会不停地造,幸好的是,我留下了这条分割线
PC版 (建议使用)
- Windows 32位 百度云 提取码:
df98
- Windows 64位 百度云 提取码:
2khr
- PC版Github仓库,欢迎关注
网页版
方法一:
拖动链接到书签栏,点击此处获取。
方法二:
- 打开浏览器 (目前仅在 Chrome 下测试 OK,其他浏览器还没来得及测试,移动平台无效);
- 复制 wx_auto_reader.min.js 内容;
- 在浏览器新建一份书签,名称任意,如:
微信读书自动阅读器
,网址改为javascript:步骤2的复制内容
; - 打开微信读书网页版,打开任意一本书,点击书签栏
微信读书自动阅读器
,启动阅读程序,挂机就完了; - 建议选择一本篇幅较大的书,这样可以达到长时间挂机的目的,不会对你的工作产生干扰。
更新说明
-
2020.02.17
- 新增标题栏提示,更新章节进度和已读完状态;
- 新增浏览器通知 (需要用户授权),读完后发送通知给用户,比 alert 更好用 (由于部分浏览器不支持通知,因此保留 alert)。
-
2020.02.18
-
2020.02.22
- 修复大概率出现一直刷同一章节的问题: HTMLAnchorElement.click() 有概率失效,因此放弃此方法,使用键盘事件来切换下一章。
-
2020.03.27
- 修复在首页使用无效的问题,感谢Lovely-Wildpointer提的issue
-
2020.05.07
- 修复官方启用 CPS 规则后 WebWorker 无法使用的问题。
-
2020.08.04
-
新增Windows客户端,新版本使用Electron技术对微读阅读器进行了全方位的升级,现在你可以使用微读做到:
- 控制自动阅读开关,随时暂停和继续
- 自动阅读的过程中,做笔记时自动暂停,做完笔记后自动恢复
- 自由切换日间和夜间模式
- 下次打开继续上次阅读页面
- 读完一本书将收到系统通知
- 全面使用快捷键,提升阅读体验
-
第一次使用Electron制作PC端软件,希望你能给我一些反馈和建议
-
-
2020.08.05
- 新增导出读书笔记功能,暂时仅支持导出markdown格式,后续有需要再扩充其他模式
- 待办:为软件添加自动更新功能,这样有新版本发布的话大家就可以在本地完成更新,不需要回到这里下载新版本了
-
2020.08.07
- 新增自动检查更新并下载安装新版本功能
做微读自动阅读器的原因
闲的蛋疼!
当然不是!
实际上是因为在微信读书周阅读排行榜里看到了一个 132 小时的 bug 一般的存在,然后向网络求证了一下,发现知乎下有个人问了这个问题,求证之后顺手答了,大家可以在这里看我的回答:微信读书时长究竟如何计算?。
主要还是现行的挂机方法太次,所以动手写了这个程序。
为什么我说现行的方法太次?我给你介绍一下它的实现思路:下载一个安卓模拟器,在模拟器里安装微信读书,通过 ADB 建立模拟器与 Python 脚本之间沟通的桥梁,打开微信读书并选择一本书,运行 Python 脚本,最后由脚本实现微读 UI 自动化,达到模拟机器人读书的目的,也就是挂机了。
这乍看起来没什么问题吧?然而不是。实际上,首先它涉及到一大堆的概念:
- 安卓模拟器
- ADB
- Python 语言
- Python 依赖
这些步骤对于普通用户来说,实在是过于繁琐和复杂,甚至一不下心就会陷入**我明明按照使用说明做的,为什么就是不行?**的蜜汁困境,我相信只有程序员与极少数的发烧友才可能去折腾这些东西。
而且其中还有很多限制,比如说:ADB 是需要连接调试的,Python 需要安装依赖,模拟器需要设置很长的息屏时间,读完一本书就会暂停而用户根本不知道什么时候会暂停,以及不同 PC 平台部署是有些微差别的,等等。这其中很多事情根本就是开发人员做的事情,你不能把开发的东西丢给终端用户吧!
所以上述问题都可以归结于一点:由于部署困难导致它的受众范围必然很小。这是它最失败的地方,也是个人觉得它不会进入大众视野的根本原因,同样也是必然的结果。
微读自动阅读器是怎么做的
有鉴于此,我换了另外一个思路来实现,其实有点讨巧,而微信读书又刚好很赏脸地上线了微信读书网页版,并且同样计算有效时长!那么,上面所述的部署困难问题从这里开始就已经被完美地解决或者说规避了,因为从现在开始我们仅仅只需要一个 PC 浏览器了!
接下来的问题也是唯一的问题就是如何模拟用户读书从而达到挂机的目的。首先自然是要分析微信读书网页版的阅读习惯是怎么设计的,这样才好安排程序怎么做,这里就不赘述分析过程,直接贴结果了:网页版同 APP 版一样,书本分章节,不同的是,APP 版翻页会自动跳转到下一章,网页版每章之间有一个下一章
的按钮,用户必须点击下一章
才会跳转;书本阅读完毕后不会出现下一章
。
明白了微读网页版的机制,接下来就轮到 JavaScript 出场了,现在我们要用 JavaScript 实现:
- 获取阅读内容高度和屏幕高度;
- 每隔几秒钟自动滚动页面;
- 滚动时判断是否滚到底部;
- 滚到底部时说明本章已阅读完成,可以跳转下一章了;
- 找到下一章按钮,模拟用户点击,等待进入下一章,然后回到第 1 步继续阅读;如果找不到按钮,则判定本书阅读完毕,发送通知给用户,用户接收到通知,重新选择一本书。
原理很简单,代码也不复杂,唯一碰到的一个问题就是:刚开始使用 setInterval 做定时器,放到后台后时间长了发现频率不对劲,有的时候快有的时候慢,搜索了一下原因是浏览器的耗电保护机制,解决办法是使用 Web Worker,于是重新使用 Web Worker 实现了一次,测试正常了。详细的实现过程就不说了,大家按照使用说明直接拿去用就可以了,现在我们只要 3 个步骤就可以轻轻松松地一边上班一边挂(摸)机(鱼)了:
- 打开微读网页版、打开任意一本书;
- 点击
微信读书自动阅读器
开启自动阅读; - 等待阅读完成通知,回到第一步。
PS: 其实,我还连夜学了怎么写 Chrome 扩展,然后只要打开微读网页版,点开任意一本书就会自动开启阅读程序,本来想发到 Chrome 商店的,但是 Chrome 发布扩展竟然要$,而我实在懒(非)得(常)折(的)腾(穷)了。如果您愿意拿一点点小小的心意资助,请扫下方二维码,鄙人不胜感激。
声明
本仓库仅提供代码,一切责任由使用者自行承担。