This commit is contained in:
+32
-7
@@ -37,6 +37,7 @@ let cropEnd = 0;
|
|||||||
let cropMax = 0;
|
let cropMax = 0;
|
||||||
let activeThumb = null;
|
let activeThumb = null;
|
||||||
const activePlatforms = new Set(["envato", "artgrid", "google video"]);
|
const activePlatforms = new Set(["envato", "artgrid", "google video"]);
|
||||||
|
const hlsInstances = new WeakMap();
|
||||||
|
|
||||||
function setStatus(label, progress) {
|
function setStatus(label, progress) {
|
||||||
statusLabel.textContent = label;
|
statusLabel.textContent = label;
|
||||||
@@ -140,6 +141,31 @@ async function api(path, options = {}) {
|
|||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function attachVideoSource(video, src) {
|
||||||
|
detachVideoSource(video);
|
||||||
|
if (!src) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (src.endsWith(".m3u8") && window.Hls && window.Hls.isSupported()) {
|
||||||
|
const hls = new window.Hls({ enableWorker: false });
|
||||||
|
hls.loadSource(src);
|
||||||
|
hls.attachMedia(video);
|
||||||
|
hlsInstances.set(video, hls);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
video.src = src;
|
||||||
|
}
|
||||||
|
|
||||||
|
function detachVideoSource(video) {
|
||||||
|
const existing = hlsInstances.get(video);
|
||||||
|
if (existing) {
|
||||||
|
existing.destroy();
|
||||||
|
hlsInstances.delete(video);
|
||||||
|
}
|
||||||
|
video.removeAttribute("src");
|
||||||
|
video.load();
|
||||||
|
}
|
||||||
|
|
||||||
function renderResults(results) {
|
function renderResults(results) {
|
||||||
searchResults.innerHTML = "";
|
searchResults.innerHTML = "";
|
||||||
if (!results.length) {
|
if (!results.length) {
|
||||||
@@ -158,7 +184,7 @@ function renderResults(results) {
|
|||||||
node.querySelector("p").textContent = item.reason;
|
node.querySelector("p").textContent = item.reason;
|
||||||
node.querySelector(".source-badge").textContent = item.source;
|
node.querySelector(".source-badge").textContent = item.source;
|
||||||
if (item.previewVideoUrl) {
|
if (item.previewVideoUrl) {
|
||||||
previewVideo.src = item.previewVideoUrl;
|
attachVideoSource(previewVideo, item.previewVideoUrl);
|
||||||
previewVideo.poster = item.thumbnailUrl || "";
|
previewVideo.poster = item.thumbnailUrl || "";
|
||||||
const mediaArea = node.querySelector(".relative");
|
const mediaArea = node.querySelector(".relative");
|
||||||
mediaArea.addEventListener("mouseenter", () => {
|
mediaArea.addEventListener("mouseenter", () => {
|
||||||
@@ -218,11 +244,10 @@ function openPreviewModal(preview) {
|
|||||||
previewThumbnail.src = preview.thumbnail;
|
previewThumbnail.src = preview.thumbnail;
|
||||||
previewThumbnail.alt = preview.title;
|
previewThumbnail.alt = preview.title;
|
||||||
previewVideo.pause();
|
previewVideo.pause();
|
||||||
previewVideo.removeAttribute("src");
|
detachVideoSource(previewVideo);
|
||||||
previewVideo.load();
|
|
||||||
previewMediaFrame.style.aspectRatio = "";
|
previewMediaFrame.style.aspectRatio = "";
|
||||||
if (preview.previewStreamUrl) {
|
if (preview.previewStreamUrl) {
|
||||||
previewVideo.src = preview.previewStreamUrl;
|
attachVideoSource(previewVideo, preview.previewStreamUrl);
|
||||||
previewVideo.classList.remove("hidden");
|
previewVideo.classList.remove("hidden");
|
||||||
previewThumbnail.classList.add("hidden");
|
previewThumbnail.classList.add("hidden");
|
||||||
} else {
|
} else {
|
||||||
@@ -247,8 +272,7 @@ function openPreviewModal(preview) {
|
|||||||
|
|
||||||
function closeModal() {
|
function closeModal() {
|
||||||
previewVideo.pause();
|
previewVideo.pause();
|
||||||
previewVideo.removeAttribute("src");
|
detachVideoSource(previewVideo);
|
||||||
previewVideo.load();
|
|
||||||
previewMediaFrame.style.aspectRatio = "";
|
previewMediaFrame.style.aspectRatio = "";
|
||||||
previewModal.classList.add("hidden");
|
previewModal.classList.add("hidden");
|
||||||
previewModal.classList.remove("flex");
|
previewModal.classList.remove("flex");
|
||||||
@@ -393,9 +417,10 @@ for (const button of platformToggles) {
|
|||||||
activePlatforms.add(platform);
|
activePlatforms.add(platform);
|
||||||
}
|
}
|
||||||
syncPlatformButtons();
|
syncPlatformButtons();
|
||||||
|
setStatus(`active platforms: ${Array.from(activePlatforms).join(", ")}`, 0);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
connectWS();
|
connectWS();
|
||||||
syncPlatformButtons();
|
syncPlatformButtons();
|
||||||
setStatus("idle", 0);
|
setStatus(`active platforms: ${Array.from(activePlatforms).join(", ")}`, 0);
|
||||||
|
|||||||
+1
-1
@@ -144,6 +144,6 @@
|
|||||||
</a>
|
</a>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script src="/app.js?v=20260313g" defer></script>
|
<script src="/app.js?v=20260313h" defer></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
Reference in New Issue
Block a user