Daily series metadata refresh #121

Closed
opened 2026-08-23 15:55:56 +01:00 by naps62-yolo · 0 comments
Owner

Depends on: #117, #118, #119, #120

DESIGN.md §8 schedules a daily metadata refresh. Movies have one, gated on
movies.metadata_refreshed_at (crates/arr-daemon/src/grab.rs:1124). Series
have no equivalent column and no lane, and apply_auto_track is called from
exactly one place — crates/arr-api/src/series.rs:634, when the operator
creates a season by hand.

The consequence is that nothing about a series ever changes after it is added.
New seasons never appear, new episodes never appear, air dates never correct,
and upstream_ended is never written, so derive_series_status can never
return ended. auto_track is a flag that does nothing. This issue is the
tracking in TV tracking.

The lane, on the same shape and TTL gate as the movie one:

  • Reveal new seasons. apply_auto_track marks them tracked when the series has
    auto_track, season 0 excepted (#118).
  • Reveal new episodes into existing seasons, wanted per the tracked rule
    (#119).
  • Update air_date on existing episodes. TMDB moves dates constantly, and both
    §4.2's airing window and §6.2's do-not-search-before-it-exists gate read
    them, so a stale date is either a wasted query or a missed grab.
  • Update episode titles. TMDB ships Episode 7 placeholders and fills them in
    later; the title reaches §7.4 filenames and §9.2 episode search.
  • Set upstream_ended from TMDB's series status.
  • Backfill tvdb_id for series added before #120.

Episodes that vanish or renumber upstream are #122. Until it lands, this lane
leaves unknown episodes alone rather than deleting them.

Add series.metadata_refreshed_at, gate on it the way the movie lane does, and
stagger against the other ticks. Refresh must be idempotent: a second run over
unchanged TMDB data writes nothing and marks nothing wanted twice.

Depends on: #117, #118, #119, #120 DESIGN.md §8 schedules a daily metadata refresh. Movies have one, gated on `movies.metadata_refreshed_at` (`crates/arr-daemon/src/grab.rs:1124`). Series have no equivalent column and no lane, and `apply_auto_track` is called from exactly one place — `crates/arr-api/src/series.rs:634`, when the operator creates a season by hand. The consequence is that nothing about a series ever changes after it is added. New seasons never appear, new episodes never appear, air dates never correct, and `upstream_ended` is never written, so `derive_series_status` can never return `ended`. `auto_track` is a flag that does nothing. This issue is the tracking in TV tracking. The lane, on the same shape and TTL gate as the movie one: - Reveal new seasons. `apply_auto_track` marks them tracked when the series has `auto_track`, season 0 excepted (#118). - Reveal new episodes into existing seasons, wanted per the `tracked` rule (#119). - Update `air_date` on existing episodes. TMDB moves dates constantly, and both §4.2's `airing` window and §6.2's do-not-search-before-it-exists gate read them, so a stale date is either a wasted query or a missed grab. - Update episode titles. TMDB ships `Episode 7` placeholders and fills them in later; the title reaches §7.4 filenames and §9.2 episode search. - Set `upstream_ended` from TMDB's series status. - Backfill `tvdb_id` for series added before #120. Episodes that vanish or renumber upstream are #122. Until it lands, this lane leaves unknown episodes alone rather than deleting them. Add `series.metadata_refreshed_at`, gate on it the way the movie lane does, and stagger against the other ticks. Refresh must be idempotent: a second run over unchanged TMDB data writes nothing and marks nothing wanted twice.
naps62-yolo added the difficulty/hardarea/daemonphase/6-tvtype/feature labels 2026-08-23 15:55:56 +01:00
naps62-yolo added this to the TV tracking milestone 2026-08-23 15:58:35 +01:00
naps62-yolo added a new dependency 2026-08-23 16:36:55 +01:00
naps62-yolo added a new dependency 2026-08-23 16:36:55 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Reference: yolo/arr#121