diff --git a/Jellyfin.Plugin.MediaBarEnhanced/Web/mediaBarEnhanced.js b/Jellyfin.Plugin.MediaBarEnhanced/Web/mediaBarEnhanced.js index 9d99188..3bdc565 100644 --- a/Jellyfin.Plugin.MediaBarEnhanced/Web/mediaBarEnhanced.js +++ b/Jellyfin.Plugin.MediaBarEnhanced/Web/mediaBarEnhanced.js @@ -1258,9 +1258,20 @@ const ApiUtils = { */ async fetchSponsorBlockData(videoId) { if (!CONFIG.useSponsorBlock) return { intro: null, outro: null }; + + // Return cached result if available + if (!this._sponsorBlockCache) this._sponsorBlockCache = {}; + if (this._sponsorBlockCache[videoId]) { + return this._sponsorBlockCache[videoId]; + } + try { const response = await fetch(`https://sponsor.ajay.app/api/skipSegments?videoID=${videoId}&categories=["intro","outro"]`); - if (!response.ok) return { intro: null, outro: null }; + if (!response.ok) { + const result = { intro: null, outro: null }; + this._sponsorBlockCache[videoId] = result; + return result; + } const segments = await response.json(); let intro = null; @@ -1274,7 +1285,9 @@ const ApiUtils = { } }); - return { intro, outro }; + const result = { intro, outro }; + this._sponsorBlockCache[videoId] = result; + return result; } catch (error) { console.warn('Error fetching SponsorBlock data:', error); return { intro: null, outro: null }; @@ -1763,7 +1776,11 @@ const SlideCreator = { if (event.data === YT.PlayerState.ENDED) { const slide = document.querySelector(`.slide[data-item-id="${itemId}"]`); if (slide && slide.classList.contains('active')) { - SlideshowManager.nextSlide(); + if (CONFIG.waitForTrailerToEnd) { + SlideshowManager.nextSlide(); + } else { + event.target.playVideo(); // Loop if trailer is shorter than slide duration + } } } }, @@ -2281,25 +2298,25 @@ const SlideshowManager = { if (previousVisibleSlide) { previousVisibleSlide.classList.remove("active"); - previousVisibleSlide.setAttribute("inert", ""); - previousVisibleSlide.setAttribute("tabindex", "-1"); + // previousVisibleSlide.setAttribute("inert", ""); + // previousVisibleSlide.setAttribute("tabindex", "-1"); } currentSlide.classList.add("active"); - currentSlide.removeAttribute("inert"); - currentSlide.setAttribute("tabindex", "0"); + // currentSlide.removeAttribute("inert"); + // currentSlide.setAttribute("tabindex", "0"); - // Update Play/Pause Button State if it was paused - if (STATE.slideshow.isPaused) { - STATE.slideshow.isPaused = false; - const pauseButton = document.querySelector('.pause-button'); - if (pauseButton) { - pauseButton.innerHTML = 'pause'; - const pauseLabel = LocalizationUtils.getLocalizedString('ButtonPause', 'Pause'); - pauseButton.setAttribute("aria-label", pauseLabel); - pauseButton.setAttribute("title", pauseLabel); - } - } + // // Update Play/Pause Button State if it was paused + // if (STATE.slideshow.isPaused) { + // STATE.slideshow.isPaused = false; + // const pauseButton = document.querySelector('.pause-button'); + // if (pauseButton) { + // pauseButton.innerHTML = 'pause'; + // const pauseLabel = LocalizationUtils.getLocalizedString('ButtonPause', 'Pause'); + // pauseButton.setAttribute("aria-label", pauseLabel); + // pauseButton.setAttribute("title", pauseLabel); + // } + // } // Manage Video Playback: Stop others, Play current