Add Admin section to System: reclaim space from unwatched shows
All checks were successful
Deploy / deploy (push) Successful in 48s
All checks were successful
Deploy / deploy (push) Successful in 48s
Cross-references Sonarr's per-series disk usage against Tautulli's full play history to surface the 10 largest shows nobody has ever watched, excluding anything added in the last 6 months so new downloads aren't flagged before they've had a chance to be watched. Delete removes the series from Sonarr along with its episode files and folder, behind the site's usual two-tap arm/confirm rather than a native dialog. Also dedupes the never-wired /api/tautulli/never-watched endpoint onto the same helper, and clears the Sonarr/Radarr list caches on delete so a removed title doesn't linger in other cards until the TTL expires. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LPJxtE9tPURsaWDZ6rC4Dt
This commit is contained in:
parent
d38ab1b561
commit
cad4cd0a84
3 changed files with 209 additions and 55 deletions
|
|
@ -161,4 +161,43 @@
|
|||
<div class="tt-field crit"><span>Indexers</span><span class="tt-field-meta">off air</span></div>
|
||||
{{ service_error('Prowlarr', prowlarr.error) }}
|
||||
{% endif %}
|
||||
|
||||
{#- ── Admin ─────────────────────────────────────────────────────
|
||||
Shows Sonarr is holding, sized, that nobody has ever played in
|
||||
Tautulli and that have sat untouched for longer than the
|
||||
neglect window — largest first, since the point is reclaiming
|
||||
space. Delete removes the series from Sonarr with its episode
|
||||
files and folder; that's permanent, so it shares the site's
|
||||
two-tap arming rather than a native confirm(). -#}
|
||||
{% if admin_unwatched.status != 'ok' %}
|
||||
<div class="tt-field crit"><span>Admin</span><span class="tt-field-meta">off air</span></div>
|
||||
{{ service_error('Sonarr/Tautulli', admin_unwatched.error) }}
|
||||
{% else %}
|
||||
<div class="tt-field">
|
||||
<span>Admin</span>
|
||||
<span class="tt-field-meta" id="admin-meta">
|
||||
{{ admin_unwatched.shows | length }} unwatched · {{ admin_unwatched.total_display }} reclaimable
|
||||
</span>
|
||||
</div>
|
||||
{% if admin_unwatched.shows %}
|
||||
<div class="tt-rows" id="admin-rows">
|
||||
{% for show in admin_unwatched.shows %}
|
||||
<div class="tt-row" data-bytes="{{ show.size }}">
|
||||
<span class="tt-row-name">{{ show.ep_count }} EP</span>
|
||||
<span class="tt-row-body">
|
||||
<span class="tt-row-title">{{ show.title }}</span>
|
||||
{% if show.year %}<span class="tt-row-sub">{{ show.year }}</span>{% endif %}
|
||||
</span>
|
||||
<span class="tt-row-val">{{ show.size_display }}</span>
|
||||
<span class="tt-row-acts">
|
||||
<button class="tt-btn tt-btn-no tt-btn-sm" data-id="{{ show.sonarr_id }}"
|
||||
onclick="armDelete(this)" aria-label="Delete {{ show.title }}">Delete</button>
|
||||
</span>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<p class="tt-empty" id="admin-empty">Nothing unwatched and older than {{ admin_unwatched.months }} months is taking up meaningful space.</p>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue