lofyerandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> efad306312 docs: README 增加多源检索、阅读批注与 AI 助手截图
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-03 12:19:09 +08:00

PeopleLib

开放获取文献与图书的桌面客户端(Electron)。在一个界面里检索多个公开文献源,查看详情,下载文件并归入本地书库。

界面预览

书库:

PeopleLib 书库界面

多源检索,可选单个数据源或聚合全部:

PeopleLib 多源检索

内置阅读器与 PDF 批注:

PeopleLib 阅读与批注

AI 助手,可把选中文本、当前页、全文或框选区域作为上下文提问:

PeopleLib AI 助手

功能

  • 多源检索:12 个数据源统一的搜索、详情、下载流程
  • 本地书库:收藏条目、下载文件、封面缓存、阅读状态管理
  • 内置阅读器PDF、EPUB 与无 DRM 的 MOBI/KF7/KF8 阅读,支持进度、书签、选文和笔记
  • 全局代理:一处配置,对所有数据源与封面请求生效
  • 镜像故障转移:镜像失效自动切换,恢复后自动重新启用
  • Z-Library 登录:凭据本地保存,会话过期自动重新登录
  • 版本更新:手动或启动时检查 GitHub Releases,发现新版本后前往下载

支持格式

格式 书库导入与管理 内置阅读 说明
PDF 支持页面批注、书签、选文和笔记
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 分发。

  1. 下载最新版本的压缩包并完整解压。
  2. 双击目录中的 PeopleLib.exe
  3. 保留整个程序目录,不要只移动 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%/PeopleLibWindows
打包运行 可执行文件同级的 data/ 目录

该目录包含:

  • library.json 书库索引
  • settings.json 应用设置(代理等)
  • zlib-auth.json Z-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

S
Description
No description provided
Readme
17 MiB
Languages
JavaScript 91.9%
CSS 5.4%
HTML 2.6%
Python 0.1%