Python 一键导出微信阅读记录和笔记,666!
作者:云外孤鳥?
出處:https://www.cnblogs.com/cloudbird/p/12683546.html
全民閱讀的時代已經來臨,目前使用讀書軟件的用戶數2.1億,日活躍用戶超過500萬,其中19-35歲年輕用戶占比超過60%,本科及以上學歷用戶占比高達80%,北上廣深及其他省會城市/直轄市用戶占比超過80%。
本人習慣使用微信讀書,為了方便整理書籍和導出筆記,便開發了這個小工具。
部分截圖
代碼思路
1. 目錄結構
首先,我們先看一下整體目錄結構
├─?excel_func.py???????????????????讀寫excel文件 ├─?pyqt_gui.py?????????????????????PyQt?GUI界面 └─?wereader.py?????????????????????微信讀書相關apiexcel_func.py
使用xlrd和xlwt庫對excel文件進行讀寫操作pyqt_gui.py
使用PyQt繪制GUI界面wereader.py
通過抓包解析獲得相關api
2. excel_func.py
def?write_excel_xls(path,?sheet_name_list,?value):#?新建一個工作簿workbook?=?xlwt.Workbook()#?獲取需要寫入數據的行數index?=?len(value)for?sheet_name?in?sheet_name_list:#?在工作簿中新建一個表格sheet?=?workbook.add_sheet(sheet_name)#?往這個工作簿的表格中寫入數據for?i?in?range(0,?index):for?j?in?range(0,?len(value[i])):sheet.write(i,?j,?value[i][j])#?保存工作簿workbook.save(path)該函數的代碼流程為:
創建excel文件
創建表格
往表格寫入數據
3. pyqt_gui.py
class?MainWindow(QMainWindow):def?__init__(self,?*args,?**kwargs):super().__init__(*args,?**kwargs)self.DomainCookies?=?{}self.setWindowTitle('微信讀書助手')?#?設置窗口標題self.resize(900,?600)?#?設置窗口大小self.setWindowFlags(Qt.WindowMinimizeButtonHint)?#?禁止最大化按鈕self.setFixedSize(self.width(),?self.height())?#?禁止調整窗口大小url?=?'https://weread.qq.com/#login'?#?目標地址self.browser?=?QWebEngineView()?#?實例化瀏覽器對象QWebEngineProfile.defaultProfile().cookieStore().deleteAllCookies()?#?初次運行軟件時刪除所有cookiesQWebEngineProfile.defaultProfile().cookieStore().cookieAdded.connect(self.onCookieAdd)?#?cookies增加時觸發self.onCookieAdd()函數self.browser.loadFinished.connect(self.onLoadFinished)?#?網頁加載完畢時觸發self.onLoadFinished()函數self.browser.load(QUrl(url))?#?加載網頁self.setCentralWidget(self.browser)?#?設置中心窗口該函數的代碼流程為:
新建QT窗口
實例化QWebEngineView對象
綁定self.onCookieAdd事件
綁定self.onLoadFinished事件
加載網頁
該函數的代碼流程為:
當網頁加載完畢時,檢測是否成功登錄微信讀書
如果成功登錄微信讀書,則關閉QT窗口,開始進行數據導出
如果失敗登錄微信讀書,則繼續等待用戶掃描二維碼
該函數的代碼流程為:
保存微信讀書網址的cookies,以便后續操作
該函數的代碼流程為:
調用write_excel_xls_append函數,保存書籍,并且導出筆記
4. wereader.py
def?get_bookshelf(userVid,?headers):"""獲取書架上所有書"""url?=?"https://i.weread.qq.com/shelf/friendCommon"params?=?dict(userVid=userVid)r?=?requests.get(url,?params=params,?headers=headers,?verify=False)if?r.ok:data?=?r.json()else:raise?Exception(r.text)books_finish_read?=?set()?#?已讀完的書籍books_recent_read?=?set()?#?最近閱讀的書籍books_all?=?set()?#?書架上的所有書籍for?book?in?data['recentBooks']:if?not?book['bookId'].isdigit():?#?過濾公眾號continueb?=?Book(book['bookId'],?book['title'],?book['author'],?book['cover'],?book['intro'],?book['category'])books_recent_read.add(b)books_all?=?books_finish_read?+?books_recent_readreturn?dict(finishReadBooks=books_finish_read,?recentBooks=books_recent_read,?allBooks=books_all)該函數的代碼流程為:
獲取最近閱讀的書籍、已經讀完的書籍、所有書籍
過濾公眾號部分
將書籍數據保存為字典格式
該函數的代碼流程為:
獲取某一本書籍的筆記
將返回的字符串改寫成markdown格式并輸出
如何運行
#?跳轉到當前目錄 cd?目錄名 #?先卸載依賴庫 pip?uninstall?-y?-r?requirement.txt #?再重新安裝依賴庫 pip?install?-r?requirement.txt?-i?https://pypi.tuna.tsinghua.edu.cn/simple #?開始運行 python?pyqt_gui.py END 來和小伙伴們一起向上生長呀~~~ 掃描下方二維碼,添加小詹微信,可領取千元大禮包并申請加入 Python學習交流群,群內僅供學術交流,日?;?#xff0c;如果是想發推文、廣告、砍價小程序的敬請繞道!一定記得備注「交流學習」,我會盡快通過好友申請哦!(添加人數較多,請耐心等待)(掃碼回復 1024? 即可領取IT資料包)總結
以上是生活随笔為你收集整理的Python 一键导出微信阅读记录和笔记,666!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字节跳动只剩下小米这一个朋友了
- 下一篇: seaborn常用的10种数据分析图表