Skip to content

v0.0.6

Choose a tag to compare

@AlyShmahell AlyShmahell released this 15 Sep 23:29
· 5 commits to main since this release

Changelog

MatchMedia v0.0.6

  • Scan jobs carry numbered files[].
  • Immediate group.kinds / group.extras folders stay on the parent show (season 0) 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, untyped POST /v1/ingest, poll GET /v1/jobs?session=) and skipDefer are unchanged.
  • The release tarball is still binary, config/, public/, and LICENSE.

Scan files

  • Every scan job now has files[]: video files only (group.video_ext), never a directory, under that job’s path.
  • Longest-prefix ownership so a named sibling keeps its own tree (Show/Spin Off/ does not leak onto Show/).

Numbers when the tree implies them:

  • season-shaped folder → that number (Season 01 → 1)
  • folder classified kind or extras (YAML lists) → season 0
  • 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 (MapFilesOntoCatalog already skips those).
  • Catalog GET / select / worker backfill still call MapFilesOntoCatalog as before.

Kinds and extras

  • Immediate children classified kind or extras no longer emit inner scan jobs.
  • The parent is treated as a series; those videos land on it via files[] with season 0.
  • Named siblings stay a separate title with parent set as today.

  • Title clustering still uses keepVideo; file attachment uses collectVideos.
  • 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 (matched or manual) and error stays empty — even if a deferred provider is cooling or timed out.

  • Zero candidates with ok == 0 and at least one provider error (including all-cooldown) stay status: error.
  • job.Error is key: message joined by "; " (YAML provider keys).
  • Empty 200s still increment ok and become unmatched when there are no rows.
  • No new status. No worker auto-retry.

  • defer: true providers still run only if the fast pass is thin (fewer than match.min_hits or best Jaccard below match.min_score).
  • A high-Jaccard manual fast pass still skips defer.

Config

  • version: is 0.0.6.
  • No new tunables.
  • Leave match.min_score / min_margin / match.workers, cooldown YAML, and provider defer / min_interval_ms / provider_timeout_ms as shipped in 0.0.5.

Upgrade notes

  • HTTP contract is unchanged. Rematch is not required for ranking; Score / ranker: set are the same as 0.0.5.
  • Scan jobs now populate files[]. ServeMedia 0.0.3 may double-count if it still walks job.path as well as files[]. Prefer files[] when present.
  • Specials/ / OVA-style group.kinds folders and extras no longer mint a second job of the same show. Those videos are season 0 on 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 red error badge (POST /v1/retry still rematches error and unmatched).
  • 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 onto job.season / job.episode).