Add Guardio web UI
This commit is contained in:
127
templates/index.html
Normal file
127
templates/index.html
Normal file
@@ -0,0 +1,127 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>Guardio | YouTube Auto Dub</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='guardio.css') }}">
|
||||
</head>
|
||||
<body>
|
||||
<main class="shell">
|
||||
<section class="hero">
|
||||
<div>
|
||||
<p class="eyebrow">Guardio</p>
|
||||
<h1>YouTube Auto Dub</h1>
|
||||
<p class="lede">Launch local dubbing jobs, watch the pipeline log, and collect finished videos from one quiet control surface.</p>
|
||||
</div>
|
||||
<div class="status-strip" aria-live="polite">
|
||||
<span id="active-count">0 running</span>
|
||||
<span id="last-state">Ready</span>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="workspace">
|
||||
<form id="job-form" class="panel">
|
||||
<div class="panel-heading">
|
||||
<h2>New Dub</h2>
|
||||
<button type="submit">Start</button>
|
||||
</div>
|
||||
|
||||
<label>
|
||||
YouTube URL
|
||||
<input name="url" type="url" placeholder="https://www.youtube.com/watch?v=..." required>
|
||||
</label>
|
||||
|
||||
<div class="grid">
|
||||
<label>
|
||||
Target Language
|
||||
<input name="lang" value="es" maxlength="12">
|
||||
</label>
|
||||
<label>
|
||||
Whisper Model
|
||||
<select name="whisper_model">
|
||||
<option value="">Auto</option>
|
||||
<option>tiny</option>
|
||||
<option>base</option>
|
||||
<option>small</option>
|
||||
<option>medium</option>
|
||||
<option>large-v3</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<div class="grid">
|
||||
<label>
|
||||
Mix Mode
|
||||
<select name="mix_mode">
|
||||
<option value="instrumental-only">Instrumental only</option>
|
||||
<option value="dub-only">Dub only</option>
|
||||
<option value="original-audio">Original audio</option>
|
||||
</select>
|
||||
</label>
|
||||
<label>
|
||||
Browser Cookies
|
||||
<select name="browser">
|
||||
<option value="">None</option>
|
||||
<option>chrome</option>
|
||||
<option>edge</option>
|
||||
<option>firefox</option>
|
||||
<option>brave</option>
|
||||
</select>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<label>
|
||||
Cookies File
|
||||
<input name="cookies" placeholder="C:\path\to\cookies.txt">
|
||||
</label>
|
||||
|
||||
<details>
|
||||
<summary>Translation Settings</summary>
|
||||
<div class="grid">
|
||||
<label>
|
||||
LM Studio URL
|
||||
<input name="lmstudio_base_url" placeholder="http://127.0.0.1:1234/v1">
|
||||
</label>
|
||||
<label>
|
||||
Model
|
||||
<input name="lmstudio_model" placeholder="gemma-3-4b-it">
|
||||
</label>
|
||||
</div>
|
||||
<label class="check">
|
||||
<input name="gpu" type="checkbox">
|
||||
<span>Prefer GPU</span>
|
||||
</label>
|
||||
</details>
|
||||
</form>
|
||||
|
||||
<section class="panel monitor">
|
||||
<div class="panel-heading">
|
||||
<h2>Run Log</h2>
|
||||
<button id="refresh" type="button">Refresh</button>
|
||||
</div>
|
||||
<div id="jobs" class="jobs"></div>
|
||||
<pre id="log">No jobs yet.</pre>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section class="outputs">
|
||||
<div class="section-heading">
|
||||
<h2>Outputs</h2>
|
||||
<button id="reload-outputs" type="button">Reload</button>
|
||||
</div>
|
||||
<div id="outputs" class="output-grid">
|
||||
{% for output in outputs %}
|
||||
<a class="output-card" href="{{ url_for('download_output', filename=output.name) }}">
|
||||
<strong>{{ output.name }}</strong>
|
||||
<span>{{ output.size_mb }} MB</span>
|
||||
</a>
|
||||
{% else %}
|
||||
<p class="empty">Finished videos will appear here.</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</section>
|
||||
</main>
|
||||
<script src="{{ url_for('static', filename='guardio.js') }}"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user