v0.0.6
Changelog
MatchMedia v0.0.6
- Scan jobs carry numbered
files[]. - Immediate
group.kinds/group.extrasfolders stay on the parent show (season0) instead of minting a second title. - A cooldown or timeout on one provider no longer zeros hits from another; all-cooldown with zero candidates stays
status: error. - HTTP routes ServeMedia pins (
POST /v1/scan, untypedPOST /v1/ingest, pollGET /v1/jobs?session=) andskipDeferare unchanged. - The release tarball is still binary,
config/,public/, andLICENSE.
Scan files
- Every scan job now has
files[]: video files only (group.video_ext), never a directory, under that job’spath. - Longest-prefix ownership so a named sibling keeps its own tree (
Show/Spin Off/does not leak ontoShow/).
Numbers when the tree implies them:
- season-shaped folder → that number (
Season 01→1) - folder classified
kindorextras(YAML lists) → season0 - filename
sxxexx/episode N(same patterns grouping already used) → those numbers; filename wins over folder - remaining files in a known season, sorted by path → sequential unused episode numbers
- Loose files with no season folder and no episode pattern still appear as
{path}with season/episode omitted (MapFilesOntoCatalogalready skips those). - Catalog GET / select / worker backfill still call
MapFilesOntoCatalogas before.
Kinds and extras
- Immediate children classified
kindorextrasno longer emit inner scan jobs. - The parent is treated as a series; those videos land on it via
files[]with season0. - Named siblings stay a separate title with
parentset as today.
- Title clustering still uses
keepVideo; file attachment usescollectVideos. - Word lists stay in YAML (
group.kinds/group.extras); Go does not special-case folder names.
Cooldown
- A cooldown skip does not wipe candidates from other providers.
- If any wanted provider returned hits, the job is ranked (
matchedormanual) anderrorstays empty — even if a deferred provider is cooling or timed out.
- Zero candidates with
ok == 0and at least one provider error (including all-cooldown) staystatus: error. job.Erroriskey: messagejoined by"; "(YAML provider keys).- Empty 200s still increment
okand becomeunmatchedwhen there are no rows. - No new status. No worker auto-retry.
defer: trueproviders still run only if the fast pass is thin (fewer thanmatch.min_hitsor best Jaccard belowmatch.min_score).- A high-Jaccard
manualfast pass still skips defer.
Config
version:is0.0.6.- No new tunables.
- Leave
match.min_score/min_margin/match.workers, cooldown YAML, and providerdefer/min_interval_ms/provider_timeout_msas shipped in 0.0.5.
Upgrade notes
- HTTP contract is unchanged. Rematch is not required for ranking; Score /
ranker: setare the same as 0.0.5. - Scan jobs now populate
files[]. ServeMedia 0.0.3 may double-count if it still walksjob.pathas well asfiles[]. Preferfiles[]when present. Specials// OVA-stylegroup.kindsfolders and extras no longer mint a second job of the same show. Those videos are season0on the parent. Named spin-off folders are still separate titles.- Mixed “one provider hit, another cooling” is no longer
error. All-cooldown with zero candidates stays a rederrorbadge (POST /v1/retrystill rematcheserrorandunmatched). - CSV / JSON ingest is unchanged except for that cooldown ranking (ingest does not go through the grouper;
files[]stays empty unless the client sent season/episode columns ontojob.season/job.episode).