51 lines
1.3 KiB
JavaScript
51 lines
1.3 KiB
JavaScript
function error(message) {
|
|
const errorContainer = document.getElementById("mao-error");
|
|
const errorElement = document.getElementById("mao-error-message");
|
|
|
|
document.getElementById("video-result").style.display = "none";
|
|
|
|
errorElement.innerText = message || "unknown error";
|
|
errorContainer.classList.remove("hidden");
|
|
}
|
|
|
|
async function main() {
|
|
const params = new URLSearchParams(window.location.search);
|
|
const id = params.get("id");
|
|
if (!id) {
|
|
error("invalid id parameter");
|
|
return;
|
|
}
|
|
|
|
const info = await fetch(`/api/video-info?id=${id}`);
|
|
if (!info.ok) {
|
|
error("error fetching video info");
|
|
return;
|
|
}
|
|
|
|
const json = await info.json();
|
|
if (!json.ok) {
|
|
error(json.error);
|
|
return;
|
|
}
|
|
|
|
const video = json.video;
|
|
|
|
const player = document.getElementById("video-player");
|
|
player.controls = true;
|
|
player.src = video.path;
|
|
player.onerror = () => {
|
|
error("unable to play video");
|
|
}
|
|
player.onload = () => {
|
|
player.style.height = player.clientWidth / 16 * 9 + "px";
|
|
}
|
|
|
|
document.getElementById("video-title").innerText = video.title;
|
|
document.getElementById("video-author").innerText = "by " + video.author;
|
|
|
|
document.getElementById("video-result").style.display = "block";
|
|
}
|
|
|
|
main();
|
|
|