{% extends "base.html" %} {% from "fragments/_chips.html" import chip %} {% block title %}Voxint — media{% endblock %} {% block cb_breadcrumb %}media /{% endblock %} {% block cb_summary %} {%- if media_summary.folder_count %}{{ media_summary.folder_count }} folder{{ "s" if media_summary.folder_count != 1 else "" }} · {% endif -%} {{ media_summary.file_count }} recording{{ "s" if media_summary.file_count != 1 else "" }} · {{ media_summary.total_hours }} {%- endblock %} {% block cb_search %} {% endblock %} {% block cb_actions %} {% if not archived and not trashed %}
{% endif %} {% endblock %} {% block body %} {# The settings-folder picker is shared by the upload and URL forms. #} {% macro folder_picker(select_id) %} {% endmacro %} {% if trashed %}

Trashed files awaiting permanent deletion. ← Back to active media

{% elif archived %}

Archived runs are hidden from the active library. ← Back to active media

{% endif %} {% if notice %}

{{ notice.text }}

{% endif %} {% if not archived and not trashed %} {% if submitted %}

{% if submitted == "deferred" %}Queued for transcription. It will start when the worker is available. {% else %}Queued for transcription.{% endif %}

{% endif %} {% endif %} {% if rows %}
{% if not archived and not trashed %} {% endif %}
{% if not trashed and not archived %} Archived → Trash → {% elif archived %} Trash → {% endif %}
{% if view == "table" %}
NAME ITEMS LENGTH REVIEW {% if trashed %}TRASHED{% endif %}
{% for group in folder_groups %}
{{ group.folder_path }} {% if not archived and not trashed %}{{ chip("watched") }}{% endif %} {{ group.item_count }} {{ format_compact_duration(group.total_duration_seconds) }} {% if group.failed_count %} {{ group.failed_count }} failed {% elif group.running_count %} {{ chip("transcribing") }} {% elif group.needs_review_count %} {{ group.needs_review_count }} need you {% elif group.completed_count == group.item_count and group.item_count > 0 %} {{ chip("all reviewed") }} {% else %} {% endif %} {% if group.latest_date %}{{ format_age(group.latest_date, now=now) }}{% endif %} Open →
{% for row in group.items %} {% endfor %} {% endfor %} {% for row in ungrouped_items %}
{{ friendly_media_label(row.source_title, row.source_path) }} {% if row.id in missing_file_ids %}File missing{% endif %} {{ format_duration(row.duration_seconds) }} {% if row.latest_run_id %} {{ chip(humanize_status(row.latest_run_status)) }} {% else %}{% endif %} {% if trashed and row.trashed_at %}{{ format_age(row.trashed_at, now=now) }} {% else %}{{ format_age(row.added_at, now=now) }}{% endif %} {% if row.latest_run_id %} View → {% endif %}
{% endfor %}
{% else %}

Cards view is coming soon. Switch to Table view above.

{% endif %}
{% if truncated %}

Showing up to the first {{ limit }} files. Register fewer or smaller folders to narrow the list.

{% endif %} {% else %} {% if trashed %}

Trash is empty.

{% elif archived %}

No archived runs. Archive a run from the active library to see it here.

{% else %}

No media yet. Add a recording with the button above, or register a folder on the server.

{% endif %} {% endif %} {% if trashed and rows %}

Emptying the trash permanently deletes the files from disk. This cannot be undone.

{% endif %} {% endblock %}