Compare commits

..

12 Commits

Author SHA1 Message Date
Ajay Ramachandran
9462886539 Merge pull request #55 from ajayyy/experimental
Fixed save button being in the wrong place and made submit button hidden on editing
2019-07-30 21:08:58 -04:00
Ajay Ramachandran
85518d8130 Fixed save button being in the wrong place and made submit button hide on editing. 2019-07-30 21:07:27 -04:00
Ajay Ramachandran
e3aeb0caa1 Update LICENSE 2019-07-30 18:38:07 -04:00
Ajay Ramachandran
7ed72fad40 Merge pull request #52 from ajayyy/experimental
Firefox fixes
2019-07-30 18:22:45 -04:00
Ajay Ramachandran
a2b4f8d141 Update version number 2019-07-30 18:21:23 -04:00
Ajay Ramachandran
6ad1070c44 Merge branch 'master' into experimental 2019-07-30 18:20:27 -04:00
Ajay Ramachandran
b1784fa311 Update version number. 2019-07-30 18:18:03 -04:00
Ajay Ramachandran
74affbd9c0 Fixed Firefox notification issue 2019-07-30 18:15:49 -04:00
Ajay Ramachandran
10d1978566 Added better support for the old YouTube layout. 2019-07-30 15:57:28 -04:00
Ajay Ramachandran
a1c8ecabca Merge pull request #49 from OfficialNoob/patch-6
Old function in-use
2019-07-30 14:41:21 -04:00
Official Noob
53f611a43a Old function in-use 2019-07-30 18:59:06 +01:00
Ajay Ramachandran
b0929e2431 Remade the popup menu to support Firefox and not use IFrames. 2019-07-30 13:27:20 -04:00
8 changed files with 1205 additions and 1091 deletions

11
LICENSE
View File

@@ -1,4 +1,8 @@
GNU GENERAL PUBLIC LICENSE
SponsorBlock Copyright (C) 2019 Ajay Ramachandran and other SponsorBlock contributors.
Please refer to the license below.
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
@@ -651,8 +655,9 @@ Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
SponsorBlock Copyright (C) 2019 Ajay Ramachandran and other SponsorBlock contributors
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.

View File

