{% extends "base.html" %} {% from "_macros.html" import empty %} {% block title %}Do it again — Video to LLM{% endblock %} {% set problems = problems | default([], true) %} {% set plans = plans | default([], true) %} {% set estimates = estimates | default({}, true) %} {% set durations = durations | default({}, true) %} {% set versions = versions | default([], true) %} {% set descriptions_on = descriptions_on | default(false, true) %} {% set provider = provider | default("none", true) %} {% set budget_limit = budget_limit | default(0, true) %} {% block content %}

Describe it again

This makes a new version. Everything the previous version produced stays exactly where it is, and any collection built on it is untouched.

Back to the job
{% if problems %} {% endif %} {% if videos | length > 1 %}
{% for v in videos %} {{ v['display_name'] }} {% endfor %}
{% endif %} {% if not descriptions_on %}

No description model is set up

Describing pictures is off. Choose a model first — nothing here can run until there is something to run it with.

Set one up
{% elif chosen %}

What should be done again?

{{ chosen['display_name'] }}
{# Every scope reports the count it would actually send, worked out from what the previous version recorded. A scope that matches nothing is offered as unavailable rather than hidden: "there is nothing marked low confidence" is a useful thing to learn, and a missing option teaches nothing. #} {% for plan in plans %} {# On a local model the cost column reads "free", which is true and badly incomplete: the price is hours. This column is measured from runs this computer has actually finished, and stays empty until there are enough of them to mean anything. #} {% endfor %}
Choices for what to describe again
Choose WhatPictures Kept from beforeRoughly costs Roughly takes
{% if plan.is_empty %} none {% else %} {{ "{:,}".format(plan.frame_count) }} {% endif %} {{ "{:,}".format(plan.carried_over) }} {% set estimate = estimates.get(plan.scope) %} {% if estimate %}{{ estimate.label }}{% else %}—{% endif %} {% if durations.get(plan.scope) %}{{ durations[plan.scope] }} {% else %}not measured yet{% endif %}

The pictures and the transcript are carried over, not taken again — they would come out identical, and re-transcribing an hour of audio to redo a few descriptions is time you do not get back. Descriptions outside your choice are kept as they are.

{% if provider not in ("ollama_local", "none") %}
This one costs money

Only the numbered still pictures are sent — never the video, never the audio. The figures above are estimates from local pricing assumptions, not fetched from anyone. Your cap of ${{ "%.2f"|format(budget_limit) }} is checked before anything is sent, so the amount that would cross it never leaves.

{% endif %}
Cancel

Every version of this video

Newest first
{% if versions %} {% for version in versions %} {% endfor %}
Versions of this video
VersionWhat was done DescribedLow confidence ModelIn use
v{{ version.version }} {{ version.scope_label }}
{{ status.format_moment(version.created_at) }}
{{ "{:,}".format(version.described) }} {% if version.low_confidence %} {{ "{:,}".format(version.low_confidence) }} {% else %} none {% endif %} {{ version.model_id or "—" }} {% if version.is_active %} In use {% else %}
{% endif %}

Switching which version is in use deletes nothing and rewrites nothing. A collection goes on citing whichever version it pinned, whether or not that is the one in use here.

{% else %} {{ empty("No versions yet.", "There will be one as soon as this video has been processed.") }} {% endif %}
{% endif %} {% endblock %}