Bnot : split large copies into pieces.
This commit is contained in:
1 parent
834ffe32f2
commit
1959c5d3bb
10 files changed
+333
-52
No files matched your search
@@ -0,0 +1,27 @@
|
||||
"""Locate tablet documents, including the parts of a large checked copy."""
|
||||
from pathlib import Path
|
||||
|
||||
from copienator.json_io import read_json
|
||||
|
||||
MAX_HEIGHT_PX = 32000
|
||||
|
||||
|
||||
def copy_documents(directory: Path) -> list[Path]:
|
||||
try:
|
||||
metadata = read_json(directory / "bnote.json", default={})
|
||||
except (OSError, ValueError):
|
||||
# Ordinary documents need no manifest. Let the reader report bad metadata.
|
||||
return [directory]
|
||||
parts = metadata.get("parts", []) if isinstance(metadata, dict) else []
|
||||
return [directory / name for name in parts] if parts else [directory]
|
||||
|
||||
|
||||
def tablet_documents(root: Path) -> list[tuple[str, Path]]:
|
||||
documents = []
|
||||
for directory in sorted(root.iterdir()):
|
||||
if not directory.is_dir():
|
||||
continue
|
||||
for part in copy_documents(directory):
|
||||
name = directory.name if part == directory else f"{directory.name} {part.name}"
|
||||
documents.append((name, part))
|
||||
return documents
|
||||
Reference in new issue
Block a user