mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-08 20:47:11 +03:00
Use duration as current time if endcards or autoplay is visible when submitting
This commit is contained in:
@@ -247,7 +247,7 @@ class SponsorTimeEditComponent extends React.Component<SponsorTimeEditProps, Spo
|
|||||||
}
|
}
|
||||||
|
|
||||||
setTimeToNow(index: number) {
|
setTimeToNow(index: number) {
|
||||||
this.setTimeTo(index, this.props.contentContainer().v.currentTime);
|
this.setTimeTo(index, this.props.contentContainer().getRoughCurrentTime());
|
||||||
}
|
}
|
||||||
|
|
||||||
setTimeToEnd() {
|
setTimeToEnd() {
|
||||||
|
|||||||
@@ -115,7 +115,8 @@ var skipNoticeContentContainer: ContentContainer = () => ({
|
|||||||
resetSponsorSubmissionNotice,
|
resetSponsorSubmissionNotice,
|
||||||
changeStartSponsorButton,
|
changeStartSponsorButton,
|
||||||
previewTime,
|
previewTime,
|
||||||
videoInfo
|
videoInfo,
|
||||||
|
getRoughCurrentTime
|
||||||
});
|
});
|
||||||
|
|
||||||
//get messages from the background script and the popup
|
//get messages from the background script and the popup
|
||||||
@@ -179,7 +180,7 @@ function messageListener(request: any, sender: any, sendResponse: (response: any
|
|||||||
return
|
return
|
||||||
case "getCurrentTime":
|
case "getCurrentTime":
|
||||||
sendResponse({
|
sendResponse({
|
||||||
currentTime: video.currentTime
|
currentTime: getRoughCurrentTime()
|
||||||
});
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
@@ -462,6 +463,8 @@ function cancelSponsorSchedule(): void {
|
|||||||
*/
|
*/
|
||||||
function startSponsorSchedule(includeIntersectingSegments: boolean = false, currentTime?: number): void {
|
function startSponsorSchedule(includeIntersectingSegments: boolean = false, currentTime?: number): void {
|
||||||
cancelSponsorSchedule();
|
cancelSponsorSchedule();
|
||||||
|
console.log("scheduling: " + (currentTime || video.currentTime))
|
||||||
|
|
||||||
if (video.paused) return;
|
if (video.paused) return;
|
||||||
|
|
||||||
if (Config.config.disableSkipping || channelWhitelisted || (channelID === null && Config.config.forceChannelCheck)){
|
if (Config.config.disableSkipping || channelWhitelisted || (channelID === null && Config.config.forceChannelCheck)){
|
||||||
@@ -1119,6 +1122,36 @@ async function updateVisibilityOfPlayerControlsButton(): Promise<boolean> {
|
|||||||
return createdButtons;
|
return createdButtons;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used for submitting. This will use the HTML displayed number when required as the video's
|
||||||
|
* current time is out of date while scrubbing or at the end of the video. This is not needed
|
||||||
|
* for sponsor skipping as the video is not playing during these times.
|
||||||
|
*/
|
||||||
|
function getRoughCurrentTime(): number {
|
||||||
|
let htmlCurrentTimeString = document.querySelector(".ytp-time-current").textContent;
|
||||||
|
let htmlDurationString = document.querySelector(".ytp-time-duration").textContent;
|
||||||
|
|
||||||
|
// Used to check if endscreen content is visible
|
||||||
|
let endScreenContent = document.querySelector(".ytp-endscreen-content");
|
||||||
|
// Used to check autoplay display
|
||||||
|
let autoPlayDisplay: HTMLDivElement = document.querySelector(".ytp-upnext");
|
||||||
|
|
||||||
|
if (htmlCurrentTimeString == htmlDurationString
|
||||||
|
|| endScreenContent.childElementCount > 0 || autoPlayDisplay.style.display !== "none") {
|
||||||
|
// At the end of the video
|
||||||
|
return video.duration;
|
||||||
|
}
|
||||||
|
|
||||||
|
let htmlCurrentTimeSections = htmlCurrentTimeString.split(":")[0];
|
||||||
|
let htmlCurrentTime: number = parseInt(htmlCurrentTimeSections[0]) * 60 + parseInt(htmlCurrentTimeSections[1]);
|
||||||
|
|
||||||
|
if (Math.abs(video.currentTime - htmlCurrentTime) > 3) {
|
||||||
|
return htmlCurrentTime;
|
||||||
|
} else {
|
||||||
|
return video.currentTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function startSponsorClicked() {
|
function startSponsorClicked() {
|
||||||
//it can't update to this info yet
|
//it can't update to this info yet
|
||||||
closeInfoMenu();
|
closeInfoMenu();
|
||||||
@@ -1128,11 +1161,11 @@ function startSponsorClicked() {
|
|||||||
//add to sponsorTimes
|
//add to sponsorTimes
|
||||||
if (sponsorTimesSubmitting.length > 0 && sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment.length < 2) {
|
if (sponsorTimesSubmitting.length > 0 && sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment.length < 2) {
|
||||||
//it is an end time
|
//it is an end time
|
||||||
sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[1] = video.currentTime;
|
sponsorTimesSubmitting[sponsorTimesSubmitting.length - 1].segment[1] = getRoughCurrentTime();
|
||||||
} else {
|
} else {
|
||||||
//it is a start time
|
//it is a start time
|
||||||
sponsorTimesSubmitting.push({
|
sponsorTimesSubmitting.push({
|
||||||
segment: [video.currentTime],
|
segment: [getRoughCurrentTime()],
|
||||||
UUID: null,
|
UUID: null,
|
||||||
// Default to sponsor
|
// Default to sponsor
|
||||||
category: "sponsor"
|
category: "sponsor"
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ interface ContentContainer {
|
|||||||
resetSponsorSubmissionNotice: () => void,
|
resetSponsorSubmissionNotice: () => void,
|
||||||
changeStartSponsorButton: (showStartSponsor: any, uploadButtonVisible: any) => Promise<boolean>,
|
changeStartSponsorButton: (showStartSponsor: any, uploadButtonVisible: any) => Promise<boolean>,
|
||||||
previewTime: (time: number) => void,
|
previewTime: (time: number) => void,
|
||||||
videoInfo: any
|
videoInfo: any,
|
||||||
|
getRoughCurrentTime: () => number
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user