Python实现微信读书辅助工具
项目来源
这个有意思的项目是我从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,也是会出错的