Adopt "Title (YYYY)" pool naming and clean Filmotéka link names

This commit is contained in:
2026-07-27 20:51:31 +02:00
parent 4c4180f28c
commit 1c78ca9013
13 changed files with 784 additions and 145 deletions
+35
View File
@@ -21,6 +21,41 @@ Each version entry uses these sections (include only those that apply):
## Unreleased
## 1.11.0 — 2026-07-27
### Added
- **Pool naming convention `Title (YYYY).ext`** (`src/core/naming.py`). Pooled
movies now carry a four-digit year in parentheses, so two same-named films
coexist and the filename is self-describing.
- **Import requires a year**: the import dialog has a per-row **Rok** field
(pre-filled from the source filename), and *"Najít ČSFD odkazy"* now also
fills the year from the top ČSFD hit — a **suggested** year is tinted **blue**
(verify it), a name **colliding** with the pool stays **red**. The import is
blocked until every row has a four-digit year, and the file lands in the pool
as `Title (rok).ext`. Same title + different year no longer collide.
- **Rename to the convention**: *Filmy → "Přejmenovat dle ČSFD (rok)…"*
(`FileManager.rename_all_to_canonical`) renames selected movies (or the whole
pool) to `Title (rok).ext` using the year from their ČSFD metadata, with a
cancelable progress dialog; files with no known year are skipped and name
collisions reported. `File.title` keeps the clean title (without the year);
`File.name_context` recovers the year from a canonical filename when no
ČSFD/tag year exists.
### Changed
- **Filmotéka hardlinks are named by the clean title (no year).** In the tag
tree a movie now links as `Title.ext` instead of the pooled `Title (YYYY).ext`.
When two *different* films would collide on that name in the **same folder**,
the colliding ones keep the year (`Title (YYYY).ext`) to tell them apart; a
residual clash (same title *and* year) gets a stable numeric suffix. Copy-as-is
mirrors (Seriály) are untouched — they stay 1:1. A per-category
`filename_template` (Tag schéma dialog) still overrides the default inside its
folders. Link creation and obsolete-detection now share one collision-resolved
plan (`HardlinkManager._plan_links`), so they can't disagree on a name — the
first generation after upgrading re-lays the affected links once, then it is
stable.
- `File.name_context`'s `year` field is now always a string (was an int when it
came straight from the ČSFD cache) — uniform for filename templates.
## 1.10.0 — 2026-07-07
### Added