Commit Graph
10 Commits
Author SHA1 Message Date
LeoVasanko 511cbd61b9 Add structured preview exception hierarchy
PreviewError subclasses carry a concise short label for UI, a full log
message, backend name, and metadata fields (OnlyOffice code/status/url,
backend stage, timeout seconds, cancel reason). Exceptions travel across
the worker pool wire pickled in the binary response payload (ok=False)
and are re-raised with their original type on the caller side. Combined
pipelines such as pdf+pyvips tag the failing stage.
v0.2.0
2026-08-13 03:45:42 +00:00
LeoVasanko 4acb59941b Always configure emoji loggers on CLI entry. 2026-08-13 01:22:00 +00:00
LeoVasanko 11df5cf580 test: add low-level preview success tests for all formats
Add fixtures and tests covering image EXIF orientations, HDR AVIF, SDR video, 90/270 rotated video, HDR video with and without rotation, PDF, dispatch, and OnlyOffice (skipped unless configured).

Regenerate rotated/HDR video fixtures and sample.pdf with tests/files/generate_fixtures.py.
2026-08-13 00:20:13 +00:00
LeoVasanko c92ec3c487 fix(video): make rotation and short/HDR clips convert reliably
- Accept a keyframe with pts as well as dts, so all-intra or short HDR clips are not rejected as No frames found.

- Round resized video dimensions to multiples of 2 (width) and 4 (height) so planar 4:2:0 YUV rotation always works.

- Use abs(frame.rotation) when swapping display dimensions, so both +90 and -90 rotation matrices report the correct orientation.
2026-08-13 00:20:07 +00:00
LeoVasanko d907fb6bee Project metadata v0.1.0 2026-08-12 00:01:14 +00:00
LeoVasanko 023d224179 Updated docs 2026-08-11 23:55:20 +00:00
LeoVasanko 550cb841ec Prune ruff ignores 2026-08-11 23:46:57 +00:00
LeoVasanko e0c98bfd9e VCS versioning. Made dev a group, not extra. 2026-08-11 23:37:55 +00:00
LeoVasanko 49cca4b0c1 Make CLI work without worker extras; add oosetup subcommand
- __main__ is now a self-contained docopt CLI going straight to
  backends.dispatch (no blake3/tracerite needed); 'oosetup' builds and
  starts the bundled OnlyOffice container and prints
  ONLYOFFICE_JWT_SECRET=<token> as its only stdout line
- dispatch: log a plain one-line error for missing-extra ImportErrors
  instead of a traceback
- worker/pool: friendly install hints when the 'worker' extra is missing
- office: fix import on Python 3.11-3.13 without the 'office' extra
  (lazy annotations); setup_docker returns the JWT secret used and
  redacts it from the logged docker command
- add 'mediapreview' console script and docopt-ng dependency
2026-08-11 23:34:27 +00:00
LeoVasanko 1c73320f1d Standalone mediapreview project 2026-08-11 22:50:47 +00:00