Files
bookshelf/README.md
T
kai 0801f7c7df feat: 重构图书墙交互及多源高阶信息抓取注入系统
1. UI 层:
- 抛弃网格卡片结构,改版为沉浸式的“图书墙”(1:1.43 原比例包含模式)。
- 新增悬浮深色遮罩系统(hover-details),解绑评分点击阻塞。
- 过滤系统默认进入“在读”状态页,彻底移除冗余无效的全选按钮。
2. 抓取与刮削层 (scrape.py):
- 抛弃对 ISBN 查询 Google Books 的严重强依赖。
- 重构抓取链路,首选 Goodreads 与特供的 Books.com.tw(博客来) 高精爬取港台原版资料。
- 建立 Amazon/Goodreads 图片去码净化正则,告别低分辨率与畸形图片。
- 修复 bs4 (.select_first) 解析选择器在旧版环境的兼容性异常。
3. Agent AI 数据管线设计 (bookshelf.py):
- 开放基于 --json 与 --cover 的强力直接注入功能。
- 升级 add 命令作为最优先级的录入手段,免去繁琐的 enrich 阶段,直接连带高清图和满载元数据强插。
- 建立入库反重名智能拦截 (title + author 交叉校验),形成完美的防呆与自动化壁垒。
2026-03-26 11:42:43 +08:00

75 lines
4.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 📚 Ecliptic Pathfinder — 个人图书阅读管理
轻量级命令行图书管理工具,零依赖,纯 Python 标准库。
## 快速开始
```bash
# 1. 常规添加书目
python bookshelf.py add "深度工作" --author "卡尔·纽波特" --format paper --status reading --tags "效率,自我管理"
# 2. (进阶) 使用 JSON 强力查重直插所有包含高阶属性的元数据:
python bookshelf.py add "乔布斯传" --json '{"title_en": "Steve Jobs", "author": "Walter Isaacson", "douban_score": 8.9}'
# 列出所有书
python bookshelf.py list
# 按状态/格式/标签筛选
python bookshelf.py list --status reading
python bookshelf.py list --format ebook
python bookshelf.py list --tag "哲学"
# 更新书目
python bookshelf.py update 1 --status read --rating 5 --finish-date 2026-03-25
# 删除书目
python bookshelf.py delete 1
# 生成展示网页
python bookshelf.py build
# 然后用浏览器打开 output/index.html
```
## 批量管理命令
```bash
# 1. 从豆瓣、Goodreads、Google Books 刮削验证并自动补充缺失元数据
python bookshelf.py enrich
# 单独补充某本书:python bookshelf.py enrich --id 12
# 2. 批量将图书封面下载并作为二进制 BLOB 存入 SQLite (解决静态展示防盗链问题)
python bookshelf.py covers
```
## 完整字段
| 参数 | 说明 | 示例 |
|------|------|------|
| `title` (必填) | 书名 | `"深度工作"` |
| `--author` / `--translator` | 作者 / 译者 | `"卡尔·纽波特"` / `"宋伟"` |
| `--publisher` / `--pub-date` | 出版社 / 出版年月 | `"后浪出版"` / `"2017-09"` |
| `--cover-url` | 封面 URL | `"https://..."` |
| `--format` | 格式:`paper` / `ebook` | `paper` |
| `--status` | `to-read` / `reading` / `read` | `reading` |
| `--rating` | 个人评分 1-5 | `5` |
| `--douban-score` / `--goodreads-score` | 豆瓣 / GR 评分 | `7.9` / `4.18` |
| `--douban-url` / `--goodreads-url` | 豆瓣 / GR 链接 | `https://book.douban...` |
| `--title-en` / `--author-en` | 外文书名 / 外文作者 | `Deep Work` / `Cal Newport` |
| `--tags` | 逗号分隔标签 | `"哲学,认知科学"` |
| `--notes` | 简评 | `"值得反复阅读"` |
| `--start-date` / `--finish-date` | 阅读起止日期 | `"2026-03-01"` / `"2026-03-20"` |
| `--group` (db 级别) | 主题领域分组(如"历史学" | |
| `--priority` (db 级别)| 阅读优先级 | `⭐⭐⭐` |
## 数据存储与静态构建
- 数据库:`books.db`SQLite,包含 `cover_blob`
- 静态构建:`python bookshelf.py build` (会自动抽取数据库中 `cover_blob``output/covers/` 以供显示,网页输出至 `output/index.html`)
## 🤖 AI Agent 交互提示
若你是被指派操作此书库的 AI Agent:
1. **一步到位入库(终极建档)**:若在对话中已经搜索获取到该书丰富的元数据(封面URL、精确书名、外文名、评分等),**切勿**分成“简略 add -> 再 enrich”两步走。请直接使用带自带查重保护的 `add` 结合 `--json` 一键全属性入库。
- 例:`python bookshelf.py add "史蒂夫·乔布斯传" --json '{"author": "Walter Isaacson", "title_en": "Steve Jobs", "douban_score": 8.9, "cover_url": "..."}'`
2. **多语言支持**:如果判断是一本翻译书,务必在爬取或手工录入时尝试保留由 `enrich` 抓取到的 `title_en` 以及 `goodreads_url`, 不要随意覆盖中文 `title` 字段。
3. **流程必做**:用户添加书目指令执行完 `add``enrich` 后,必须执行 `bookshelf.py covers` 以及 `bookshelf.py build`,以保持静态页面的同步。
4. **人工纠错**:如果你发现由于刮削不准确导致的封面错误或元数据异常,优先调用网页搜索、图片搜索拿到精准信息,后直接执行 `python bookshelf.py update <ID> --json '{"title_en": "...", "douban_score": 8.5}'` 快速订正。如果你找到了正确的高清原书封面图,请下载到本地后利用 `python bookshelf.py update <ID> --cover "./path/to/better_cover.jpg"` 强制更正库内封面,无须等待用户操作调整。