Skip to content

Optionally pre-warm the crawl list from Sonarr/Radarr monitored series #6

Closed

Description

@ChrisonSimtian

Description

Re-scoped 2026-07-28 by DR-011.
This was "pull the monitored series list from Sonarr/Radarr — that is the crawl work-list". It is now an
optional pre-warm, because the work-list framing was wrong.

Checking how the comparable projects solve this: neither MediathekArr nor RundfunkArr reads Sonarr's
monitored series via the Sonarr API.
MediathekArr is a live search proxy over MediathekViewWeb;
RundfunkArr uses curated shows.json / rulesets.json. Both are pure Newznab providers, because the
Newznab contract is pull-by-query: Sonarr already knows what it monitors and asks for exactly what it
wants via t=tvsearch&q=…&tvdbid=…&season=&ep=.

Two consequences:

  • Reach-back is not required for the integration to work.
  • Reach-back cannot satisfy search on its own — an interactive search for a show that is unmonitored,
    or monitored but not yet crawled, returns nothing. Query-driven resolution is needed regardless (new
    issue), which makes this an optimisation by definition.

What it is still genuinely good for: pre-warming the standing crawl list so the RSS feed has recent
episodes of the shows the operator actually cares about, without hand-curating a list the way RundfunkArr
does. That is a real UX win over the comparables — just not a prerequisite.

Scope

  • Extend IArrClient (added in Sonarr/Radarr instance config UI (Blazor) #4) with a monitored-series fetch: Sonarr GET /api/v3/series
    filtered to monitored: true; Radarr GET /api/v3/movie equivalently.
  • Merge the result into the standing crawl list rather than replacing it — a configured
    Crawl:Targets entry must not disappear because an *arr instance went offline mid-poll.
  • Map an *arr series to a broadcaster show. This is the hard part, not the HTTP call: TVDB name
    vs. Mediathek topic name, german titles, aliases. RundfunkArr solves it with per-show curated
    rulesets, MediathekArr with a filter/matching system. Expect the same investment here.
  • Degrade quietly: an unreachable or unauthorised instance must log and carry on, never fail a crawl
    cycle or empty the list.
  • Nothing may depend on an instance being configured (DR-011).

Usage Example

{
  "Crawl": {
    "PreWarmFromArrInstances": true,   // opt-in; default false
    "Targets": [                        // still honoured, and never overwritten
      { "ProviderKey": "ard", "ShowQuery": "Extra 3" }
    ]
  }
}

Alternative

Curate the crawl list by hand — which is exactly what RundfunkArr does and what Crawl:Targets already
supports. Perfectly workable; this issue only removes the manual step.

Notes

Activity

  1. added this to the Foundation milestone on Jul 24, 2026
  2. changed the title [-]Pull monitored series list from Sonarr/Radarr API[/-] [+]Optionally pre-warm the crawl list from Sonarr/Radarr monitored series[/+] on Jul 27, 2026
  3. added a commit that references this issue on Aug 17, 2026
    e1450b0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions