Skip to main content

Crate parse_book_source

Crate parse_book_source 

Source
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)。