mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-12 14:37:23 +03:00
Fix close skips not overlapping
This commit is contained in:
@@ -45,6 +45,8 @@ let lastKnownVideoTime: { videoTime: number, preciseTime: number } = {
|
|||||||
videoTime: null,
|
videoTime: null,
|
||||||
preciseTime: null
|
preciseTime: null
|
||||||
};
|
};
|
||||||
|
// It resumes with a slightly later time on chromium
|
||||||
|
let lastTimeFromWaitingEvent = null;
|
||||||
|
|
||||||
// Skips are scheduled to ensure precision.
|
// Skips are scheduled to ensure precision.
|
||||||
// Skips are rescheduled every seeking event.
|
// Skips are rescheduled every seeking event.
|
||||||
@@ -456,14 +458,16 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
|
|||||||
|
|
||||||
if (!video || video.paused) return;
|
if (!video || video.paused) return;
|
||||||
if (currentTime === undefined || currentTime === null) {
|
if (currentTime === undefined || currentTime === null) {
|
||||||
const virtualTime = lastKnownVideoTime.videoTime ?
|
const virtualTime = lastTimeFromWaitingEvent ?? (lastKnownVideoTime.videoTime ?
|
||||||
(performance.now() - lastKnownVideoTime.preciseTime) / 1000 + lastKnownVideoTime.videoTime : null;
|
(performance.now() - lastKnownVideoTime.preciseTime) / 1000 + lastKnownVideoTime.videoTime : null);
|
||||||
if (!utils.isFirefox() && !isSafari() && virtualTime && Math.abs(virtualTime - video.currentTime) < 0.6){
|
if ((lastTimeFromWaitingEvent || !utils.isFirefox())
|
||||||
|
&& !isSafari() && virtualTime && Math.abs(virtualTime - video.currentTime) < 0.6){
|
||||||
currentTime = virtualTime;
|
currentTime = virtualTime;
|
||||||
} else {
|
} else {
|
||||||
currentTime = video.currentTime;
|
currentTime = video.currentTime;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
lastTimeFromWaitingEvent = null;
|
||||||
|
|
||||||
if (videoMuted && !inMuteSegment(currentTime)) {
|
if (videoMuted && !inMuteSegment(currentTime)) {
|
||||||
video.muted = false;
|
video.muted = false;
|
||||||
@@ -535,8 +539,8 @@ function startSponsorSchedule(includeIntersectingSegments = false, currentTime?:
|
|||||||
startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);
|
startSponsorSchedule(forcedIncludeIntersectingSegments, forcedSkipTime, forcedIncludeNonIntersectingSegments);
|
||||||
};
|
};
|
||||||
|
|
||||||
if (timeUntilSponsor <= 0) {
|
if (timeUntilSponsor < 0.003) {
|
||||||
skippingFunction();
|
skippingFunction(currentTime);
|
||||||
} else {
|
} else {
|
||||||
const delayTime = timeUntilSponsor * 1000 * (1 / video.playbackRate);
|
const delayTime = timeUntilSponsor * 1000 * (1 / video.playbackRate);
|
||||||
if (delayTime < 300) {
|
if (delayTime < 300) {
|
||||||
@@ -680,6 +684,7 @@ function setupVideoListeners() {
|
|||||||
lastCheckVideoTime = video.currentTime;
|
lastCheckVideoTime = video.currentTime;
|
||||||
|
|
||||||
updateVirtualTime();
|
updateVirtualTime();
|
||||||
|
lastTimeFromWaitingEvent = null;
|
||||||
|
|
||||||
startSponsorSchedule();
|
startSponsorSchedule();
|
||||||
}
|
}
|
||||||
@@ -696,6 +701,7 @@ function setupVideoListeners() {
|
|||||||
videoTime: null,
|
videoTime: null,
|
||||||
preciseTime: null
|
preciseTime: null
|
||||||
}
|
}
|
||||||
|
lastTimeFromWaitingEvent = video.currentTime;
|
||||||
|
|
||||||
cancelSponsorSchedule();
|
cancelSponsorSchedule();
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user