Python实现微信读书辅助工具
[TOC]
##项目来源
这个有意思的项目是我从GitHub上找来的,起因是在不久前微信读书突然就设置了非会员书架数目上限,我总想做点什么来表达我的不满,想到可否用爬虫来获取某一本书的内容,
但是我技术有限,我使用F12进行检查,发现微信读书的网页版中的内容居然是canvas元素结合js绘制出来的图像?

但是大佬arry-lee不知通过什么方法找到了微信读书的各种接口,从而可以获取到诸如笔记、标注、想法等信息,另一位大佬liuhao326,在前一位的基础上进行了功能上的完善
可以参考他们的GitHub项目,地址如下:
https://github.com/arry-lee/wereader
https://github.com/liuhao326/pythontools/tree/master/wereader
##动手实践
###下载代码
如果你没用过GitHub也没关系,打开如下地址:https://github.com/liuhao326/pythontools
按照下图所示的操作即可下载代码文件:

将压缩包解压到一个没有中文的路径
###使用方法
####遇到的问题
原作者给出了他的使用方法:https://github.com/liuhao326/pythontools/tree/master/wereader
但我按照他的步骤,总是会存在一些错误,比如安装完依赖库后,运行程序时显示DLL模块未加载之类的错误,你可以先按照原作者的步骤尝试,如果有问题,不妨试试我的解决办法
首先我将requirement.txt中的内容进行了小小的更改,我将PyQt5中的版本要求给去掉了

然后他推荐的是下载清华的镜像,但我安装完后总有点问题,后来我用豆瓣的镜像安装就成功了。
####具体步骤
- 安装依赖库
首先找到Python的安装文件夹,从中找到Scripts文件夹
比如我的路径如下:
C:\Users\12345\anaconda3\Scripts
然后在此路径下,在文件资源管理器左上角,也就是显示路径的地方,输入cmd,从而直接cd到了此路径下
输入:pip install -r requirement.txt -i https://pypi.douban.com/simple
如果遇到安装失败就把这个命令再重复一次,或者输入:pip uninstall -y -r requirement.txt,卸载依赖库之后,再输入上一条指令重新安装依赖库
还有一个依赖库PyQt5-tools,作者的requirement.txt中没有,但是这个可能是必要的,最好也装一下
pip install PyQt5-tools -i https://pypi.douban.com/simple - 运行程序
有三种方法可以运行程序,cmd命令行、Windows powershell还有在IDE中(比如pycharm)运行,
如果是前两种,那么环境变量的path中应该要有Python程序,然后cd到main.py文件所在的路径,再输入python main.py,回车即可运行
cmd命令行中:

Windows powershell中:

pycharm中:
双击main.py,会自动用pycharm打开,然后直接右键点击代码部分的空白处,选择run即可

当出现下面这张图时,说明程序运行成功了

扫码完成之后,
会将你的账号下的书架中的内容按照你的分类以树形结构展开

然后最下方出现输入书本ID的提示

比如我选择《战争论》这本书,
我找到其ID为856108
输入之后得到了命令提示:

我最喜欢的功能是print 1,输出标注(指的是自己在本书上做过记号的地方)以及print 3,输出热门标注,指的是本书被人标记得比较多的部分,这个也可以帮助你快速找到此书的思想精华。
比如我输入print 3,
结果如图所示:

得到的热门标注是以Markdown格式输出在控制台上的,同时还保存在剪贴板上,你找个地方Ctrl+V就可以了,
比如我使用印象笔记,它是支持Markdown格式的


- 可能发生的错误
- 错误一
如果发生的错误是DLL模块未加载,最好按照我前面说过的步骤,使用豆瓣的镜像重新安装依赖库PyQt5 - 错误二
如果是这种错误,Process finished with exit code -1073741819

我找到一个教程说明此问题:https://blog.csdn.net/qiao1025566574/article/details/81037908
并且我按照他说的卸载了h5py这个库,卸载命令如下:pip uninstall -y h5py
有没有起到作用我不太清楚,诸君可以一试 - 错误三
如果是这种错误,[9392:21992:0731/142959.086:ERROR:permission_manager_qt.cpp(82)] NOT IMPLEMENTEDUnsupported permission type: 13
那就没什么好的办法了,至少我不会,
推荐一个参考链接:https://stackoverflow.com/questions/57733039/errorpermission-manager-qt-cpp82-unsupported-permission-type-13
大佬是这么解释的:There is no way to solve from your side since it is a Qt/chromium warning, besides it is not an error it is only indicating that you do not have that permission
意思是这不是一个错误,而是权限问题
所以我的解决办法是,多运行几次,没错,我就是这样做的
比如下图这样,

如果出现了这样的情况,同时有二维码出现了,那就赶紧扫码,别管报的什么错了 - 错误四
诸如“KeyError BookID”这样的错误,这样的错误,一般报错的时候会提示哪一行代码出错了,我的方法是直接对作者的代码进行小小的改动,首先看错误是在哪个地方,是wereader.py还是main.py中的第几行的错误,找到之后,发现多为for循环中的错误,而且一般与字典变量有关,我推测是因为使用for循环的时候遇到了某些部分将空值或者非法的值作为字典的键值造成的。
修改很简单,将for循环中的部分放在try中,然后在except中使用continue,也就是,出错了就跳过这部分,例如下图所示:

