Expand description
parse-book-source:AI 原生的结构化书源引擎。
书源是一份显式结构化 JSON(无紧凑字符串 DSL),由 Engine 驱动:
搜索 / 浏览 / 书详情 / 目录(含分卷)/ 正文,并内置样例校验回路。
取页经 Fetcher 端口抽象,默认 ReqwestFetcher。
分层(见 OpenSpec change ai-friendly-book-source 的 design):
model— 纯领域类型。source— v2 配置(serde 镜像book-source.schema.json),其中Rule既是配置、 也是供求值器遍历的语法树。eval— 规则解释器(Interpreter + Composite)。backend— 抽取后端(Strategy:css/json/regex/raw)。fetch— 取页端口(Ports & Adapters)。engine— 用例(search/explore/book_info/toc/content)+ 有界分页。verify— 样例校验回路。error— 分层错误。
Re-exports§
pub use engine::Engine;pub use error::BookSourceError;pub use error::ConfigError;pub use error::EvalError;pub use error::FetchError;pub use error::Result;pub use fetch::FetchRequest;pub use fetch::FetchResponse;pub use fetch::Fetcher;pub use fetch::ReqwestFetcher;pub use fetch::is_challenge;pub use model::BookInfo;pub use model::BookListItem;pub use model::Chapter;pub use model::Toc;pub use model::Volume;pub use source::BookSource;pub use source::Category;pub use source::FetchMode;pub use source::UrlOrRule;pub use verify::Check;pub use verify::CheckStatus;pub use verify::DiagnoseReport;pub use verify::VerifyReport;pub use verify::diagnose;pub use verify::verify_sample;
Modules§
- backend
- 抽取后端(Strategy)。按
Via静态分派到 css(dom_query)/ json(jsonpath)/ regex / raw 实现;新增 xpath 只需加一个分支(开闭原则,见 design D8)。 - cookie
- cookie 库:按**注册域(eTLD+1)**归并,session / persistent 分离。
- engine
- 用例引擎(Template Method + Paginator)。五个操作共享「取页 → 选列表/值 → 映射 →
可选有界分页」骨架;
Engine廉价Clone(内部Arc),操作不跨 await 持锁(D10)。 - error
- 分层错误(v2)。fetch/verify 各层错误在对应阶段实现时并入。
- eval
- 规则解释器(Interpreter + Composite)。递归遍历
Rule求值;无字符串 DSL 解析。 - fetch
- 取页端口(Ports & Adapters)。
trait Fetcher抽象「拿一个 URL 的解码后正文」, 默认实现ReqwestFetcher;反爬后端(wreq / FlareSolverr)可作为另一个Fetcher适配器接入而不动引擎(见 design D8/D10)。 - model
- 领域类型(纯数据,无 IO、无规则逻辑)。
- source
- v2 书源配置类型(纯 serde,镜像
book-source.schema.json)。 - verify
- 样例校验回路:对
samples跑完整流程并断言可执行不变量,返回结构化报告。 同一套断言用于生成期校验与运行期监控(见 design D5)。