新增 PDF/EPUB/MOBI/AZW 内置阅读器,PDF 分段读取支持超大文件, 批注、读书与画布笔记、封面生成与本地导入。AI 助手支持三种协议、 图像上下文与安全 Markdown 渲染,上下文范围改为 选中/当前页/全文, 页面与全文无需选中文本即可发送,全文会提示可能超出模型限制。 便携版输出目录固定为 PeopleLib-windows-x64,不再随版本号变化, 避免升级后 data/ 被遗留在旧目录。 Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
PeopleLib
开放获取文献与图书的桌面客户端(Electron)。在一个界面里检索多个公开文献源,查看详情,下载文件并归入本地书库。
界面预览
功能
- 多源检索:12 个数据源统一的搜索、详情、下载流程
- 本地书库:收藏条目、下载文件、封面缓存、阅读状态管理
- 内置阅读器:PDF、EPUB 与无 DRM 的 MOBI/KF7/KF8 阅读,支持进度、书签、选文和笔记
- 全局代理:一处配置,对所有数据源与封面请求生效
- 镜像故障转移:镜像失效自动切换,恢复后自动重新启用
- Z-Library 登录:凭据本地保存,会话过期自动重新登录
- 版本更新:手动或启动时检查 GitHub Releases,发现新版本后前往下载
支持格式
| 格式 | 书库导入与管理 | 内置阅读 | 说明 |
|---|---|---|---|
| ✓ | ✓ | 支持页面批注、书签、选文和笔记 | |
| EPUB | ✓ | ✓ | 支持目录、重排、书签、选文和笔记 |
| MOBI / AZW / AZW3 | ✓ | ✓ | 使用 Foliate 解析无 DRM 的 MOBI、KF7 与 KF8 内容 |
| TXT / DJVU / FB2 / CBZ / CBR | ✓ | — | 可入库、整理并调用系统关联应用打开 |
DRM 保护的 MOBI/AZW/AZW3、KFX、Topaz 以及损坏或不兼容的文件不会尝试绕过保护,可改用系统关联应用打开。
数据源
| 源 | ID | 说明 |
|---|---|---|
| arXiv 论文 | arxiv |
预印本,支持全文检索 |
| Gutenberg 公版书 | gutenberg |
公共领域图书 |
| Open Library 图书 | openlibrary |
图书元数据与借阅入口 |
| DOAJ 开放期刊 | doaj |
开放获取期刊论文 |
| PMC 生物医学 | pmc |
PubMed Central 全文 |
| bioRxiv 预印本 | biorxiv |
仅浏览最新列表,不支持关键词搜索 |
| Standard Ebooks | standardebooks |
精校排版的公版电子书 |
| Semantic Scholar | semanticscholar |
学术论文检索 |
| Memory of the World | motw |
公共图书馆藏书 |
| Library Genesis | libgen |
图书检索,下载需站点账号 |
| Z-Library | zlib |
需登录,可获取下载直链 |
| Sci-Hub(按 DOI) | scihub |
按 DOI 查询 |
数据源的可用性取决于站点自身状态。部分站点(如 Sci-Hub)启用了人机验证,程序会给出明确提示而非静默失败。
下载与运行
正式版本仅通过 GitHub Releases 发布打包后的 Windows x64 二进制,不通过 npm 分发。
- 下载最新版本的压缩包并完整解压。
- 双击目录中的
PeopleLib.exe。 - 保留整个程序目录,不要只移动 exe。用户数据默认保存在程序同级的
data/。
当前版本为 1.3.0。可在「设置」中手动检查更新,也可启用启动时自动检查。检测到新版本后,应用会打开对应的 GitHub Release 下载页,更新前请退出旧版本并覆盖程序文件,data/ 目录无需替换。
源码运行与打包
源码开发需要 Node.js 22.19+:
npm install
npm start
生成 Windows 免安装版到 dist/:
npm run portable
发布时将完整的 dist/PeopleLib-windows-x64/ 目录压缩,上传到 GitHub Release,并使用 v1.3.0 形式的版本标签。应用根据最新 Release 标签判断是否需要更新。
配置
代理
在应用内「设置」填写代理地址,例如 http://127.0.0.1:7897。留空表示直连。配置会持久化,重启后仍生效,并应用于所有数据源请求与封面加载。
网络受限环境下,多数数据源需要代理才能访问。
Z-Library 账号
「设置」中填入邮箱与密码即可登录。登录后可获取下载直链(免费账号有每日下载额度限制)。
凭据以 base64 混淆后保存在本地
zlib-auth.json,这只是防止肉眼直读,不是加密。请勿在不受信任的机器上使用。
数据位置
| 模式 | 路径 |
|---|---|
| 开发运行 | %APPDATA%/PeopleLib(Windows) |
| 打包运行 | 可执行文件同级的 data/ 目录 |
该目录包含:
library.json书库索引settings.json应用设置(代理等)zlib-auth.jsonZ-Library 凭据与会话covers/封面缓存
项目结构
main.js 主进程:窗口、IPC、代理与证书处理、文件下载
preload.js 渲染进程 API 桥接
src/
settings.js 设置持久化
library/store.js 书库存储
sources/
index.js 数据源注册表
http.js 统一 HTTP 层:超时、Cookie、代理
mirror.js 镜像故障转移
zlib-auth.js Z-Library 凭据存储
<source>.js 各数据源实现
ui/ 渲染进程界面
数据源接口
每个数据源模块导出以下结构:
module.exports = {
id: 'example',
name: '示例源',
supportsSearch: true,
async list(page) // 浏览:{ items, maxPage, page }
async search(keyword, page) // 搜索:{ items, maxPage, page }
async detail(postId) // 详情:{ title, authors, cover, tags, brief, links }
async download(postId) // 下载:{ files, links }
};
新增数据源只需实现该接口,并在 src/sources/index.js 中注册。
网络层说明
- 主进程使用 Electron 的
net.fetch(Chromium 网络栈),代理通过session.setProxy生效 - 纯 Node 环境回退到 undici
ProxyAgent(Electron 下不启用,该组合存在兼容问题) - 所有请求默认 15 秒超时,可按调用点覆盖
- 失效镜像进入 5 分钟冷却,之后自动重试,避免站点恢复后被永久跳过
- 应用启动时全局忽略 TLS 证书错误。这是为了兼容大量使用自签名或过期证书的镜像站点,代价是失去对中间人攻击的防护,请仅在受信任的网络环境中使用。
测试
npx electron test-search.js --proxy http://127.0.0.1:7897
对主要数据源依次执行搜索、详情、下载链路,输出每一步耗时与结果。
免责声明
本项目仅是对公开网络接口的客户端封装,不托管、不分发任何内容。部分数据源所提供作品的版权状态因司法辖区而异,使用者需自行确保其使用方式符合当地法律与各站点的服务条款。
许可
MIT
