Spaces:
Sleeping
Sleeping
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | |
<title>AI DUB API</title> | |
<link rel="stylesheet" href="/static/styles.css"> | |
<script> | |
async function processVideo() { | |
const formData = new FormData(); | |
const video = document.getElementById("video").files[0]; | |
const targetLanguage = document.getElementById("target_language").value; | |
formData.append("video", video); | |
formData.append("target_language", targetLanguage); | |
const progressContainer = document.getElementById("progress-container"); | |
const progressBar = document.getElementById("progress-bar"); | |
const progressText = document.getElementById("progress-text"); | |
const output = document.getElementById("output"); | |
const logs = document.getElementById("logs"); | |
// Vyprázdni předchozí logy | |
logs.innerHTML = ""; | |
// Zobraz progress bar | |
progressContainer.style.display = "block"; | |
progressBar.value = 0; | |
progressText.textContent = "Processing..."; | |
// Připoj se na SSE endpoint pro logy | |
const eventSource = new EventSource("http://127.0.0.1:5000/logs"); | |
eventSource.onmessage = (event) => { | |
const logMessage = document.createElement("p"); | |
logMessage.textContent = event.data; | |
logs.appendChild(logMessage); | |
logs.scrollTop = logs.scrollHeight; // Automaticky skroluj dolů | |
}; | |
try { | |
const response = await fetch("http://127.0.0.1:5000/process_video", { | |
method: "POST", | |
body: formData, | |
}); | |
const result = await response.json(); | |
if (result.status === "processing") { | |
progressText.textContent = "Processing started..."; | |
} else { | |
progressText.textContent = "Error occurred!"; | |
output.textContent = `Error: ${result.message}`; | |
} | |
} catch (error) { | |
progressText.textContent = "Failed!"; | |
output.textContent = `Error: ${error.message}`; | |
} | |
} | |
</script> | |
</head> | |
<body> | |
<h1>AI DUB API</h1> | |
<form onsubmit="event.preventDefault(); processVideo();"> | |
<label for="video">Upload Video:</label> | |
<input type="file" id="video" name="video" required><br><br> | |
<label for="target_language">Target Language:</label> | |
<select id="target_language" name="target_language" required> | |
<option value="Czech (cs)">Czech</option> | |
<option value="English (en)">English</option> | |
<option value="Spanish (es)">Spanish</option> | |
</select><br><br> | |
<button type="submit">Process</button> | |
</form> | |
<div id="output"></div> | |
<div id="progress-container" style="display: none;"> | |
<p id="progress-text">Processing...</p> | |
<progress id="progress-bar" value="0" max="100" style="width: 100%;"></progress> | |
</div> | |
<div id="logs" style="border: 1px solid #ccc; padding: 10px; height: 150px; overflow-y: scroll;"> | |
<!-- Zde se zobrazí logy --> | |
</div> | |
</body> | |
</html> | |