{% extends "base.html" %} {% from "_macros.html" import empty %} {% block title %}Files — Video to LLM{% endblock %} {% block content %}

Files

Everything this job made, on this computer{% if total_size and total_size != "—" %} · {{ total_size }} in total{% endif %}

Back to the job
{# What this job did — the other half of the panel on the new job screen. That one promises; this one reports. Keeping them the same shape is the point: you were told 1,488 pictures and nothing uploaded, and here is 1,488 pictures and nothing uploaded. Without it the Files screen answered "what exists" and never "what happened", which is what someone opens it to find out. Every row is omitted when its value is unknown. The token figures say they are estimates because they are — a character ratio, not a real tokenisation. #} {% if receipt and receipt.has_anything %}

What this job did

Video
{{ receipt.videos | join(", ") }} {%- if receipt.length_label %} · {{ receipt.length_label }}{% endif %}
{% if receipt.interval_label %}
Pictures
{{ receipt.interval_label }}
{% endif %} {% if receipt.described_label %}
Descriptions
{{ receipt.described_label }} {%- if receipt.described_by %} · {{ receipt.described_by }}{% endif %}
{% endif %} {% if receipt.took_label %}
Took
{{ receipt.took_label }}
{% endif %} {% if receipt.finished_at %}
Finished
{{ receipt.finished_at }}
{% endif %} {% if receipt.document_size %}
The document
{{ receipt.document_size }} {%- if receipt.document_tokens %} · about {{ "{:,}".format(receipt.document_tokens) }} tokens{% endif %}
{% endif %} {% if receipt.saving_label and receipt.frames_tokens %}
Instead of the pictures
about {{ "{:,}".format(receipt.frames_tokens) }} tokens — {{ receipt.saving_label }} smaller this way
{% endif %}

{{ receipt.left_machine }}

{% if receipt.document_tokens %}
How the token figures are worked out

Both numbers are estimates, not a real tokenisation, which is specific to each model. The document is counted at roughly 3.6 characters per token. The comparison assumes each picture costs about {{ "{:,}".format(1393) }} tokens on a tile-based vision model — that is the realistic alternative, because most services accept no video at all and would need the pictures.

{% endif %}
{% endif %}
{% if files %} {% set names = { 'assembled': 'Everything in time order — words, quiet stretches, descriptions', 'master_assembled': 'Every video, one after another, in your order', 'transcript': 'The spoken words, with timings', 'frames_dir': 'The clean pictures', 'frames_api_dir': 'Numbered copies used for the descriptions', 'frames_manifest': 'Which picture is which, and when', 'silence_windows': 'Where the quiet stretches are', 'visual_results': 'The descriptions', 'visual_batch': 'One batch of descriptions', 'gaps': 'Moments with no description', 'provenance': 'What made this, with which settings, and when', 'analysis_input': 'A folder ready to hand to whatever you use next' } %} {% for file in files %} {% endfor %}
Files produced by this job
FileWhat it is SizeActions
{% if file.previewable %} {{ file.name }} {% else %} {{ file.name }} {% endif %} {% if file.is_dir and file.count %} ({{ "{:,}".format(file.count) }} files) {% endif %}
{{ file.path }}
{{ names.get(file.kind, file.kind) }} {{ file.size }} {% if file.previewable %}Open{% endif %} {% if not file.is_dir %}Save{% endif %}
{% else %} {{ empty("No files yet.", "They appear here as the job produces them.") }} {% endif %} {# Only shown where a real equivalent exists. A hint pointing at a command that does not do this would be worse than no hint. #} {% if files %}

From a terminal: video-to-llm export "<job>" --format srt for subtitles or other formats, and video-to-llm show "<job>" 00:12:34 to see what was happening at a moment and which picture came from it.

{% endif %}
{# Free up space, by kind rather than all-or-nothing. Removing a job offered two choices: keep every file or remove the folder. On a real job that made the 91 MB of scratch audio and the 1 MB document the run exists to produce into the same decision. Each kind therefore says what losing it actually costs — the sizes alone point the wrong way, because the largest folder is the cheapest to rebuild and the smallest may be hours of work. Nothing is ticked by default, and the assembled document is not offered at all. #} {% set groups = reclaimable | default([], true) %} {% if groups %}

Free up space

{% if reclaim_blocked %} {% else %}

Choose what to remove. The job itself is kept, along with everything you do not tick here.

{% for group in groups %} {% endfor %}
Files that can be removed
Remove WhatSizeIf you remove it
{{ group.size }} {{ group.consequence }} {% if not group.remakeable %} This computer cannot make it again on its own. {% endif %}
{% endif %}
{% endif %} {% endblock %}