@@ -3,6 +3,9 @@ var previousVideoID = null
//the id of this user, randomly generated once per install
var userID = null;
//the last video id loaded, to make sure it is a video id change
var sponsorVideoID = null;
//when a new tab is highlighted
chrome.tabs.onActivated.addListener(
function(activeInfo) {
@@ -162,6 +165,12 @@ function videoIDChange(currentVideoID, tabId) {
id: currentVideoID
});
//not a url change
if (sponsorVideoID == currentVideoID){
return;
}
sponsorVideoID = currentVideoID;
//warn them if they had unsubmitted times
if (previousVideoID != null) {
//get the sponsor times from storage

View File

@@ -59,8 +59,10 @@ chrome.storage.sync.get(["dontShowNoticeAgain"], function(result) {
}
});
chrome.runtime.onMessage.addListener( // Detect URL Changes
function(request, sender, sendResponse) {
//get messages from the background script and the popup
chrome.runtime.onMessage.addListener(messageListener);
function messageListener(request, sender, sendResponse) {
//message from background script
if (request.message == "ytvideoid") {
videoIDChange(request.id);
@@ -118,7 +120,7 @@ chrome.runtime.onMessage.addListener( // Detect URL Changes
if (request.message == "trackViewCount") {
trackViewCount = request.value;
}
});
}
//check for hotkey pressed
document.onkeydown = function(e){
@@ -474,31 +476,43 @@ function openInfoMenu() {
//hide info button
document.getElementById("infoButton").style.display = "none";
let popup = document.createElement("div");
popup.id = "sponsorBlockPopupContainer";
sendRequestToCustomServer('GET', chrome.extension.getURL("popup.html"), function(xmlhttp) {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var popup = document.createElement("div");
popup.id = "sponsorBlockPopupContainer";
popup.innerHTML = xmlhttp.responseText
let popupFrame = document.createElement("iframe");
popupFrame.id = "sponsorBlockPopupFrame"
popupFrame.src = chrome.extension.getURL("popup.html");
popupFrame.className = "popup";
//close button
let closeButton = document.createElement("div");
closeButton.innerText = "Close Popup";
closeButton.classList = "smallLink";
closeButton.setAttribute("align", "center");
closeButton.addEventListener("click", closeInfoMenu);
//close button
let closeButton = document.createElement("div");
closeButton.innerText = "Close Popup";
closeButton.classList = "smallLink";
closeButton.setAttribute("align", "center");
closeButton.addEventListener("click", closeInfoMenu);
//add the close button
popup.prepend(closeButton);
let parentNode = document.getElementById("secondary");
if (parentNode == null) {
//old youtube theme
parentNode = document.getElementById("watch7-sidebar-contents");
}
popup.appendChild(closeButton);
popup.appendChild(popupFrame);
//make the logo source not 404
//query selector must be used since getElementByID doesn't work on a node and this isn't added to the document yet
let logo = popup.querySelector("#sponsorBlockPopupLogo");
logo.src = chrome.extension.getURL("icons/LogoSponsorBlocker256px.png");
let parentNode = document.getElementById("secondary");
if (parentNode == null) {
//old youtube theme
parentNode = document.getElementById("watch7-sidebar-contents");
}
//remove the style sheet and font that are not necessary
popup.querySelector("#sponorBlockPopupFont").remove();
popup.querySelector("#sponorBlockStyleSheet").remove();
parentNode.prepend(popup);
parentNode.insertBefore(popup, parentNode.firstChild);
//run the popup init script
runThePopup();
}
});
}
function closeInfoMenu() {

View File

@@ -10,11 +10,13 @@
],
"js": [
"config.js",
"content.js"
"content.js",
"popup.js"
],
"css": [
"content.css",
"./libs/Source+Sans+Pro.css"
"./libs/Source+Sans+Pro.css",
"popup.css"
]
}
],

View File

@@ -1,7 +1,7 @@
{
"name": "SponsorBlock for YouTube - Skip Sponsorships",
"short_name": "SponsorBlock",
"version": "1.0.16",
"version": "1.0.22",
"description": "Skip over sponsorship on YouTube videos. Report sponsors on videos you watch to save the time of others.",
"content_scripts": [
{
@@ -10,11 +10,13 @@
],
"js": [
"config.js",
"content.js"
"content.js",
"popup.js"
],
"css": [
"content.css",
"./libs/Source+Sans+Pro.css"
"./libs/Source+Sans+Pro.css",
"popup.css"
]
}
],

103
popup.css
View File

@@ -1,45 +1,84 @@
* {
font-family: 'Source Sans Pro', sans-serif;
/* reset some properties to default (youtube messes with them */
p.popupElement {
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0px;
margin-inline-end: 0px;
}
h1 {
h1.popupElement {
margin-block-start: 0.67em;
margin-block-end: 0.67em;
margin-inline-start: 0px;
margin-inline-end: 0px;
font-weight: bold;
}
h2.popupElement {
margin-block-start: 0.83em;
margin-block-end: 0.83em;
margin-inline-start: 0px;
margin-inline-end: 0px;
font-weight: bold;
}
h3.popupElement {
margin-block-start: 1em;
margin-block-end: 1em;
margin-inline-start: 0px;
margin-inline-end: 0px;
font-weight: bold;
}
sub.popupElement {
font-size: smaller;
}
/* end reset */
.popupElement {
font-family: 'Source Sans Pro', sans-serif;
color: black;
}
h1.popupElement {
margin-top: 0px;
}
body {
font-size: 14px;
min-width: 300px;
background-color: #ffd9d9;
.popupBody {
font-size: 14px;
background-color: #ffd9d9;
padding: 5px;
}
.recordingSubtitle {
.recordingSubtitle.popupElement {
margin-bottom: 10px;
}
.voteButton {
.voteButton.popupElement {
height: 32px;
margin-right: 15px;
cursor: pointer;
}
.voteButton:hover {
.voteButton:hover.popupElement {
filter: brightness(80%);
}
#discordButtonContainer {
#discordButtonContainer.popupElement {
font-size: 12px;
}
.sponsorTime {
.sponsorTime.popupElement {
font-size: 20px;
}
.smallLink {
.smallLink.popupElement {
font-size: 10px;
text-decoration: underline;
cursor: pointer;
}
.mediumLink {
.mediumLink.popupElement {
font-size: 15px;
padding-left: 15px;
padding-right: 15px;
@@ -47,8 +86,8 @@ body {
cursor: pointer;
}
.greenButton {
background-color:#ec1c1c;
.greenButton.popupElement {
background-color:#ec1c1c;
-moz-border-radius:28px;
-webkit-border-radius:28px;
border-radius:28px;
@@ -61,19 +100,19 @@ body {
text-decoration:none;
text-shadow:0px 0px 0px #662727;
}
.greenButton:hover {
.greenButton:hover.popupElement {
background-color:#bf2a2a;
}
.greenButton:focus {
.greenButton:focus.popupElement {
outline: none;
background-color:#bf2a2a;
}
.greenButton:active {
.greenButton:active.popupElement {
position:relative;
top:1px;
}
.dangerButton {
.dangerButton.popupElement {
-moz-box-shadow:inset 0px 1px 0px 0px #cf866c;
-webkit-box-shadow:inset 0px 1px 0px 0px #cf866c;
box-shadow:inset 0px 1px 0px 0px #cf866c;
@@ -90,19 +129,19 @@ body {
text-decoration:none;
text-shadow:0px 1px 0px #854629;
}
.dangerButton:hover {
.dangerButton:hover.popupElement {
background-color:#bc3315;
}
.dangerButton:focus {
.dangerButton:focus.popupElement {
outline: none;
background-color:#bc3315;
}
.dangerButton:active {
.dangerButton:active.popupElement {
position:relative;
top:1px;
}
.warningButton {
.warningButton.popupElement {
-moz-box-shadow:inset 0px 1px 0px 0px #cfbd6c;
-webkit-box-shadow:inset 0px 1px 0px 0px #cfbd6c;
box-shadow:inset 0px 1px 0px 0px #cfbd6c;
@@ -119,19 +158,19 @@ body {
text-decoration:none;
text-shadow:0px 1px 0px #856829;
}
.warningButton:hover {
.warningButton:hover.popupElement {
background-color:#bc8215;
}
.warningButton:focus {
.warningButton:focus.popupElement {
outline: none;
background-color:#bc8215;
}
.warningButton:active {
.warningButton:active.popupElement {
position:relative;
top:1px;
}
.smallButton {
.smallButton.popupElement {
background-color:#f9902d;
-moz-border-radius:3px;
-webkit-border-radius:3px;
@@ -144,14 +183,14 @@ body {
padding:6px 10px;
text-decoration:none;
}
.smallButton:hover {
.smallButton:hover.popupElement {
background-color:#fa9806;
}
.smallButton:focus {
.smallButton:focus.popupElement {
outline: none;
background-color:#fa9806;
}
.smallButton:active {
.smallButton:active.popupElement {
position:relative;
top:1px;
}
}

View File

@@ -1,182 +1,184 @@
<html>
<head>
<title>Set Page Color Popup</title>
<link rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css"/>
<link rel="stylesheet" type="text/css" href="popup.css"/>
<link id="sponorBlockPopupFont" rel="stylesheet" type="text/css" href="/libs/Source+Sans+Pro.css"/>
<link id="sponorBlockStyleSheet" rel="stylesheet" type="text/css" href="popup.css"/>
</head>
<center>
<div id="app">
<img src="icons/LogoSponsorBlocker256px.png" height="64px"/>
<body class="popupBody">
<center>
<div id="app" class="popupBody">
<img src="icons/LogoSponsorBlocker256px.png" height="64px" id="sponsorBlockPopupLogo"/>
<h1>SponsorBlock</h1>
<h1 class="popupElement">SponsorBlock</h1>
<!-- Loading text -->
<p id="loadingIndicator">Loading...</p>
<!-- Loading text -->
<p id="loadingIndicator" class="popupElement">Loading...</p>
<!-- Hidden until loading complete -->
<div id="mainControls" class="main" style="display: none">
<!-- If the video was found in the database -->
<div id="videoFound">
</div>
<!-- Hidden until loading complete -->
<div id="mainControls" class="main popupElement" style="display: none">
<!-- If the video was found in the database -->
<div id="videoFound">
</div>
<div id="downloadedSponsorMessageTimes">
</div>
<br/>
<button id="reportAnIssue" class="dangerButton">Vote On A Sponsor Time</button>
<div id="issueReporterContainer" style="display: none">
<h3 style="margin-top: 0px">Vote On A Sponsor Time</h3>
<div id="issueReporterTimeButtons">
<div id="downloadedSponsorMessageTimes" class="popupElement">
</div>
</div>
<br/>
<h2 class="recordingSubtitle">Record the times of a sponsorship</h2>
<button id="reportAnIssue" class="dangerButton popupElement">Vote On A Sponsor Time</button>
<p>
<span id=sponsorTimesContributionsContainer style="display: none">
So far, you've submitted
<span id="sponsorTimesContributionsDisplay">
0
</span>
<span id="sponsorTimesContributionsDisplayEndWord">
sponsors.
</span>
</span>
<div id="issueReporterContainer" class="popupElement" style="display: none">
<span id=sponsorTimesViewsContainer style="display: none">
You have saved people from
<span id="sponsorTimesViewsDisplay">
0
</span>
<span id="sponsorTimesViewsDisplayEndWord">
sponsor segments.
</span>
</span>
</p>
<h3 style="margin-top: 0px" class="popupElement">Vote On A Sponsor Time</h3>
<p>
Click the button below when the sponsorship starts and ends to record and
submit it to the database.
</p>
<div>
<button id="sponsorStart" class="greenButton">Sponsorship Starts Now</button>
</div>
<div id="issueReporterTimeButtons" class="popupElement">
<sub>Hint: Press the semicolon key while focused on a video report the start/end of a sponsor and quote to submit.</sub>
<div id="submissionSection" style="display: none">
<h3>Latest Sponsor Message Times Chosen</h3>
<b>
<div id="sponsorMessageTimes">
</div>
</div>
<h2 class="recordingSubtitle popupElement">Record the times of a sponsorship</h2>
<p class="popupElement">
<span id=sponsorTimesContributionsContainer class="popupElement" style="display: none">
So far, you've submitted
<span id="sponsorTimesContributionsDisplay" class="popupElement">
0
</span>
<span id="sponsorTimesContributionsDisplayEndWord" class="popupElement">
sponsors.
</span>
</span>
<span id=sponsorTimesViewsContainer class="popupElement" style="display: none">
You have saved people from
<span id="sponsorTimesViewsDisplay" class="popupElement">
0
</span>
<span id="sponsorTimesViewsDisplayEndWord" class="popupElement">
sponsor segments.
</span>
</span>
</p>
<p class="popupElement">
Click the button below when the sponsorship starts and ends to record and
submit it to the database.
</p>
<div>
<button id="sponsorStart" class="greenButton popupElement">Sponsorship Starts Now</button>
</div>
<sub class="popupElement">Hint: Press the semicolon key while focused on a video report the start/end of a sponsor and quote to submit.</sub>
<div id="submissionSection" class="popupElement" style="display: none">
<h3 class="popupElement">Latest Sponsor Message Times Chosen</h3>
<b>
<div id="sponsorMessageTimes" class="popupElement">
</div>
</b>
<button id="clearTimes" class="smallButton popupElement">Clear Times</button>
<br/>
<br/>
<div id="submitTimesContainer" class="popupElement" style="display: none">
<button id="submitTimes" class="smallButton popupElement">Submit Times</button>
<div id="submitTimesInfoMessageContainer" class="popupElement" style="display: none">
<h3 id="submitTimesInfoMessage" class="popupElement">
</h3>
</div>
</div>
</b>
<button id="clearTimes" class="smallButton">Clear Times</button>
<br/>
<br/>
<div id="submitTimesContainer" style="display: none">
<button id="submitTimes" class="smallButton">Submit Times</button>
<div id="submitTimesInfoMessageContainer" style="display: none">
<h3 id="submitTimesInfoMessage">
</h3>
</div>
</div>
</div>
<div id="discordButtonContainer" style="display: none">
<br/>
<a href="https://discord.gg/QnmVMpU" target="_blank"><img src="https://www.logolynx.com/images/logolynx/1b/1bcc0f0aefe71b2c8ce66ffe8645d365.png" height="32px"/></a>
<br/>
Come join the official discord server to give suggestions and feedback!
<br/>
<span id="hideDiscordButton" class="smallLink">Hide this</span>
</div>
<div id="optionsButtonContainer">
<br/>
<br/>
<button id="optionsButton" class="dangerButton">Options</button>
</div>
<div id="options" style="display: none">
<div id="discordButtonContainer" class="popupElement" style="display: none">
<br/>
<h3>Options</h3>
<button id="hideVideoPlayerControls" class="warningButton">Hide Buttons On YouTube Player</button>
<button id="showVideoPlayerControls" style="display: none" class="warningButton">Show Buttons On YouTube Player</button>
<br/>
<sub>
This hides the buttons that appear on the YouTube player to submit sponsors. I can see this being annoying for some
people. Instead of using the button there, this popup can be used to submit sponsors. To hide the notice that appears,
use the button that appears on the notice saying "Don't show this again". You can always enable these settings again
later.
</sub>
<a href="https://discord.gg/QnmVMpU" class="popupElement" target="_blank"><img src="https://www.logolynx.com/images/logolynx/1b/1bcc0f0aefe71b2c8ce66ffe8645d365.png" height="32px"/></a>
<br/>
<br/>
<button id="hideInfoButtonPlayerControls" class="warningButton">Hide Info Button On YouTube Player</button>
<button id="showInfoButtonPlayerControls" style="display: none" class="warningButton">Show Info Button On YouTube Player</button>
<br/>
<sub>
This is the button that opens up a popup in the YouTube page.
</sub>
Come join the official discord server to give suggestions and feedback!
<br/>
<br/>
<button id="hideDeleteButtonPlayerControls" class="warningButton">Hide Delete Button On YouTube Player</button>
<button id="showDeleteButtonPlayerControls" style="display: none" class="warningButton">Show Delete Button On YouTube Player</button>
<br/>
<sub>
This is the button that allows you to clear all sponsors on the YouTube player.
</sub>
<span id="hideDiscordButton" class="smallLink popupElement">Hide this</span>
</div>
<br/>
<br/>
<div id="optionsButtonContainer" class="popupElement">
<br/>
<br/>
<button id="optionsButton" class="dangerButton popupElement">Options</button>
</div>
<button id="disableSponsorViewTracking" class="warningButton">Disable Sponsor View Tracking</button>
<button id="enableSponsorViewTracking" style="display: none" class="warningButton">Enable Sponsor View Tracking</button>
<br/>
<sub>
This feature tracks which sponsors you have skipped to let users know how much their submission has helped others and
used as a metric along with upvotes to ensure that spam doesn't get into the database. The extension sends a message
to the server each time you skip a sponsor. Hopefully most people don't change this setting so that the view numbers
are accurate. :)
</sub>
<br/>
<br/>
<div id="options" class="popupElement" style="display: none">
<br/>
<button id="showNoticeAgain" style="display: none" class="dangerButton">Show Notice Again</button>
<h3>Options</h3>
<button id="hideVideoPlayerControls" class="warningButton popupElement">Hide Buttons On YouTube Player</button>
<button id="showVideoPlayerControls" style="display: none" class="warningButton popupElement">Show Buttons On YouTube Player</button>
<br/>
<sub class="popupElement">
This hides the buttons that appear on the YouTube player to submit sponsors. I can see this being annoying for some
people. Instead of using the button there, this popup can be used to submit sponsors. To hide the notice that appears,
use the button that appears on the notice saying "Don't show this again". You can always enable these settings again
later.
</sub>
<br/>
<br/>
<button id="hideInfoButtonPlayerControls" class="warningButton popupElement">Hide Info Button On YouTube Player</button>
<button id="showInfoButtonPlayerControls" style="display: none" class="warningButton popupElement">Show Info Button On YouTube Player</button>
<br/>
<sub class="popupElement">
This is the button that opens up a popup in the YouTube page.
</sub>
<br/>
<br/>
<button id="hideDeleteButtonPlayerControls" class="warningButton popupElement">Hide Delete Button On YouTube Player</button>
<button id="showDeleteButtonPlayerControls" style="display: none" class="warningButton popupElement">Show Delete Button On YouTube Player</button>
<br/>
<sub class="popupElement">
This is the button that allows you to clear all sponsors on the YouTube player.
</sub>
<br/>
<br/>
<button id="disableSponsorViewTracking" class="warningButton popupElement">Disable Sponsor View Tracking</button>
<button id="enableSponsorViewTracking" style="display: none" class="warningButton popupElement">Enable Sponsor View Tracking</button>
<br/>
<sub class="popupElement">
This feature tracks which sponsors you have skipped to let users know how much their submission has helped others and
used as a metric along with upvotes to ensure that spam doesn't get into the database. The extension sends a message
to the server each time you skip a sponsor. Hopefully most people don't change this setting so that the view numbers
are accurate. :)
</sub>
<br/>
<br/>
<button id="showNoticeAgain" style="display: none" class="dangerButton popupElement">Show Notice Again</button>
</div>
</div>
</div>
</div>
</center>
</center>
</body>
<!-- Scripts that need to load after the html -->
<script src="config.js"></script>

1807
popup.js

File diff suppressed because it is too large Load Diff