mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2024-09-20 04:53:43 +02:00
Added unlisted check option.
https://github.com/ajayyy/SponsorBlock/pull/224 Co-authored-by: OfficialNoob <OfficialNoob@users.noreply.github.com>
This commit is contained in:
parent
6159605afd
commit
b7e83a0efe
4 changed files with 70 additions and 3 deletions
|
@ -419,5 +419,14 @@
|
|||
},
|
||||
"areYouSureReset": {
|
||||
"message": "Are you sure you would like to reset this?"
|
||||
},
|
||||
"confirmPrivacy": {
|
||||
"message": "The video has been detected as unlisted. Click cancel if you do not want to check for sponsors."
|
||||
},
|
||||
"unlistedCheck": {
|
||||
"message": "Ignore Unlisted Videos"
|
||||
},
|
||||
"whatUnlistedCheck": {
|
||||
"message": "This setting will significantly slow down SponsorBlock. Sponsor lookups require sending the video ID to the server. If you are concerned about unlisted video IDs being sent over the internet, enable this option."
|
||||
}
|
||||
}
|
||||
|
|
|
@ -261,6 +261,23 @@
|
|||
|
||||
<div class="small-description">__MSG_whatViewTracking__</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<div option-type="toggle" sync-option="checkForUnlistedVideos">
|
||||
<label class="switch-container" label-name="__MSG_unlistedCheck__">
|
||||
<label class="switch">
|
||||
<input type="checkbox">
|
||||
<span class="slider round"></span>
|
||||
</label>
|
||||
</label>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
||||
<div class="small-description">__MSG_whatUnlistedCheck__</div>
|
||||
</div>
|
||||
|
||||
<br/>
|
||||
<br/>
|
||||
|
|
|
@ -24,7 +24,8 @@ interface SBConfig {
|
|||
autoUpvote: boolean,
|
||||
supportInvidious: boolean,
|
||||
serverAddress: string,
|
||||
minDuration: number
|
||||
minDuration: number,
|
||||
checkForUnlistedVideos: boolean
|
||||
}
|
||||
|
||||
interface SBObject {
|
||||
|
@ -119,7 +120,8 @@ var Config: SBObject = {
|
|||
autoUpvote: true,
|
||||
supportInvidious: false,
|
||||
serverAddress: CompileConfig.serverAddress,
|
||||
minDuration: 0
|
||||
minDuration: 0,
|
||||
checkForUnlistedVideos: false
|
||||
},
|
||||
localConfig: null,
|
||||
config: null
|
||||
|
|
|
@ -230,7 +230,7 @@ function resetValues() {
|
|||
sponsorDataFound = false;
|
||||
}
|
||||
|
||||
function videoIDChange(id) {
|
||||
async function videoIDChange(id) {
|
||||
//if the id has not changed return
|
||||
if (sponsorVideoID === id) return;
|
||||
|
||||
|
@ -242,6 +242,19 @@ function videoIDChange(id) {
|
|||
//id is not valid
|
||||
if (!id) return;
|
||||
|
||||
// Wait for options to be ready
|
||||
await utils.wait(() => Config.config !== null, 5000, 1);
|
||||
|
||||
// If enabled, it will check if this video is private or unlisted and double check with the user if the sponsors should be looked up
|
||||
if (Config.config.checkForUnlistedVideos) {
|
||||
await utils.wait(isPrivacyInfoAvailable);
|
||||
|
||||
if (isUnlisted()) {
|
||||
let shouldContinue = confirm(chrome.i18n.getMessage("confirmPrivacy"));
|
||||
if(!shouldContinue) return;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: Use a better method here than using type any
|
||||
// This is done to be able to do channelIDPromise.isFulfilled and channelIDPromise.isRejected
|
||||
let channelIDPromise: any = utils.wait(getChannelID);
|
||||
|
@ -1121,6 +1134,32 @@ function getSponsorTimesMessage(sponsorTimes) {
|
|||
return sponsorTimesMessage;
|
||||
}
|
||||
|
||||
// Privacy utils
|
||||
function isPrivacyInfoAvailable(): boolean {
|
||||
if(document.location.pathname.startsWith("/embed/")) return true;
|
||||
return document.getElementsByClassName("style-scope ytd-badge-supported-renderer").length >= 2;
|
||||
}
|
||||
|
||||
/**
|
||||
* What privacy level is this YouTube video?
|
||||
*/
|
||||
function getPrivacy(): string {
|
||||
if(document.location.pathname.startsWith("/embed/")) return "Public";
|
||||
|
||||
let privacyElement = <HTMLElement> document.getElementsByClassName("style-scope ytd-badge-supported-renderer")[2];
|
||||
return privacyElement.innerText;
|
||||
}
|
||||
|
||||
/**
|
||||
* Is this an unlisted YouTube video.
|
||||
* Assumes that the the privacy info is available.
|
||||
*/
|
||||
function isUnlisted(): boolean {
|
||||
let privacyElement = <HTMLElement> document.getElementsByClassName("style-scope ytd-badge-supported-renderer")[2];
|
||||
|
||||
return privacyElement.innerText.toLocaleLowerCase() === "unlisted";
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the CSS to the page if needed. Required on optional sites with Chrome.
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue