Python實現微信讀書輔助工具

chuyaoxin發表於2020-07-31

專案來源

這個有意思的專案是我從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中的版本要求給去掉了

然後他推薦的是下載清華的映象,但我安裝完後總有點問題,後來我用豆瓣的映象安裝就成功了。

具體步驟

  1. 安裝依賴庫
    首先找到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
  2. 執行程式
    有三種方法可以執行程式,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格式的

  3. 可能發生的錯誤
  • 錯誤一
    如果發生的錯誤是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,也是會出錯的

相關文章