From 691fb39cbba0a2254b838955157cd55b065a0a26 Mon Sep 17 00:00:00 2001 From: Breadway Date: Fri, 24 Jul 2026 23:20:43 +0800 Subject: [PATCH] Add grab_enabled kill switch for the passive RSS grab loop --- breadarr-shared/src/config.rs | 11 +++++++++++ breadarrd/src/main.rs | 3 +++ 2 files changed, 14 insertions(+) diff --git a/breadarr-shared/src/config.rs b/breadarr-shared/src/config.rs index 1a9928b..a82cf4d 100644 --- a/breadarr-shared/src/config.rs +++ b/breadarr-shared/src/config.rs @@ -55,6 +55,12 @@ pub struct SourcesConfig { pub nyaa_rss_url: String, #[serde(default = "default_grab_poll_interval_secs")] pub grab_poll_interval_secs: u64, + /// Human kill switch for the passive RSS-feed grab loop (nyaa, anime + /// only) — same reasoning as `search_enabled`/`upgrade_enabled`, kept + /// as its own flag since this loop watches a different source and can + /// need to be paused independently of the search-driven ones. + #[serde(default = "default_grab_enabled")] + pub grab_enabled: bool, #[serde(default = "default_import_poll_interval_secs")] pub import_poll_interval_secs: u64, #[serde(default = "default_search_poll_interval_secs")] @@ -108,6 +114,7 @@ impl Default for SourcesConfig { torrent_1337x_mirrors: default_1337x_mirrors(), nyaa_rss_url: default_nyaa_rss_url(), grab_poll_interval_secs: default_grab_poll_interval_secs(), + grab_enabled: default_grab_enabled(), import_poll_interval_secs: default_import_poll_interval_secs(), search_poll_interval_secs: default_search_poll_interval_secs(), search_budget_per_cycle: default_search_budget_per_cycle(), @@ -161,6 +168,10 @@ fn default_grab_poll_interval_secs() -> u64 { 300 } +fn default_grab_enabled() -> bool { + true +} + fn default_import_poll_interval_secs() -> u64 { 60 } diff --git a/breadarrd/src/main.rs b/breadarrd/src/main.rs index b3014dd..b730a91 100644 --- a/breadarrd/src/main.rs +++ b/breadarrd/src/main.rs @@ -378,6 +378,9 @@ async fn background_loop( loop { tokio::select! { _ = grab_ticker.tick() => { + if !config.sources.grab_enabled { + continue; + } let result = { let conn = conn.lock().await; scheduler::run_grab_cycle(&conn, &nyaa_source, 1, &mut title_matcher, &qbit, &config.qbit.category).await