69 lines
3.3 KiB
Markdown
69 lines
3.3 KiB
Markdown
# Changelog
|
|
|
|
Document all notable changes to the project, grouped by version and release date.
|
|
|
|
## Format
|
|
|
|
Each version entry uses these sections (include only those that apply):
|
|
|
|
- **Added** — new features
|
|
- **Changed** — changes to existing functionality
|
|
- **Fixed** — bug fixes
|
|
- **Removed** — removed features
|
|
- **Dependencies** — added, updated, or removed dependencies
|
|
|
|
## Rules
|
|
|
|
- Follow semantic versioning: `MAJOR.MINOR.PATCH`
|
|
- Newest version goes at the top
|
|
- Always update this file before bumping the version in `pyproject.toml`
|
|
- Document changes as they are made, not all at once at release time
|
|
|
|
## Unreleased
|
|
|
|
### Added
|
|
- Fork of the former **Tagger** project as **Curator**, a movie-library manager.
|
|
- **Pool** concept (single source of truth) with `Filmy` / `Seriály` folders and
|
|
a configurable **Filmotéka** output folder, stored in the global config.
|
|
- "Import movie" flow: pick a video, enter Title + ČSFD link, the file is copied
|
|
into `pool/Filmy` as `Title.ext` (non-destructive) and indexed.
|
|
- `File` now stores `title` and `csfd_link`.
|
|
- New **PySide6** GUI reframed around the Filmotéka workflow (pool setup, import,
|
|
tag filter sidebar, movie table, one-click Filmotéka generation), replacing the
|
|
tkinter GUI as the entry point.
|
|
- Seriály **copy-as-is mirror**: `pool/Seriály` is cloned 1:1 into the Filmotéka
|
|
output as hardlinks (`HardlinkManager.mirror_as_is`), generated alongside the
|
|
movie tree.
|
|
- **Unified pool metadata index** (`pool_index.py`): the whole pool's metadata
|
|
lives in a single `<pool>/.Curator.!index` JSON keyed by pool-relative path.
|
|
`File` reads/writes the index when one is injected and otherwise keeps using
|
|
per-file `.!tag` sidecars; `FileManager` uses the index for the pool.
|
|
- **Configurable copy-as-is folders**: `copyasis_folders` in the global config
|
|
(editable from the GUI) lists pool subfolders mirrored 1:1 during generation;
|
|
`Seriály` is the default. Generalizes the previously hardcoded Seriály mirror.
|
|
- Project `README.md` (overview, concepts, workflow, run/build instructions).
|
|
- **ČSFD scraping** (`csfd.py`, ported from the Tagger devel branch): fetches
|
|
movie data from a ČSFD link (JSON-LD + HTML parsing). `File.apply_csfd_tags`
|
|
assigns Žánr / Rok / Země tags and caches the fetched data in the metadata.
|
|
The GUI auto-fetches on import when a link is given and offers "Načíst tagy
|
|
z ČSFD" for selected movies.
|
|
- App startup injects `truststore` so HTTPS uses the OS certificate store —
|
|
ČSFD fetching works behind corporate SSL inspection (where certifi's bundle
|
|
lacks the proxy root CA).
|
|
|
|
### Fixed
|
|
- `media_utils.add_video_resolution_tag` referenced `subprocess` without importing it.
|
|
- ČSFD parsing updated for the current site HTML: year is read from JSON-LD
|
|
`dateCreated`, and the origin line (now bullet-separated, no commas) is
|
|
tokenized so country / year / duration are extracted correctly.
|
|
|
|
### Changed
|
|
- All references to "Tagger" renamed to "Curator" (code, spec, config filenames
|
|
`.Curator.!gtag` / `.Curator.!ftag`, tests).
|
|
- `requires-python` narrowed to `>=3.14,<3.15` (PySide6 compatibility).
|
|
|
|
### Dependencies
|
|
- Added `pyside6` (GUI), `requests` + `beautifulsoup4` (ČSFD scraping),
|
|
`truststore` (OS cert store for HTTPS). Declared `python-dotenv`, `pillow`,
|
|
`loguru` (already imported by the inherited code).
|