diff --git a/qbittorrent_performer_sorter.html b/qbittorrent_performer_sorter.html index 1ba0454..af286d2 100644 --- a/qbittorrent_performer_sorter.html +++ b/qbittorrent_performer_sorter.html @@ -5377,11 +5377,38 @@ Return ONLY a valid JSON object with an array named "results": const btnPreviewNext = document.getElementById('btn-preview-next'); const previewState = { - activeType: 'smb', // 'smb' | 'qb' + activeType: 'smb', // 'smb' | 'qb' | 'direct' currentIndex: -1, currentList: [] }; + function openVideoPreview(filePath, title = 'Video Preview', category = null) { + if (!filePath) { + showToast('No video path available for preview', 'error'); + return; + } + previewState.activeType = 'direct'; + previewState.currentIndex = 0; + previewState.currentList = [{ name: title, path: filePath, selectedPerformer: category }]; + + videoModal.classList.add('open'); + if (videoCounter) videoCounter.textContent = '1 / 1'; + if (btnPreviewPrev) btnPreviewPrev.disabled = true; + if (btnPreviewNext) btnPreviewNext.disabled = true; + + const playlistBar = document.getElementById('video-playlist-bar'); + if (playlistBar) playlistBar.style.display = 'none'; + + videoTitle.textContent = title || filePath.split('/').pop() || 'Video Preview'; + + const streamUrl = `/api/stream?path=${encodeURIComponent(filePath)}`; + videoElement.src = streamUrl; + videoElement.load(); + videoElement.play().catch(e => console.log('Autoplay deferred:', e)); + + renderVideoModalPerformerControls({ name: title, path: filePath, selectedPerformer: category }, 'direct'); + } + function openVideoPreviewForSmb(filePath) { const query = smbSearchInput.value.trim().toLowerCase(); const filtered = smbState.files.filter(f => { @@ -7888,11 +7915,14 @@ Return ONLY a valid JSON object with an array named "results":