Proxy and cache preview media
build-push / docker (push) Successful in 4m5s

This commit is contained in:
AI Assistant
2026-03-16 14:28:00 +09:00
parent 473cff3b7a
commit 4dbb963256
4 changed files with 153 additions and 12 deletions
+10 -3
View File
@@ -75,6 +75,13 @@ const hlsInstances = new WeakMap();
const debugEntries = [];
const PREVIEW_PLACEHOLDER = "https://placehold.co/1280x720/0a0a0a/ffffff?text=Preview";
function proxiedPreviewURL(src) {
if (!src) {
return "";
}
return `/api/preview/stream?url=${encodeURIComponent(src)}`;
}
function setStatus(label, progress) {
statusLabel.textContent = label;
statusBar.style.width = `${Math.max(0, Math.min(100, progress))}%`;
@@ -418,7 +425,7 @@ function showResultModalVideo(src) {
if (!src) {
return;
}
attachVideoSource(resultModalVideo, src);
attachVideoSource(resultModalVideo, proxiedPreviewURL(src));
setHidden(resultModalVideo, false, "");
}
@@ -452,7 +459,7 @@ function renderResults(results) {
mediaArea.addEventListener("mouseenter", () => {
logEvent("preview:hover:start", { title: item.title, source: item.source, previewVideoUrl: item.previewVideoUrl });
overlays.forEach((overlay) => overlay.classList.add("hidden"));
startHoverPreview(previewVideo, item.previewVideoUrl);
startHoverPreview(previewVideo, proxiedPreviewURL(item.previewVideoUrl));
});
mediaArea.addEventListener("mouseleave", () => {
logEvent("preview:hover:end", { title: item.title, source: item.source });
@@ -568,7 +575,7 @@ function openPreviewModal(preview) {
previewThumbnail.alt = preview.title;
resetPreviewPlayer();
if (preview.previewStreamUrl) {
attachVideoSource(previewVideo, preview.previewStreamUrl);
attachVideoSource(previewVideo, proxiedPreviewURL(preview.previewStreamUrl));
setHidden(previewVideo, false, "");
setHidden(previewThumbnail, true, "");
} else {