generated from coulomb/repo-seed
IB-WP-0016-T01: spine-aware EPUB3 intake
Parse META-INF/container.xml and the OPF package document, then iterate documents in spine reading order instead of archive-name sort. Classify each spine item (body, cover, nav, toc, header, footer, notes, license, auxiliary) and exclude non-body sections by default; include_non_body=True opts them back in for inspection. Capture OPF book metadata (title, creator, language, subjects, rights, identifier, source_url, modified) onto every chunk and propagate it through source artifact provenance. Preserve the legacy zip-without-OPF fallback for malformed EPUBs. Real Lefevre EPUB now yields 148 body chunks in spine order (was 155 mixed, archive-sorted) with cover=1, header=1, footer=4 detected and dropped. 78 tests pass. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -258,6 +258,9 @@ def _register_source_chunks(root: Path, chunks: list[SourceChunk]) -> None:
|
||||
"chunk_count": chunk.chunk_count,
|
||||
"imported_at": chunk.imported_at,
|
||||
"extractor_version": chunk.extractor_version,
|
||||
"section_role": chunk.section_role,
|
||||
"spine_index": chunk.spine_index,
|
||||
"book_metadata": dict(chunk.book_metadata),
|
||||
},
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user