mirror of
https://github.com/ajayyy/SponsorBlock.git
synced 2025-12-08 04:27:15 +03:00
@@ -124,6 +124,15 @@
|
|||||||
"leftTimes": {
|
"leftTimes": {
|
||||||
"message": "You seem to have left some sponsor times unsubmitted. Go back to that page to submit them (they are not deleted)."
|
"message": "You seem to have left some sponsor times unsubmitted. Go back to that page to submit them (they are not deleted)."
|
||||||
},
|
},
|
||||||
|
"clearTimes": {
|
||||||
|
"message": "Clear Sponsor Times"
|
||||||
|
},
|
||||||
|
"openPopup": {
|
||||||
|
"message": "Open SponsorBlock Popup"
|
||||||
|
},
|
||||||
|
"SubmitTimes": {
|
||||||
|
"message": "Submit Sponsor Times"
|
||||||
|
},
|
||||||
"submitCheck": {
|
"submitCheck": {
|
||||||
"message": "Are you sure you want to submit this?"
|
"message": "Are you sure you want to submit this?"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,12 +4,12 @@
|
|||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
"fullName": {
|
"fullName": {
|
||||||
"message": "SponsorBlock pour YouTube - Enlève les endossements",
|
"message": "SponsorBlock pour YouTube - Enlève les messages commerciaux et publicités intégrées",
|
||||||
"description": "Name of the extension."
|
"description": "Name of the extension."
|
||||||
},
|
},
|
||||||
|
|
||||||
"Description": {
|
"Description": {
|
||||||
"message": "Enlève les endossements dans les vidéos YouTube. Soummettre les endossements dans les vidéos que vous regardez pour aidez les autres.",
|
"message": "Passe automatiquement les messages commerciaux intégrés dans les vidéos YouTube. Soumettez les segments commerciaux dans les vidéos que vous regardez pour aidez les autres.",
|
||||||
"description": "Description of the extension."
|
"description": "Description of the extension."
|
||||||
},
|
},
|
||||||
"helpPage": {
|
"helpPage": {
|
||||||
@@ -19,40 +19,40 @@
|
|||||||
"message": "Soumission invalide"
|
"message": "Soumission invalide"
|
||||||
},
|
},
|
||||||
"429": {
|
"429": {
|
||||||
"message": "Vous avez soummetez trop de endossements, il y a vraiment cette montant?"
|
"message": "Vous cherchez à envoyer beaucoup de segments, il y en a vraiment autant ?"
|
||||||
},
|
},
|
||||||
"409": {
|
"409": {
|
||||||
"message": "Déjas soummis"
|
"message": "Déja soumis"
|
||||||
},
|
},
|
||||||
"502": {
|
"502": {
|
||||||
"message": "Le serveur ne fonctionne pas. Message le développeur."
|
"message": "Le serveur ne fonctionne pas. Contactez le développeur."
|
||||||
},
|
},
|
||||||
"channelWhitelisted": {
|
"channelWhitelisted": {
|
||||||
"message": "Cette channel est sur la liste blanche!"
|
"message": "Cette chaine est sur la liste blanche !"
|
||||||
},
|
},
|
||||||
"Sponsor": {
|
"Sponsor": {
|
||||||
"message": "endossement"
|
"message": "message commercial"
|
||||||
},
|
},
|
||||||
"Sponsors": {
|
"Sponsors": {
|
||||||
"message": "endossements"
|
"message": "messages commerciaux"
|
||||||
},
|
},
|
||||||
"Segment": {
|
"Segment": {
|
||||||
"message": "section d'endossement"
|
"message": "segment de message commercial"
|
||||||
},
|
},
|
||||||
"Segments": {
|
"Segments": {
|
||||||
"message": "section d'endossements"
|
"message": "segments de message commercial"
|
||||||
},
|
},
|
||||||
"noticeTitle": {
|
"noticeTitle": {
|
||||||
"message": "Endossement Passer"
|
"message": "Message passé"
|
||||||
},
|
},
|
||||||
"reportButtonTitle": {
|
"reportButtonTitle": {
|
||||||
"message": "Incorrect"
|
"message": "Incorrect"
|
||||||
},
|
},
|
||||||
"reportButtonInfo": {
|
"reportButtonInfo": {
|
||||||
"message": "Informe que cette endossement est incorrect ou n'existe pas."
|
"message": "Signaler que ce segment est incorrect ou n'existe pas."
|
||||||
},
|
},
|
||||||
"Dismiss": {
|
"Dismiss": {
|
||||||
"message": "Ferme"
|
"message": "Fermer"
|
||||||
},
|
},
|
||||||
"Loading": {
|
"Loading": {
|
||||||
"message": "Chargement en cours..."
|
"message": "Chargement en cours..."
|
||||||
@@ -61,69 +61,69 @@
|
|||||||
"message": "Minutes"
|
"message": "Minutes"
|
||||||
},
|
},
|
||||||
"Secs": {
|
"Secs": {
|
||||||
"message": "Seconds"
|
"message": "Secondes"
|
||||||
},
|
},
|
||||||
"Hide": {
|
"Hide": {
|
||||||
"message": "Ne Montre Jaimais"
|
"message": "Ne plus montrer"
|
||||||
},
|
},
|
||||||
"hitGoBack": {
|
"hitGoBack": {
|
||||||
"message": "Clique retourne pour si vous avez manqué parti."
|
"message": "Cliquez sur revenir en arrière pour revenir avant le saut du segment"
|
||||||
},
|
},
|
||||||
"unskip": {
|
"unskip": {
|
||||||
"message": "Retourne"
|
"message": "Revenir en arrière"
|
||||||
},
|
},
|
||||||
"reskip": {
|
"reskip": {
|
||||||
"message": "Resaute"
|
"message": "Sauter"
|
||||||
},
|
},
|
||||||
"paused": {
|
"paused": {
|
||||||
"message": "Pause"
|
"message": "En pause"
|
||||||
},
|
},
|
||||||
"confirmMSG": {
|
"confirmMSG": {
|
||||||
"message": "\n\nPour modifier ou enlever des soumissions, clique sur le bouton d'info."
|
"message": "\n\nPour modifier ou enlever des soumissions, cliquez sur le bouton d'info."
|
||||||
},
|
},
|
||||||
"clearThis": {
|
"clearThis": {
|
||||||
"message": "Êtes-vous certaines vous voulez enlever vos soumissions?\n\n"
|
"message": "Êtes-vous certain(e) que vous voulez enlever vos soumissions ?\n\n"
|
||||||
},
|
},
|
||||||
"Unknown": {
|
"Unknown": {
|
||||||
"message": "Erreur, essayer encore plus tard."
|
"message": "Erreur, essayer plus tard."
|
||||||
},
|
},
|
||||||
"sponsorFound": {
|
"sponsorFound": {
|
||||||
"message": "Cette vidéo est dans le database!"
|
"message": "Les messages commerciaux sont déjà dans notre base de donnée pour cette vidéo !"
|
||||||
},
|
},
|
||||||
"sponsor404": {
|
"sponsor404": {
|
||||||
"message": "Rien d'endossements trouvé"
|
"message": "Pas de messages trouvés"
|
||||||
},
|
},
|
||||||
"sponsorStart": {
|
"sponsorStart": {
|
||||||
"message": "Endossement Commence Maintenant"
|
"message": "Début du message"
|
||||||
},
|
},
|
||||||
"sponsorEnd": {
|
"sponsorEnd": {
|
||||||
"message": "Endossement Arête Maintenant"
|
"message": "Fin du message"
|
||||||
},
|
},
|
||||||
"noVideoID": {
|
"noVideoID": {
|
||||||
"message": "Ceci n'est pas une tab de YouTube, ou vous avez cliqué trop tôt. \n Si vous savez que ceci est une tab YouTube, ferme ce menu et essayé encore."
|
"message": "Ceci n'est pas un onglet YouTube, ou vous avez cliqué trop tôt. \n Si vous êtes sur(e) que c'est un onglet YouTube, fermez ce menu et réessayer."
|
||||||
},
|
},
|
||||||
"success": {
|
"success": {
|
||||||
"message": "Succès !"
|
"message": "Succès !"
|
||||||
},
|
},
|
||||||
"voted": {
|
"voted": {
|
||||||
"message": "Voté!"
|
"message": "A voté !"
|
||||||
},
|
},
|
||||||
"voteFail": {
|
"voteFail": {
|
||||||
"message": "Vous avez déjà voté la même façon."
|
"message": "Vous avez déjà voté pour ce choix auparavant."
|
||||||
},
|
},
|
||||||
"serverDown": {
|
"serverDown": {
|
||||||
"message": "Le serveur ne fonctionne pas. Message le développeur."
|
"message": "Le serveur ne fonctionne pas. Contactez le développeur."
|
||||||
},
|
},
|
||||||
"connectionError": {
|
"connectionError": {
|
||||||
"message": "Erreur. Code: "
|
"message": "Erreur de connexion, Code : "
|
||||||
},
|
},
|
||||||
"wantToSubmit": {
|
"wantToSubmit": {
|
||||||
"message": "Voulez-vous soumettre les endossements sur le vidéo"
|
"message": "Voulez-vous soumettre les messages pour cette vidéo"
|
||||||
},
|
},
|
||||||
"leftTimes": {
|
"leftTimes": {
|
||||||
"message": "Vous avez laissé les endossements qui n'étaient pas soumis. Retournez à la page pour les soumettre (Ils ne sont pas enlevés)."
|
"message": "Vous avez laissé des messages non soumis. Retournez sur la vidéo pour les soumettre (ils ont été conservés)."
|
||||||
},
|
},
|
||||||
"submitCheck": {
|
"submitCheck": {
|
||||||
"message": "Êtes-vous certaines vous voulez soumettre?"
|
"message": "Soumettre ce(s) message(s) ?"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -147,11 +147,29 @@ function submitVote(type, UUID, callback) {
|
|||||||
function submitTimes(videoID, callback) {
|
function submitTimes(videoID, callback) {
|
||||||
//get the video times from storage
|
//get the video times from storage
|
||||||
let sponsorTimeKey = 'sponsorTimes' + videoID;
|
let sponsorTimeKey = 'sponsorTimes' + videoID;
|
||||||
chrome.storage.sync.get([sponsorTimeKey, "userID"], function(result) {
|
chrome.storage.sync.get([sponsorTimeKey, "userID"], async function(result) {
|
||||||
let sponsorTimes = result[sponsorTimeKey];
|
let sponsorTimes = result[sponsorTimeKey];
|
||||||
let userID = result.userID;
|
let userID = result.userID;
|
||||||
|
|
||||||
if (sponsorTimes != undefined && sponsorTimes.length > 0) {
|
if (sponsorTimes != undefined && sponsorTimes.length > 0) {
|
||||||
|
let durationResult = await new Promise((resolve, reject) => {
|
||||||
|
chrome.tabs.query({
|
||||||
|
active: true,
|
||||||
|
currentWindow: true
|
||||||
|
}, function(tabs) {
|
||||||
|
chrome.tabs.sendMessage(tabs[0].id, {
|
||||||
|
message: "getVideoDuration"
|
||||||
|
}, (response) => resolve(response));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
//check if a sponsor exceeds the duration of the video
|
||||||
|
for (let i = 0; i < sponsorTimes.length; i++) {
|
||||||
|
if (sponsorTimes[i][1] > durationResult.duration) {
|
||||||
|
sponsorTimes[i][1] = durationResult.duration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//submit these times
|
//submit these times
|
||||||
for (let i = 0; i < sponsorTimes.length; i++) {
|
for (let i = 0; i < sponsorTimes.length; i++) {
|
||||||
//submit the sponsorTime
|
//submit the sponsorTime
|
||||||
|
|||||||
291
content.js
291
content.js
@@ -28,11 +28,13 @@ var channelURL;
|
|||||||
var channelWhitelisted = false;
|
var channelWhitelisted = false;
|
||||||
|
|
||||||
// create preview bar
|
// create preview bar
|
||||||
var previewBar;
|
var previewBar = null;
|
||||||
|
|
||||||
if (id = getYouTubeVideoID(document.URL)) { // Direct Links
|
//the player controls on the YouTube player
|
||||||
videoIDChange(id);
|
var controls = null;
|
||||||
}
|
|
||||||
|
// Direct Links
|
||||||
|
videoIDChange(getYouTubeVideoID(document.URL));
|
||||||
|
|
||||||
//the last time looked at (used to see if this time is in the interval)
|
//the last time looked at (used to see if this time is in the interval)
|
||||||
var lastTime = -1;
|
var lastTime = -1;
|
||||||
@@ -90,11 +92,7 @@ function messageListener(request, sender, sendResponse) {
|
|||||||
//messages from popup script
|
//messages from popup script
|
||||||
|
|
||||||
if (request.message == "update") {
|
if (request.message == "update") {
|
||||||
if(id = getYouTubeVideoID(document.URL)){
|
videoIDChange(getYouTubeVideoID(document.URL));
|
||||||
videoIDChange(id);
|
|
||||||
} else {
|
|
||||||
resetValues();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.message == "sponsorStart") {
|
if (request.message == "sponsorStart") {
|
||||||
@@ -124,10 +122,16 @@ function messageListener(request, sender, sendResponse) {
|
|||||||
|
|
||||||
if (request.message == "getVideoID") {
|
if (request.message == "getVideoID") {
|
||||||
sendResponse({
|
sendResponse({
|
||||||
videoID: getYouTubeVideoID(document.URL)
|
videoID: sponsorVideoID
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (request.message == "getVideoDuration") {
|
||||||
|
sendResponse({
|
||||||
|
duration: v.duration
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (request.message == "skipToTime") {
|
if (request.message == "skipToTime") {
|
||||||
v.currentTime = request.time;
|
v.currentTime = request.time;
|
||||||
}
|
}
|
||||||
@@ -152,7 +156,7 @@ function messageListener(request, sender, sendResponse) {
|
|||||||
|
|
||||||
if (request.message == "whitelistChange") {
|
if (request.message == "whitelistChange") {
|
||||||
channelWhitelisted = request.value;
|
channelWhitelisted = request.value;
|
||||||
sponsorsLookup(getYouTubeVideoID(document.URL));
|
sponsorsLookup(sponsorVideoID);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (request.message == "showNoticeAgain") {
|
if (request.message == "showNoticeAgain") {
|
||||||
@@ -208,20 +212,30 @@ function resetValues() {
|
|||||||
//reset sponsor times
|
//reset sponsor times
|
||||||
sponsorTimes = null;
|
sponsorTimes = null;
|
||||||
UUIDs = null;
|
UUIDs = null;
|
||||||
sponsorVideoID = id;
|
|
||||||
sponsorLookupRetries = 0;
|
sponsorLookupRetries = 0;
|
||||||
|
|
||||||
//empty the preview bar
|
//empty the preview bar
|
||||||
|
if (previewBar !== null) {
|
||||||
previewBar.set([], [], 0);
|
previewBar.set([], [], 0);
|
||||||
|
}
|
||||||
|
|
||||||
//reset sponsor data found check
|
//reset sponsor data found check
|
||||||
sponsorDataFound = false;
|
sponsorDataFound = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function videoIDChange(id) {
|
function videoIDChange(id) {
|
||||||
//not a url change
|
//if the id has not changed return
|
||||||
if (sponsorVideoID == id) return;
|
if (sponsorVideoID === id) return;
|
||||||
|
|
||||||
|
//set the global videoID
|
||||||
|
sponsorVideoID = id;
|
||||||
|
|
||||||
|
resetValues();
|
||||||
|
|
||||||
|
//id is not valid
|
||||||
|
if (!id) return;
|
||||||
|
|
||||||
|
//setup the preview bar
|
||||||
if (previewBar == null) {
|
if (previewBar == null) {
|
||||||
//create it
|
//create it
|
||||||
let progressBar = document.getElementsByClassName("ytp-progress-bar-container")[0] || document.getElementsByClassName("no-model cue-range-markers")[0];
|
let progressBar = document.getElementsByClassName("ytp-progress-bar-container")[0] || document.getElementsByClassName("no-model cue-range-markers")[0];
|
||||||
@@ -254,8 +268,6 @@ function videoIDChange(id) {
|
|||||||
//close popup
|
//close popup
|
||||||
closeInfoMenu();
|
closeInfoMenu();
|
||||||
|
|
||||||
resetValues();
|
|
||||||
|
|
||||||
sponsorsLookup(id);
|
sponsorsLookup(id);
|
||||||
|
|
||||||
//make sure everything is properly added
|
//make sure everything is properly added
|
||||||
@@ -265,6 +277,7 @@ function videoIDChange(id) {
|
|||||||
sponsorTimesSubmitting = [];
|
sponsorTimesSubmitting = [];
|
||||||
|
|
||||||
//see if the onvideo control image needs to be changed
|
//see if the onvideo control image needs to be changed
|
||||||
|
wait(getControls).then(result => {
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
message: "getSponsorTimes",
|
message: "getSponsorTimes",
|
||||||
videoID: id
|
videoID: id
|
||||||
@@ -287,6 +300,7 @@ function videoIDChange(id) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
//see if video controls buttons should be added
|
//see if video controls buttons should be added
|
||||||
chrome.storage.sync.get(["hideVideoPlayerControls"], function(result) {
|
chrome.storage.sync.get(["hideVideoPlayerControls"], function(result) {
|
||||||
@@ -329,6 +343,9 @@ function sponsorsLookup(id) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//check database for sponsor times
|
//check database for sponsor times
|
||||||
|
|
||||||
|
//made true once a setTimeout has been created to try again after a server error
|
||||||
|
let recheckStarted = false;
|
||||||
sendRequestToServer('GET', "/api/getVideoSponsorTimes?videoID=" + id, function(xmlhttp) {
|
sendRequestToServer('GET', "/api/getVideoSponsorTimes?videoID=" + id, function(xmlhttp) {
|
||||||
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
||||||
sponsorDataFound = true;
|
sponsorDataFound = true;
|
||||||
@@ -364,7 +381,9 @@ function sponsorsLookup(id) {
|
|||||||
});
|
});
|
||||||
|
|
||||||
sponsorLookupRetries = 0;
|
sponsorLookupRetries = 0;
|
||||||
} else if (xmlhttp.readyState == 4 && sponsorLookupRetries < 90) {
|
} else if (xmlhttp.readyState == 4 && sponsorLookupRetries < 90 && !recheckStarted) {
|
||||||
|
recheckStarted = true;
|
||||||
|
|
||||||
//some error occurred, try again in a second
|
//some error occurred, try again in a second
|
||||||
setTimeout(() => sponsorsLookup(id), 1000);
|
setTimeout(() => sponsorsLookup(id), 1000);
|
||||||
|
|
||||||
@@ -396,7 +415,7 @@ function updatePreviewBar() {
|
|||||||
previewBar.set(allSponsorTimes, types, v.duration);
|
previewBar.set(allSponsorTimes, types, v.duration);
|
||||||
|
|
||||||
//update last video id
|
//update last video id
|
||||||
lastPreviewBarUpdate = getYouTubeVideoID(document.URL);
|
lastPreviewBarUpdate = sponsorVideoID;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getChannelID() {
|
function getChannelID() {
|
||||||
@@ -539,55 +558,63 @@ function reskipSponsorTime(UUID) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Adds a sponsorship starts button to the player controls
|
|
||||||
function addPlayerControlsButton() {
|
|
||||||
if (document.getElementById("startSponsorButton") != null) {
|
|
||||||
//it's already added
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
let startSponsorButton = document.createElement("button");
|
|
||||||
startSponsorButton.id = "startSponsorButton";
|
|
||||||
startSponsorButton.draggable = false;
|
|
||||||
startSponsorButton.className = "ytp-button playerButton";
|
|
||||||
startSponsorButton.setAttribute("title", chrome.i18n.getMessage("sponsorStart"));
|
|
||||||
startSponsorButton.addEventListener("click", startSponsorClicked);
|
|
||||||
|
|
||||||
let startSponsorImage = document.createElement("img");
|
|
||||||
startSponsorImage.id = "startSponsorImage";
|
|
||||||
startSponsorImage.draggable = false;
|
|
||||||
startSponsorImage.className = "playerButtonImage";
|
|
||||||
startSponsorImage.src = chrome.extension.getURL("icons/PlayerStartIconSponsorBlocker256px.png");
|
|
||||||
|
|
||||||
//add the image to the button
|
|
||||||
startSponsorButton.appendChild(startSponsorImage);
|
|
||||||
|
|
||||||
let controls = document.getElementsByClassName("ytp-right-controls");
|
|
||||||
let referenceNode = controls[controls.length - 1];
|
|
||||||
|
|
||||||
if (referenceNode == undefined) {
|
|
||||||
//page not loaded yet
|
|
||||||
setTimeout(addPlayerControlsButton, 100);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
referenceNode.prepend(startSponsorButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
function removePlayerControlsButton() {
|
function removePlayerControlsButton() {
|
||||||
|
if (!sponsorVideoID) return;
|
||||||
|
|
||||||
document.getElementById("startSponsorButton").style.display = "none";
|
document.getElementById("startSponsorButton").style.display = "none";
|
||||||
document.getElementById("submitButton").style.display = "none";
|
document.getElementById("submitButton").style.display = "none";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function createButton(baseID, title, callback, imageName, isDraggable=false) {
|
||||||
|
if (document.getElementById(baseID + "Button") != null) return;
|
||||||
|
|
||||||
|
// Button HTML
|
||||||
|
let newButton = document.createElement("button");
|
||||||
|
newButton.draggable = isDraggable;
|
||||||
|
newButton.id = baseID + "Button";
|
||||||
|
newButton.className = "ytp-button playerButton";
|
||||||
|
newButton.setAttribute("title", chrome.i18n.getMessage(title));
|
||||||
|
newButton.addEventListener("click", callback);
|
||||||
|
|
||||||
|
// Image HTML
|
||||||
|
let newButtonImage = document.createElement("img");
|
||||||
|
newButton.draggable = isDraggable;
|
||||||
|
newButtonImage.id = baseID + "Image";
|
||||||
|
newButtonImage.className = "playerButtonImage";
|
||||||
|
newButtonImage.src = chrome.extension.getURL("icons/" + imageName);
|
||||||
|
|
||||||
|
// Append image to button
|
||||||
|
newButton.appendChild(newButtonImage);
|
||||||
|
|
||||||
|
// Add the button to player
|
||||||
|
controls.prepend(newButton);
|
||||||
|
}
|
||||||
|
|
||||||
|
function getControls() {
|
||||||
|
let controls = document.getElementsByClassName("ytp-right-controls");
|
||||||
|
return (!controls || controls.length === 0) ? false : controls[controls.length - 1]
|
||||||
|
};
|
||||||
|
|
||||||
|
//adds all the player controls buttons
|
||||||
|
function createButtons() {
|
||||||
|
wait(getControls).then(result => {
|
||||||
|
//set global controls variable
|
||||||
|
controls = result;
|
||||||
|
|
||||||
|
// Add button if does not already exist in html
|
||||||
|
createButton("startSponsor", "sponsorStart", startSponsorClicked, "PlayerStartIconSponsorBlocker256px.png");
|
||||||
|
createButton("info", "openPopup", openInfoMenu, "PlayerInfoIconSponsorBlocker256px.png")
|
||||||
|
createButton("delete", "clearTimes", clearSponsorTimes, "PlayerDeleteIconSponsorBlocker256px.png");
|
||||||
|
createButton("submit", "SubmitTimes", submitSponsorTimes, "PlayerUploadIconSponsorBlocker256px.png");
|
||||||
|
});
|
||||||
|
}
|
||||||
//adds or removes the player controls button to what it should be
|
//adds or removes the player controls button to what it should be
|
||||||
function updateVisibilityOfPlayerControlsButton() {
|
function updateVisibilityOfPlayerControlsButton() {
|
||||||
//not on a proper video yet
|
//not on a proper video yet
|
||||||
if (!getYouTubeVideoID(document.URL)) return;
|
if (!sponsorVideoID) return;
|
||||||
|
|
||||||
|
createButtons();
|
||||||
|
|
||||||
addPlayerControlsButton();
|
|
||||||
addInfoButton();
|
|
||||||
addDeleteButton();
|
|
||||||
addSubmitButton();
|
|
||||||
if (hideVideoPlayerControls) {
|
if (hideVideoPlayerControls) {
|
||||||
removePlayerControlsButton();
|
removePlayerControlsButton();
|
||||||
}
|
}
|
||||||
@@ -609,7 +636,7 @@ function startSponsorClicked() {
|
|||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
message: "addSponsorTime",
|
message: "addSponsorTime",
|
||||||
time: v.currentTime,
|
time: v.currentTime,
|
||||||
videoID: getYouTubeVideoID(document.URL)
|
videoID: sponsorVideoID
|
||||||
}, function(response) {
|
}, function(response) {
|
||||||
//see if the sponsorTimesSubmitting needs to be updated
|
//see if the sponsorTimesSubmitting needs to be updated
|
||||||
updateSponsorTimesSubmitting();
|
updateSponsorTimesSubmitting();
|
||||||
@@ -619,7 +646,7 @@ function startSponsorClicked() {
|
|||||||
function updateSponsorTimesSubmitting() {
|
function updateSponsorTimesSubmitting() {
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
message: "getSponsorTimes",
|
message: "getSponsorTimes",
|
||||||
videoID: getYouTubeVideoID(document.URL)
|
videoID: sponsorVideoID
|
||||||
}, function(response) {
|
}, function(response) {
|
||||||
if (response != undefined) {
|
if (response != undefined) {
|
||||||
let sponsorTimes = response.sponsorTimes;
|
let sponsorTimes = response.sponsorTimes;
|
||||||
@@ -634,14 +661,18 @@ function updateSponsorTimesSubmitting() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) {
|
//is the submit button on the player loaded yet
|
||||||
//if it isn't visible, there is no data
|
function isSubmitButtonLoaded() {
|
||||||
if (uploadButtonVisible && !hideDeleteButtonPlayerControls) {
|
return document.getElementById("submitButton") !== null;
|
||||||
document.getElementById("deleteButton").style.display = "unset";
|
|
||||||
} else {
|
|
||||||
document.getElementById("deleteButton").style.display = "none";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) {
|
||||||
|
if(!sponsorVideoID) return false;
|
||||||
|
wait(isSubmitButtonLoaded).then(result => {
|
||||||
|
//if it isn't visible, there is no data
|
||||||
|
let shouldHide = (uploadButtonVisible && !hideDeleteButtonPlayerControls) ? "unset":"none"
|
||||||
|
document.getElementById("deleteButton").style.display = shouldHide;
|
||||||
|
|
||||||
if (showStartSponsor) {
|
if (showStartSponsor) {
|
||||||
showingStartSponsor = true;
|
showingStartSponsor = true;
|
||||||
document.getElementById("startSponsorImage").src = chrome.extension.getURL("icons/PlayerStartIconSponsorBlocker256px.png");
|
document.getElementById("startSponsorImage").src = chrome.extension.getURL("icons/PlayerStartIconSponsorBlocker256px.png");
|
||||||
@@ -661,124 +692,13 @@ function changeStartSponsorButton(showStartSponsor, uploadButtonVisible) {
|
|||||||
//disable submit button
|
//disable submit button
|
||||||
document.getElementById("submitButton").style.display = "none";
|
document.getElementById("submitButton").style.display = "none";
|
||||||
}
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function toggleStartSponsorButton() {
|
function toggleStartSponsorButton() {
|
||||||
changeStartSponsorButton(!showingStartSponsor, true);
|
changeStartSponsorButton(!showingStartSponsor, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
//shows the info button on the video player
|
|
||||||
function addInfoButton() {
|
|
||||||
if (document.getElementById("infoButton") != null) {
|
|
||||||
//it's already added
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//make a submit button
|
|
||||||
let infoButton = document.createElement("button");
|
|
||||||
infoButton.id = "infoButton";
|
|
||||||
infoButton.draggable = false;
|
|
||||||
infoButton.className = "ytp-button playerButton";
|
|
||||||
infoButton.setAttribute("title", "Open SponsorBlock Popup");
|
|
||||||
infoButton.addEventListener("click", openInfoMenu);
|
|
||||||
|
|
||||||
let infoImage = document.createElement("img");
|
|
||||||
infoImage.id = "infoButtonImage";
|
|
||||||
infoImage.draggable = false;
|
|
||||||
infoImage.className = "playerButtonImage";
|
|
||||||
infoImage.src = chrome.extension.getURL("icons/PlayerInfoIconSponsorBlocker256px.png");
|
|
||||||
|
|
||||||
//add the image to the button
|
|
||||||
infoButton.appendChild(infoImage);
|
|
||||||
|
|
||||||
let controls = document.getElementsByClassName("ytp-right-controls");
|
|
||||||
let referenceNode = controls[controls.length - 1];
|
|
||||||
|
|
||||||
if (referenceNode == undefined) {
|
|
||||||
//page not loaded yet
|
|
||||||
setTimeout(addInfoButton, 100);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
referenceNode.prepend(infoButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
//shows the delete button on the video player
|
|
||||||
function addDeleteButton() {
|
|
||||||
if (document.getElementById("deleteButton") != null) {
|
|
||||||
//it's already added
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//make a submit button
|
|
||||||
let deleteButton = document.createElement("button");
|
|
||||||
deleteButton.id = "deleteButton";
|
|
||||||
deleteButton.draggable = false;
|
|
||||||
deleteButton.className = "ytp-button playerButton";
|
|
||||||
deleteButton.setAttribute("title", "Clear Sponsor Times");
|
|
||||||
deleteButton.addEventListener("click", clearSponsorTimes);
|
|
||||||
//hide it at the start
|
|
||||||
deleteButton.style.display = "none";
|
|
||||||
|
|
||||||
let deleteImage = document.createElement("img");
|
|
||||||
deleteImage.id = "deleteButtonImage";
|
|
||||||
deleteImage.draggable = false;
|
|
||||||
deleteImage.className = "playerButtonImage";
|
|
||||||
deleteImage.src = chrome.extension.getURL("icons/PlayerDeleteIconSponsorBlocker256px.png");
|
|
||||||
|
|
||||||
//add the image to the button
|
|
||||||
deleteButton.appendChild(deleteImage);
|
|
||||||
|
|
||||||
let controls = document.getElementsByClassName("ytp-right-controls");
|
|
||||||
let referenceNode = controls[controls.length - 1];
|
|
||||||
|
|
||||||
if (referenceNode == undefined) {
|
|
||||||
//page not loaded yet
|
|
||||||
setTimeout(addDeleteButton, 100);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
referenceNode.prepend(deleteButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
//shows the submit button on the video player
|
|
||||||
function addSubmitButton() {
|
|
||||||
if (document.getElementById("submitButton") != null) {
|
|
||||||
//it's already added
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//make a submit button
|
|
||||||
let submitButton = document.createElement("button");
|
|
||||||
submitButton.id = "submitButton";
|
|
||||||
submitButton.draggable = false;
|
|
||||||
submitButton.className = "ytp-button playerButton";
|
|
||||||
submitButton.setAttribute("title", "Submit Sponsor Times");
|
|
||||||
submitButton.addEventListener("click", submitSponsorTimes);
|
|
||||||
//hide it at the start
|
|
||||||
submitButton.style.display = "none";
|
|
||||||
|
|
||||||
let submitImage = document.createElement("img");
|
|
||||||
submitImage.id = "submitButtonImage";
|
|
||||||
submitImage.draggable = false;
|
|
||||||
submitImage.className = "playerButtonImage";
|
|
||||||
submitImage.src = chrome.extension.getURL("icons/PlayerUploadIconSponsorBlocker256px.png");
|
|
||||||
|
|
||||||
//add the image to the button
|
|
||||||
submitButton.appendChild(submitImage);
|
|
||||||
|
|
||||||
let controls = document.getElementsByClassName("ytp-right-controls");
|
|
||||||
let referenceNode = controls[controls.length - 1];
|
|
||||||
|
|
||||||
if (referenceNode == undefined) {
|
|
||||||
//page not loaded yet
|
|
||||||
setTimeout(addSubmitButton, 100);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
referenceNode.prepend(submitButton);
|
|
||||||
}
|
|
||||||
|
|
||||||
function openInfoMenu() {
|
function openInfoMenu() {
|
||||||
if (document.getElementById("sponsorBlockPopupContainer") != null) {
|
if (document.getElementById("sponsorBlockPopupContainer") != null) {
|
||||||
//it's already added
|
//it's already added
|
||||||
@@ -843,7 +763,7 @@ function clearSponsorTimes() {
|
|||||||
//it can't update to this info yet
|
//it can't update to this info yet
|
||||||
closeInfoMenu();
|
closeInfoMenu();
|
||||||
|
|
||||||
let currentVideoID = getYouTubeVideoID(document.URL);
|
let currentVideoID = sponsorVideoID;
|
||||||
|
|
||||||
let sponsorTimeKey = 'sponsorTimes' + currentVideoID;
|
let sponsorTimeKey = 'sponsorTimes' + currentVideoID;
|
||||||
chrome.storage.sync.get([sponsorTimeKey], function(result) {
|
chrome.storage.sync.get([sponsorTimeKey], function(result) {
|
||||||
@@ -946,13 +866,22 @@ function submitSponsorTimes() {
|
|||||||
//it can't update to this info yet
|
//it can't update to this info yet
|
||||||
closeInfoMenu();
|
closeInfoMenu();
|
||||||
|
|
||||||
let currentVideoID = getYouTubeVideoID(document.URL);
|
let currentVideoID = sponsorVideoID;
|
||||||
|
|
||||||
let sponsorTimeKey = 'sponsorTimes' + currentVideoID;
|
let sponsorTimeKey = 'sponsorTimes' + currentVideoID;
|
||||||
chrome.storage.sync.get([sponsorTimeKey], function(result) {
|
chrome.storage.sync.get([sponsorTimeKey], function(result) {
|
||||||
let sponsorTimes = result[sponsorTimeKey];
|
let sponsorTimes = result[sponsorTimeKey];
|
||||||
|
|
||||||
if (sponsorTimes != undefined && sponsorTimes.length > 0) {
|
if (sponsorTimes != undefined && sponsorTimes.length > 0) {
|
||||||
|
//check if a sponsor exceeds the duration of the video
|
||||||
|
for (let i = 0; i < sponsorTimes.length; i++) {
|
||||||
|
if (sponsorTimes[i][1] > v.duration) {
|
||||||
|
sponsorTimes[i][1] = v.duration;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//update sponsorTimes
|
||||||
|
chrome.storage.sync.set({[sponsorTimeKey]: sponsorTimes});
|
||||||
|
|
||||||
let confirmMessage = chrome.i18n.getMessage("submitCheck") + "\n\n" + getSponsorTimesMessage(sponsorTimes);
|
let confirmMessage = chrome.i18n.getMessage("submitCheck") + "\n\n" + getSponsorTimesMessage(sponsorTimes);
|
||||||
confirmMessage += "\n\n" + chrome.i18n.getMessage("confirmMSG");
|
confirmMessage += "\n\n" + chrome.i18n.getMessage("confirmMSG");
|
||||||
if(!confirm(confirmMessage)) return;
|
if(!confirm(confirmMessage)) return;
|
||||||
@@ -970,7 +899,7 @@ function sendSubmitMessage(){
|
|||||||
document.getElementById("submitButtonImage").src = chrome.extension.getURL("icons/PlayerUploadIconSponsorBlocker256px.png");
|
document.getElementById("submitButtonImage").src = chrome.extension.getURL("icons/PlayerUploadIconSponsorBlocker256px.png");
|
||||||
document.getElementById("submitButton").style.animation = "rotate 1s 0s infinite";
|
document.getElementById("submitButton").style.animation = "rotate 1s 0s infinite";
|
||||||
|
|
||||||
let currentVideoID = getYouTubeVideoID(document.URL);
|
let currentVideoID = sponsorVideoID;
|
||||||
|
|
||||||
chrome.runtime.sendMessage({
|
chrome.runtime.sendMessage({
|
||||||
message: "submitTimes",
|
message: "submitTimes",
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "__MSG_fullName__",
|
"name": "__MSG_fullName__",
|
||||||
"short_name": "__MSG_Name__",
|
"short_name": "__MSG_Name__",
|
||||||
"version": "1.1.3",
|
"version": "1.1.4",
|
||||||
"default_locale": "en",
|
"default_locale": "en",
|
||||||
"description": "__MSG_Description__",
|
"description": "__MSG_Description__",
|
||||||
"content_scripts": [
|
"content_scripts": [
|
||||||
|
|||||||
4
popup.js
4
popup.js
@@ -981,7 +981,7 @@ function runThePopup() {
|
|||||||
//set it to false
|
//set it to false
|
||||||
function resetStartTimeChosen() {
|
function resetStartTimeChosen() {
|
||||||
startTimeChosen = false;
|
startTimeChosen = false;
|
||||||
SB.sponsorStart.innerHTML = "SP_START";
|
SB.sponsorStart.innerHTML = chrome.i18n.getMessage("sponsorStart");
|
||||||
}
|
}
|
||||||
|
|
||||||
//hides and shows the submit times button when needed
|
//hides and shows the submit times button when needed
|
||||||
@@ -1278,7 +1278,7 @@ function runThePopup() {
|
|||||||
|
|
||||||
if (chrome.tabs != undefined) {
|
if (chrome.tabs != undefined) {
|
||||||
//add the width restriction (because Firefox)
|
//add the width restriction (because Firefox)
|
||||||
document.getElementById("sponorBlockStyleSheet").sheet.insertRule('.popupBody { width: 300 }', 0);
|
document.getElementById("sponorBlockStyleSheet").sheet.insertRule('.popupBody { width: 325 }', 0);
|
||||||
|
|
||||||
//this means it is actually opened in the popup
|
//this means it is actually opened in the popup
|
||||||
runThePopup();
|
runThePopup();
|
||||||
|
|||||||
Reference in New Issue
Block a user