# zreaderpy **Repository Path**: huguoling/zreaderpy ## Basic Information - **Project Name**: zreaderpy - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 4 - **Created**: 2026-09-30 - **Last Updated**: 2026-10-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ZReader —— 知乎阅读器 / 内容收藏工具 基于 **Python + PySide6(Qt) + QtWebEngine** 的桌面知乎客户端:内置浏览器内核浏览并搜索 知乎(持久化登录,下次打开无需重新登录),**自动向页面注入「收藏」按钮**: 一键把回答 / 文章 / 想法保存到本地收藏库,并同时导出成可离线阅读的 Markdown / HTML 文件。 ## 功能 - **内嵌浏览器**:基于 `QWebEngineView`,独立的持久化 Profile,登录状态、Cookie、 缓存都会被保存,下次打开无需重新登录。 - **SPA 友好的前进/后退**:知乎站内跳转几乎全是 `history.pushState`(不刷新页面), Qt 自带的 `back()/forward()` 对这类同文档历史条目不可靠。程序改为优先调用页面自身的 `history.back()/forward()`(与真实浏览器一致,SPA 路由能正确响应 `popstate`), 仅在 URL 确实未变化时才退回 Qt 的会话历史。 - **自动注入收藏按钮**:页面加载后自动识别所有内容卡片 (`.ContentItem.AnswerItem` / `.ArticleItem` / `.PinItem` / `.List-item[data-zop]`, 以及评论区 `.CommentItemV2` / `.CommentItem`), 在卡片操作栏插入「收藏」按钮;已收藏的内容显示为「已收藏」,再次点击可取消。 - **收藏即下载**:点击「收藏」除了写进收藏库,还会在后台把**原文的 文字 + 图片 + 评论**落地成 Markdown / HTML 文件(默认开启,可在 「设置 → 收藏时同时下载内容到本地」关闭); - 使用 `MutationObserver` + 定时兜底扫描,兼容知乎的无限滚动、虚拟列表与前端路由; - **评论不自动翻,手动展开**:默认**不会**自动去点「查看全部 3 条回复」 「查看更多评论」「加载更多」这类按钮,想看更多自己在页面里点。需要一次看全时, 点工具栏「展开全部评论」——它只跑这一轮(最多 20 轮,连续 3 轮没有新内容就停), 跑完就停,**不会变成自动翻页**;想要长期自动展开,再勾选 「设置 → 自动展开文章评论(含全部回复)」(默认关闭)。 - **评论也可收藏**:评论区里**每一条评论**(含楼中楼)下面都会出现 「收藏评论」按钮,点一下就把**这条评论**(作者 / 正文 / 时间 / 点赞 / 图片)写进收藏库并保存到本地,不会把父文章的正文或整页评论混进来。 - 按钮位置:**始终追加在评论正文下方**,不插进知乎那条「悬停才显示」的 操作按钮行,所以默认就看得见; - 每条评论都有自己的按钮:脚本定期巡检(以及每次扫描 / 手动展开后)会给 漏掉的评论补按钮,已收藏状态刷新页面后依然正确; - 评论按钮的定位不依赖知乎的 `CommentItemV2` / `CommentItem` 类名:脚本用 「评论正文」(`.CommentContent`) 反推评论根节点;连正文类名都变了, 还能靠每条评论都有的「回复」按钮兜底识别; - 工具栏「诊断」里会显示「识别到的评论 / 已注入收藏评论按钮」数量,以及 页面上所有含 Comment 的类名,便于排查; - 评论没有全局 ID,程序用「作者 + 正文」生成稳定指纹作为编号,刷新页面后 「已收藏评论」状态依然正确; - 本地目录按「<作者>的评论 <指纹>:<评论摘录>」命名,同一位作者在同一篇 文章下的多条评论各占一个文件夹,不会互相覆盖; - 只在 `*.zhihu.com` 生效,不会污染其它网站。 - **收藏内容自动落地到本地**:点「收藏」即把该条内容的完整正文与图片写成文件: ``` 内容保存目录/<标题>/ ├── <标题>.md # Markdown(含元信息、图片相对路径) ├── <标题>.html # 可直接用浏览器打开的完整页面 └── images/ # 正文图片(已本地化) ``` 默认内容保存目录就是下载目录(`<数据目录>/downloads`,Windows 上即 `%APPDATA%\ZReader\downloads`),与「下载」标签页的保存位置完全一致; 可在「设置 → 内容保存目录…」改成任意路径。 图片抓取与写盘在工作线程中完成,不阻塞页面;完成后会提示保存位置, 可一键打开所在文件夹。 - **收藏时抓取完整正文(避免「断章」/「只有一半」)**: 「设置 → 收藏时抓取完整正文」开启后(默认开启),在首页 / 话题页等**列表页** 收藏时,程序会在后台用一个独立页面打开这条内容的**固定链接**,把正文完整取回 写库并重写本地文件。为了不出现「只有一半」的内容: 1. **不展开文章也能取到全文**:优先读服务端下发的数据 (页面里的 `