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