像这样的地方还有很多,但是有一种情况是没有办法的,那就是想要输出热门标注,但是那本书其实没人看或者看得人太少,不存在热门标注,强行print 3,也是会出错的
Python实现微信读书辅助工具的更多相关文章
- TT企业微信社群辅助,企业微信社群辅助工具,允许批量添加好友,自动同意添加请求,自动回复消息
TT企业微信社群辅助,企业微信社群辅助工具,允许批量添加好友,自动同意添加请求,自动回复消息 界面截图 TT企业微信社群辅助工具下载 链接: https://pan.baidu.com/s/1Y2An ...
- 打python&adb组合拳,实现微信读书永久免费读
用过“微信读书”的朋友都知道,如果我们想阅读全本的付费书籍,除了购买整本(使用书币)外,还可以使用无限卡.可无论是购买全书还是无限卡,归根结底都是要花银子的. 除此之外,还有一种方式——用阅读时长兑换 ...
- Python的扩展接口[2] -> 动态链接库DLL[0] -> 动态链接库及辅助工具
动态链接库 / Dynamic Link Library 目录 动态链接库简介 函数封装DLL 组件对象模型COM 如何判断.dll文件是COM还是DLL 辅助工具 1 动态链接库简介 / DLL I ...
- VSCode 小鸡汤 第01期 - REST Client 简单好用的接口测试辅助工具
介绍 今天给大家介绍一个后端开发辅助的好工具 -- REST Client,插件如其名这就是一个 REST 的客户端插件,把我们的 VSCode 转化为一个 REST 接口测试的利器 我们一般都会用 ...
- Python黑帽编程1.3 Python运行时与包管理工具
Python黑帽编程1.3 Python运行时与包管理工具 0.1 本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks Attack and ...
- 使用微信web开发者工具调试微信企业号页面(前端页面,已发布在服务器上的)
前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是做一个记录,方便自己以后使 ...
- 【腾讯Bugly干货分享】微信读书iOS性能优化
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/578c93ca9644bd524bfcabe8 “8小时内拼工作,8小时外拼成长 ...
- 微信读书 iOS 性能优化总结
微信读书作为一款阅读类的新产品,目前还处于快速迭代,不断尝试的过程中,性能问题也在业务的不断累积中逐渐体现出来.最近的 1.3.0 版本发布后,关于性能问题的用户反馈逐渐增多,为此,团队开始做一些针对 ...
- 微信web开发者工具调试
微信web开发者工具调试 前几天写了一篇使用fiddler调试微信端页面的,然后博友评论说使用fiddler太麻烦了,推荐使用微信web开发者工具调试微信页面,这两天弄着玩了一下,很强大.这篇文章只是 ...
随机推荐
- call,apply,bind的内部原理实现
call call 方法使用一个函数执行的时候更改本身 this 指向,并传入一个或者多个参数. var obj = { name: '$call' } function _fun() { conso ...
- 「疫期集训day7」周期
我们成功入侵了圣康坦,屋子里到处都是面包,食物,水...现在我们的目标就在眼前----亚眠------鲁道登夫攻势中损失惨重的德国精英兵 今天考试考出了历史最低,原因在于T1签到题挂了,ull真的毒瘤 ...
- 读CSAPP第一章的收获
这个系列只写了CSAPP第三版对于我的收获. 里面的内容很多,我只写我以前不知道的,然后现在又觉得挺有用的内容. 没有很好的排版,将就看. Amadhl定律:主要观点,想要显著加速整个系统,必须提升全 ...
- sql语句-CASE WHEN用法详解
当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了. Case具有两种格式.简单Case函数和Case搜索函数. 第一种 格式 : 简单C ...
- python 检索文件内容工具
公司内部需求一个工具检索目录下的文件在另外的目录中使用次数, 用来优化包体的大小. 此代码效率并不高效, 另添加对应的 后缀检索. 用python 实现比较快速, 另还有缺点是只支持 utf-8 格式 ...
- 通过注入DLL修改API代码实现钩取(一)
通过注入DLL修改API代码实现钩取(一) Ox00 大致思路 通过CreateRemoteThread函数开辟新线程,并将DLL注入进去 通过GetProcessAddress函数找到需钩取的API ...
- MVC引用asp.net报表(测试小例子)
public class Default1Controller : Controller { // // GET: /Default1/ public ActionResult Index() { r ...
- 使用OpenCV对图片进行特征点检测和匹配(C++)
背景 最近从不同网站下载了非常多的动漫壁纸,其中有一些内容相同,但是大小.背景颜色.色调.主人公的位置不同(例子如下).正因为如此,基础的均方误差.直方图检测等方法很难识别出这些相似的图片. 思路 O ...
- Guava的两种本地缓存策略
Guava的两种缓存策略 缓存在很多场景下都需要使用,如果电商网站的商品类别的查询,订单查询,用户基本信息的查询等等,针对这种读多写少的业务,都可以考虑使用到缓存.在一般的缓存系统中,除了分布式缓存, ...
- Monster Audio 使用教程(三)多音轨录音、播放
在工作站音轨上,把需要进行录音的音轨的录音按钮点亮,然后点击液晶屏旁边的[录音]按钮,开始录音 导出干声 如果希望录音后,导出干声(干声为录下的原始声音,不受效果器的作用),用其他宿主软件进行处理, ...