Merge branch 'master' of github.com:ajayyy/SponsorBlock

This commit is contained in:
mmble
2020-09-23 20:22:27 +02:00
37 changed files with 3773 additions and 252 deletions

View File

@@ -618,12 +618,36 @@ function sponsorsLookup(id: string) {
categories.push(categorySelection.name);
}
utils.asyncRequestToServer('GET', "/api/skipSegments", {
videoID: id,
categories
}).then(async (response: FetchResponse) => {
// Check for hashPrefix setting
let getRequest;
if (Config.config.hashPrefix) {
getRequest = utils.asyncRequestToServer('GET', "/api/skipSegments/" + utils.getHash(id, 1).substr(0,4), {
categories
});
} else {
getRequest = utils.asyncRequestToServer('GET', "/api/skipSegments", {
videoID: id,
categories
});
}
getRequest.then(async (response: FetchResponse) => {
if (response?.ok) {
let recievedSegments: SponsorTime[] = JSON.parse(response.responseText);
let result = JSON.parse(response.responseText);
if (Config.config.hashPrefix) {
result = result.filter((video) => video.videoID === id);
if (result.length > 0) {
result = result[0].segments;
if (result.length === 0) { // return if no segments found
retryFetch(id);
return;
}
} else { // return if no video found
retryFetch(id);
return;
}
}
let recievedSegments: SponsorTime[] = result;
if (!recievedSegments.length) {
console.error("[SponsorBlock] Server returned malformed response: " + JSON.stringify(recievedSegments));
return;
@@ -667,32 +691,38 @@ function sponsorsLookup(id: string) {
sponsorLookupRetries = 0;
} else if (response?.status === 404) {
sponsorDataFound = false;
//check if this video was uploaded recently
utils.wait(() => !!videoInfo).then(() => {
let dateUploaded = videoInfo?.microformat?.playerMicroformatRenderer?.uploadDate;
//if less than 3 days old
if (Date.now() - new Date(dateUploaded).getTime() < 259200000) {
//TODO lower when server becomes better
setTimeout(() => sponsorsLookup(id), 180000);
}
});
sponsorLookupRetries = 0;
retryFetch(id);
} else if (sponsorLookupRetries < 90 && !recheckStarted) {
recheckStarted = true;
//TODO lower when server becomes better (back to 1 second)
//some error occurred, try again in a second
setTimeout(() => sponsorsLookup(id), 10000);
setTimeout(() => sponsorsLookup(id), 10000 + Math.random() * 30000);
sponsorLookupRetries++;
}
});
}
function retryFetch(id: string): void {
if (!Config.config.refetchWhenNotFound) return;
sponsorDataFound = false;
//check if this video was uploaded recently
utils.wait(() => !!videoInfo).then(() => {
let dateUploaded = videoInfo?.microformat?.playerMicroformatRenderer?.uploadDate;
//if less than 3 days old
if (Date.now() - new Date(dateUploaded).getTime() < 259200000) {
//TODO lower when server becomes better
setTimeout(() => sponsorsLookup(id), 120000);
}
});
sponsorLookupRetries = 0;
}
/**
* Only should be used when it is okay to skip a sponsor when in the middle of it
*
@@ -962,11 +992,11 @@ function getStartTimes(sponsorTimes: SponsorTime[], includeIntersectingSegments:
*
* @param time
*/
function previewTime(time: number) {
function previewTime(time: number, unpause = true) {
video.currentTime = time;
// Unpause the video if needed
if (video.paused){
if (unpause && video.paused){
video.play();
}
}