Files
Huntarr.io/docs/settings/scheduling.html
2026-02-23 05:38:26 -05:00

382 lines
20 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Scheduling - Huntarr Docs</title>
<link rel="icon" type="image/png" href="../images/huntarr-logo.png">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">
<link rel="stylesheet" href="../css/main.css">
</head>
<body>
<!-- Mobile Topbar -->
<div class="docs-mobile-topbar">
<button class="mob-hamburger" aria-label="Open navigation"><span></span><span></span><span></span></button>
<img src="../images/huntarr-logo.png" alt="Huntarr" class="mob-logo">
<span class="mob-title">Documentation</span>
</div>
<!-- Sidebar Backdrop (mobile) -->
<div class="docs-sidebar-backdrop"></div>
<div class="docs-layout">
<!-- ===== SIDEBAR ===== -->
<nav class="docs-sidebar" aria-label="Documentation navigation">
<a href="../index.html" class="sidebar-brand">
<img src="../images/huntarr-logo.png" alt="Huntarr">
<span>Huntarr</span>
</a>
<div class="sidebar-scroll">
<!-- Getting Started -->
<div class="nav-group">
<div class="nav-group-title">Getting Started</div>
<div class="nav-group-items">
<a href="../index.html"><i class="fas fa-home"></i> Welcome</a>
<a href="../getting-started/installation.html"><i class="fas fa-download"></i> Installation</a>
<a href="../getting-started/setup-wizard.html"><i class="fas fa-magic"></i> Setup Wizard</a>
<a href="../getting-started/first-steps.html"><i class="fas fa-rocket"></i> First Steps</a>
</div>
</div>
<!-- Apps -->
<div class="nav-group">
<div class="nav-group-title">Apps</div>
<div class="nav-group-items">
<a href="../apps/index.html"><i class="fas fa-plug"></i> 3rd Party Apps</a>
</div>
</div>
<!-- Movie Hunt -->
<div class="nav-group">
<div class="nav-group-title">Media Hunt</div>
<div class="nav-group-items">
<a href="../movie-hunt/index.html"><i class="fas fa-clapperboard"></i> Overview <span
class="nav-badge nav-badge-beta">Beta</span></a>
<a href="../movie-hunt/media-collection.html"><i class="fas fa-photo-film"></i> Media
Collection</a>
<a href="../movie-hunt/indexers-clients.html"><i class="fas fa-server"></i> Indexers &amp;
Clients</a>
<a href="../movie-hunt/profiles.html"><i class="fas fa-sliders"></i> Profiles</a>
</div>
</div>
<!-- NZB Hunt -->
<div class="nav-group">
<div class="nav-group-title">NZB Hunt</div>
<div class="nav-group-items">
<a href="../nzb-hunt/index.html"><i class="fas fa-newspaper"></i> Overview <span
class="nav-badge nav-badge-beta">Beta</span></a>
</div>
</div>
<!-- Requestarr -->
<div class="nav-group">
<div class="nav-group-title">Requests</div>
<div class="nav-group-items">
<a href="../requestarr/index.html"><i class="fas fa-hand-paper"></i> Requests</a>
</div>
</div>
<!-- Settings -->
<div class="nav-group">
<div class="nav-group-title">Settings</div>
<div class="nav-group-items">
<a href="index.html"><i class="fas fa-cog"></i> Main Settings</a>
<a href="scheduling.html" class="active"><i class="fas fa-clock"></i> Scheduling</a>
<a href="notifications.html"><i class="fas fa-bell"></i> Notifications</a>
<a href="backup-restore.html"><i class="fas fa-database"></i> Backup &amp; Restore</a>
<a href="log-settings.html"><i class="fas fa-file-alt"></i> Log Settings</a>
<a href="user-account.html"><i class="fas fa-user-shield"></i> User Account</a>
</div>
</div>
<!-- System -->
<div class="nav-group">
<div class="nav-group-title">System</div>
<div class="nav-group-items">
<a href="../system/hunt-manager.html"><i class="fas fa-tasks"></i> Hunt Manager</a>
<a href="../system/logs.html"><i class="fas fa-scroll"></i> Logs</a>
<a href="../system/api.html"><i class="fas fa-code"></i> API Reference</a>
</div>
</div>
<!-- Help -->
<div class="nav-group">
<div class="nav-group-title">Help</div>
<div class="nav-group-items">
<a href="../help/faq.html"><i class="fas fa-question-circle"></i> FAQ</a>
<a href="../help/community.html"><i class="fas fa-users"></i> Community</a>
<a href="https://plexguide.github.io/Huntarr.io/donate.html"><i class="fas fa-heart"></i>
Donate</a>
</div>
</div>
</div><!-- /sidebar-scroll -->
<div class="sidebar-footer">
<a href="https://discord.com/invite/PGJJjR5Cww" target="_blank" class="sf-discord" title="Discord"><i
class="fab fa-discord"></i></a>
<a href="https://www.reddit.com/r/huntarr/" target="_blank" class="sf-reddit" title="Reddit"><i
class="fab fa-reddit-alien"></i></a>
<a href="https://github.com/plexguide/Huntarr.io" target="_blank" class="sf-github" title="GitHub"><i
class="fab fa-github"></i></a>
<a href="https://plexguide.github.io/Huntarr.io/donate.html" class="sf-heart" title="Donate"><i
class="fas fa-heart"></i></a>
</div>
</nav>
<!-- ===== MAIN ===== -->
<main class="docs-main">
<div class="docs-content">
<h1>Scheduling</h1>
<p class="page-subtitle">Control when and how often Huntarr hunts for missing and below-cutoff media
across all your instances.</p>
<h2>Overview</h2>
<p>Scheduling is the heart of Huntarr. Each supported app type (Sonarr, Radarr, Lidarr, Readarr,
Whisparr, and the built-in Movie Hunt) has its own independent schedule. You can configure:</p>
<ul>
<li><strong>How often</strong> each app hunts (interval in minutes)</li>
<li><strong>How many items</strong> it searches per cycle (missing cap and upgrade cap)</li>
<li><strong>Per-instance or global</strong> schedules — run one schedule for all instances of an
app, or fine-tune each instance separately</li>
</ul>
<h2>How a Hunt Cycle Works</h2>
<p>Understanding what happens during each cycle helps you set good values:</p>
<ol>
<li><strong>Timer fires</strong> — When the configured interval elapses, Huntarr begins a hunt cycle
for that app type</li>
<li><strong>Library scan</strong> — Huntarr queries the app's API for all monitored items and
identifies which are missing or below your quality cutoff</li>
<li><strong>Queue check</strong> — Before triggering searches, Huntarr checks the app's download
queue. If the queue already has active downloads, it may skip or reduce the batch to avoid
overloading your download client</li>
<li><strong>Batch search</strong> — Huntarr triggers searches for up to the configured cap of items.
It picks items randomly or by priority (depending on app type) to spread searches across your
library over time</li>
<li><strong>Wait</strong> — The scheduler resets and waits for the next interval</li>
</ol>
<div class="alert alert-info">
<strong><i class="fas fa-info-circle"></i> Missing vs. Upgrade hunts</strong>
<p><strong>Missing hunt</strong> searches for content that isn't downloaded at all (e.g., a movie
you added but never found). <strong>Upgrade hunt</strong> searches for content you already have
but at a lower quality than your cutoff (e.g., you have 720p but your profile wants 1080p). Both
run in the same cycle but use separate caps.</p>
</div>
<h2>Creating a Schedule</h2>
<p>Navigate to <strong>Settings → Scheduling</strong> from the sidebar:</p>
<ol>
<li>Select an <strong>App Type</strong> from the dropdown (Sonarr, Radarr, Lidarr, Readarr,
Whisparr, or Movie Hunt)</li>
<li>Choose a <strong>specific instance</strong> or select <strong>Global</strong> to apply the
schedule to all instances of that type</li>
<li>Set the <strong>Interval</strong> — how many minutes between each hunt cycle</li>
<li>Set the <strong>Missing Cap</strong> — maximum missing items to search per cycle</li>
<li>Set the <strong>Upgrade Cap</strong> — maximum items to search for quality upgrades per cycle
</li>
<li>Toggle <strong>Enabled</strong> on or off</li>
<li>Click <strong>Save</strong></li>
</ol>
<h2>Schedule Settings Reference</h2>
<table>
<thead>
<tr>
<th>Setting</th>
<th>Description</th>
<th>Guidance</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>App Type</strong></td>
<td>Which *arr app this schedule controls</td>
<td>One schedule per app type (or per instance)</td>
</tr>
<tr>
<td><strong>Instance</strong></td>
<td>Specific instance or "Global" for all</td>
<td>Use per-instance schedules to stagger load across 1080p and 4K instances</td>
</tr>
<tr>
<td><strong>Interval</strong></td>
<td>Minutes between hunt cycles</td>
<td>1560 min recommended. Under 15 min risks indexer rate limits</td>
</tr>
<tr>
<td><strong>Missing Cap</strong></td>
<td>Max missing items to search per cycle</td>
<td>Start with 35. Higher values send more API calls to indexers per cycle</td>
</tr>
<tr>
<td><strong>Upgrade Cap</strong></td>
<td>Max items to search for quality upgrades per cycle</td>
<td>Start with 23. Upgrade searches are less urgent than missing-content searches</td>
</tr>
<tr>
<td><strong>Enabled</strong></td>
<td>Toggle this schedule on/off</td>
<td>Disable temporarily without deleting the schedule</td>
</tr>
</tbody>
</table>
<h2>Recommended Starting Settings</h2>
<p>These defaults work well for most users. Adjust after observing your system for 2448 hours:</p>
<table>
<thead>
<tr>
<th>App</th>
<th>Interval</th>
<th>Missing Cap</th>
<th>Upgrade Cap</th>
<th>Notes</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Sonarr</strong></td>
<td>30 min</td>
<td>5</td>
<td>3</td>
<td>Episode-level searches are fast. Safe to search more frequently</td>
</tr>
<tr>
<td><strong>Radarr</strong></td>
<td>60 min</td>
<td>3</td>
<td>2</td>
<td>Movies generate more indexer queries per search than episodes</td>
</tr>
<tr>
<td><strong>Lidarr</strong></td>
<td>60 min</td>
<td>3</td>
<td>2</td>
<td>Music indexers are often slower. Keep caps low to avoid timeouts</td>
</tr>
<tr>
<td><strong>Readarr</strong></td>
<td>120 min</td>
<td>2</td>
<td>1</td>
<td>Book indexers are limited. Very low caps recommended</td>
</tr>
<tr>
<td><strong>Whisparr</strong></td>
<td>60 min</td>
<td>3</td>
<td>2</td>
<td>Similar to Radarr in terms of search load</td>
</tr>
<tr>
<td><strong>Movie Hunt</strong></td>
<td>30 min</td>
<td>5</td>
<td>3</td>
<td>Uses Huntarr's own indexers (Index Master), so won't conflict with *arr indexer limits
</td>
</tr>
</tbody>
</table>
<h2>Multiple Instances Strategy</h2>
<p>If you run multiple instances of the same app (e.g., a 1080p Sonarr and a 4K Sonarr), stagger their
schedules to avoid hammering your indexers simultaneously:</p>
<ul>
<li><strong>Offset intervals</strong> — Set Instance A to 30 min and Instance B to 30 min, but
they'll naturally offset because they start at different times</li>
<li><strong>Different caps</strong> — Give your primary (1080p) instance a higher missing cap (5)
and your 4K instance a lower cap (2), since 4K content is harder to find anyway</li>
<li><strong>Use per-instance schedules</strong> — Avoid "Global" if your instances have different
purposes or indexer configurations</li>
</ul>
<h2>Queue-Aware Pausing</h2>
<p>Huntarr automatically checks your download client's queue before triggering searches. If your queue
is already full or has many active downloads, Huntarr will:</p>
<ul>
<li>Reduce the batch size (search fewer items than the configured cap)</li>
<li>Skip the cycle entirely if the queue exceeds the threshold</li>
<li>Retry on the next scheduled interval</li>
</ul>
<p>This prevents your download client from becoming overloaded and ensures existing downloads complete
before new ones are added.</p>
<h2>Monitoring Schedule Execution</h2>
<p>Check if your schedules are working properly:</p>
<ul>
<li><strong>Hunt Manager</strong> (System → Hunt Manager) — Shows the current status of each
schedule, when it last ran, and what it found</li>
<li><strong>Logs</strong> (System → Logs) — Detailed log entries for each hunt cycle, including how
many items were searched, found, and grabbed</li>
<li><strong>Dashboard</strong> — The home page shows per-app status cards with recent activity</li>
</ul>
<h2>Troubleshooting</h2>
<h3>Huntarr isn't finding anything</h3>
<ul>
<li>Check that your *arr app has <strong>monitored</strong> content that is actually missing.
Unmonitored items won't be searched</li>
<li>Verify your indexers are working in the *arr app itself — try a manual search</li>
<li>Check the Logs for errors like API timeouts or authentication failures</li>
</ul>
<h3>Getting rate-limited by indexers</h3>
<ul>
<li>Increase your interval (try 60 minutes instead of 15)</li>
<li>Decrease your caps (try 2 instead of 10)</li>
<li>If you use the same indexers across multiple *arr apps, their combined search volume counts
toward the indexer's rate limit</li>
</ul>
<h3>Schedules seem stuck</h3>
<ul>
<li>Check the Hunt Manager — a schedule may be "waiting" because the download queue is full</li>
<li>Restart the Huntarr container if schedules appear frozen</li>
<li>Verify the app instance is still reachable (check the Apps page for connection status)</li>
</ul>
<div class="alert alert-warning">
<strong><i class="fas fa-exclamation-triangle"></i> Indexer rate limits</strong>
<p>Most Usenet indexers allow 50100 API calls per day on free plans. Each search Huntarr triggers
uses 13 API calls depending on the app type. With a missing cap of 5 and 30-minute intervals,
that's roughly 240 searches/day — well within paid indexer limits but potentially exceeding
free-tier limits. Monitor your indexer usage if you're on a free plan.</p>
</div>
<div class="alert alert-success">
<strong><i class="fas fa-lightbulb"></i> Pro tip</strong>
<p>Your library isn't going anywhere. There's no rush. Start conservative (60 min, cap of 3) and let
Huntarr run for a week. It will methodically work through your entire library. Aggressive
settings just risk getting rate-limited without actually finding content faster, since the
bottleneck is usually the indexer, not Huntarr.</p>
</div>
</div><!-- /docs-content -->
<footer class="docs-footer">
<p>Huntarr is open source. <a href="https://github.com/plexguide/Huntarr.io" target="_blank">GitHub</a>
· <a href="https://discord.com/invite/PGJJjR5Cww" target="_blank">Discord</a> · <a
href="https://www.reddit.com/r/huntarr/" target="_blank">Reddit</a></p>
</footer>
</main>
</div><!-- /docs-layout -->
<button class="back-to-top" aria-label="Back to top"><i class="fas fa-arrow-up"></i></button>
<script src="../js/main.js"></script>
</body>
</html>