Repository navigation
Optionally pre-warm the crawl list from Sonarr/Radarr monitored series #6
Description
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: SonarrGET /api/v3/series
filtered tomonitored: true; RadarrGET /api/v3/movieequivalently. - Merge the result into the standing crawl list rather than replacing it — a configured
Crawl:Targetsentry must not disappear because an*arrinstance went offline mid-poll. - Map an
*arrseries 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
- Depends on Sonarr/Radarr instance config UI (Blazor) #4 (instance model +
IArrClient) — merged/in review. - No longer blocks Merged RSS feed for monitored shows #12. Per DR-011 the RSS feed serves the standing crawl list, so Merged RSS feed for monitored shows #12 can proceed
without this. - Related: the new query-driven-search issue, which is the part that actually makes
t=tvsearchwork for
arbitrary shows.
Activity
docs: rewrite README and correct CLAUDE.md against the real codebase
[-]Pull monitored series list from Sonarr/Radarr API[/-][+]Optionally pre-warm the crawl list from Sonarr/Radarr monitored series[/+]feat(arr): ArrInstance model, persistence, and the outbound client po…
docs(arch): DR-011 — retract DR-010's reach-back clause; search is qu…
Let Sonarr and Radarr fill the standing crawl list (#114)