{% extends "_shell.html" %} {% from "_macros.html" import service_error, bar, trend %} {% block title %}P105 System{% endblock %} {% block content %}

SYSTEM

{#- ── Service transmission status ─────────────────────────────── Six services, one row each, colour carrying up or down. This is what the old header pills were, given room to say something. Each row opens that service's own instance, via the reverse proxy. -#}
Transmission
{% for name, key, svc in [('Sonarr', 'sonarr', sonarr), ('Radarr', 'radarr', radarr), ('SABnzbd', 'sabnzbd', sabnzbd), ('Tautulli', 'tautulli', tautulli), ('Prowlarr', 'prowlarr', prowlarr), ('Ombi', 'ombi', ombi)] %} {{ name }} {{- 'ON AIR' if svc.status == 'ok' else 'OFF AIR' -}} {% endfor %}
{% include "_array_section.html" %}
{#- ── Downloads ───────────────────────────────────────────────── The one place the service holds real history, so the one place a trend arrow is honest: current speed against the 7-day average. -#} {% if sabnzbd.status == 'ok' %}
Downloads{{ sabnzbd.sab_status | default('') }}
{{ sabnzbd.queue_count }}
In queue
{{ sabnzbd.speed | default('0') }} {{ trend(sabnzbd.speed_kbps, sabnzbd.avg_speed_kbps) }}
Speed vs 7-day avg
{{ sabnzbd.sizeleft | default('—') }}
Remaining
{{ sabnzbd.week_size | default('—') }}
This week
{% else %}
Downloadsoff air
{{ service_error('SABnzbd', sabnzbd.error) }} {% endif %} {#- ── Indexers ────────────────────────────────────────────────── -#} {% if prowlarr.status == 'ok' %}
Indexers {{ prowlarr.up_count }} of {{ prowlarr.total }} up
{% for idx in prowlarr.indexers %}
{{ idx.protocol | default('') }} {{ idx.name }} {% if prowlarr.has_stats %}{{ idx.grabs | default(0) }} grabs · {{ idx.queries | default(0) }} queries{% endif %} {% if prowlarr.has_stats %}{{ bar(idx.grab_share | default(0), 'ok' if idx.up else 'alert') }}{% endif %} {{ 'UP' if idx.up else 'DOWN' }}
{% endfor %}
{% else %}
Indexersoff air
{{ 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' %}
Adminoff air
{{ service_error('Sonarr/Tautulli', admin_unwatched.error) }} {% else %}
Admin {{ admin_unwatched.shows | length }} unwatched · {{ admin_unwatched.total_display }} reclaimable
{% if admin_unwatched.shows %}
{% for show in admin_unwatched.shows %}
{{ show.ep_count }} EP {{ show.title }} {% if show.year %}{{ show.year }} · {% endif %}Downloaded {{ show.added[:10] if show.added else 'unknown' }} · {% if show.requested_by %}Requested by {{ show.requested_by }}{% else %}Requester unknown{% endif %} · Never watched {{ show.size_display }}
{% endfor %}
{% else %}

Nothing unwatched and older than {{ admin_unwatched.months }} months is taking up meaningful space.

{% endif %} {% endif %} {% endblock %}