⼀键导出读书的书籍和笔记
简介
全民阅读的时代已经来临,⽬前使⽤读书软件的⽤户数2.1亿,⽇活跃⽤户超过500万,其中19-35岁年轻⽤户占⽐超过60%,本科及以上学历⽤户占⽐⾼达80%,北上⼴深及其他省会城市/直辖市⽤户占⽐超过80%。本⼈习惯使⽤读书,为了⽅便整理书籍和导出笔记,便开发了这个⼩⼯具。
部分截图
代码思路
1. ⽬录结构
⾸先,我们先看⼀下整体⽬录结构
Code
├─ excel_func.py 读写excel⽂件
├─ pyqt_gui.py PyQt GUI界⾯
└─ wereader.py 读书相关api
焦俊艳和焦恩俊excel_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)
该函数的代码流程为:
1. 创建excel⽂件
2. 创建表格
3. 往表格写⼊数据
3. pyqt_gui.py
class MainWindow(QMainWindow):
def__init__(self,*args,**kwargs):
super().__init__(*args,**kwargs)
self.DomainCookies ={}
self.setWindowTitle('读书助⼿')# 设置窗⼝标题
探险之旅作文五年级500字size(900,600)# 设置窗⼝⼤⼩
母亲节买什么礼物好呢self.setWindowFlags(Qt.WindowMinimizeButtonHint)# 禁⽌最⼤化按钮
self.setFixedSize(self.width(), self.height())# 禁⽌调整窗⼝⼤⼩
移动电源什么牌子好url ='weread.qq/#login'# ⽬标地址
self.browser = QWebEngineView()# 实例化浏览器对象
QWebEngineProfile.defaultProfile().cookieStore().deleteAllCookies()# 初次运⾏软件时删除所有cookies
QWebEngineProfile.defaultProfile().cookieStore().CookieAdd)# cookies增加时触发CookieAdd()函数 self.LoadFinished)# ⽹
页加载完毕时触发LoadFinished()函数
self.browser.load(QUrl(url))# 加载⽹页
self.setCentralWidget(self.browser)# 设置中⼼窗⼝
该函数的代码流程为:
1. 新建QT窗⼝
2. 实例化QWebEngineView对象
3. 绑定CookieAdd事件
4. 绑定LoadFinished事件
5. 加载⽹页
# ⽹页加载完毕事件
def onLoadFinished(self):
global USER_VID
global HEADERS
# 获取cookies
cookies =['{}={};'.format(key, value)for key,value in self.DomainCookies.items()] cookies =' '.join(cookies)
# 添加Cookie到header
HEADERS.update(Cookie=cookies)
# 判断是否成功登录读书
if login_success(HEADERS):
print('登录读书成功!')
# 获取⽤户user_vid
if'wr_vid'in self.DomainCookies.keys():
USER_VID = self.DomainCookies['wr_vid']
print('⽤户id:{}'.format(USER_VID))
# 关闭整个qt窗⼝
self.close()
else:
print('请扫描⼆维码登录读书...')
该函数的代码流程为:
1. 当⽹页加载完毕时,检测是否成功登录读书
2. 如果成功登录读书,则关闭QT窗⼝,开始进⾏数据导出
3. 如果失败登录读书,则继续等待⽤户扫描⼆维码
12306注册# 添加cookies事件
def onCookieAdd(self, cookie):
if'weread.qq'in cookie.domain():
name = cookie.name().data().decode('utf-8')
value = cookie.value().data().decode('utf-8')
if name not in self.DomainCookies:
self.DomainCookies.update({name: value})
该函数的代码流程为:
1. 保存读书⽹址的cookies,以便后续操作
books = get_bookshelf(USER_VID, HEADERS)# 获取书架上的书籍
books_finish_read = books['finishReadBooks']
books_recent_read = books['recentBooks']
books_all = books['allBooks']
write_excel_xls_append(data_dir +'我的书架.xls','已读完的书籍', books_finish_read)# 追加写⼊excel⽂件
write_excel_xls_append(data_dir +'我的书架.xls','最近阅读的书籍', books_recent_read)# 追加写⼊excel⽂件 write_excel_xls_append(data_dir +'我的书架.xls','所有的书籍', books_all)# 追加写⼊excel⽂件
# 获取书架上的每本书籍的笔记
for index, book in enumerate(books_finish_read):
book_id = book[0]
book_name = book[1]
notes = get_bookmarklist(book[0], HEADERS)
with open(note_dir + book_name +'.txt','w')as f:
f.write(notes)
print('导出笔记 {} ({}/{})'.format(note_dir + book_name +'.txt', index+1,len(books_finish_read)))
该函数的代码流程为:
1. 调⽤write_excel_xls_append函数,保存书籍,并且导出笔记
4. wereader.py
def get_bookshelf(userVid, headers):
"""获取书架上所有书"""
url ="i.weread.qq/shelf/friendCommon"
params =dict(userVid=userVid)
r = (url, params=params, headers=headers, verify=False)
if r.ok:
data = r.json()
else:
raise )
books_finish_read =set()# 已读完的书籍
books_recent_read =set()# 最近阅读的书籍
books_all =set()# 书架上的所有书籍
for book in data['recentBooks']:
if not book['bookId'].isdigit():# 过滤
continue
b = 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_read
return dict(finishReadBooks=books_finish_read, recentBooks=books_recent_read, allBooks=books_all)
该函数的代码流程为:
1. 获取最近阅读的书籍、已经读完的书籍、所有书籍
2. 过滤部分
3. 将书籍数据保存为字典格式
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论