mirror of
https://github.com/SoPat712/videospeed.git
synced 2025-08-22 02:18:45 -04:00
add user defined blacklist
Moving some of the previously blacklisted sites to user controlled blacklist. Remaining sites in manifest are blocked due to interop issues. Closes #121.
This commit is contained in:
37
inject.js
37
inject.js
@@ -1,5 +1,4 @@
|
|||||||
chrome.extension.sendMessage({}, function(response) {
|
chrome.extension.sendMessage({}, function(response) {
|
||||||
|
|
||||||
var tc = {
|
var tc = {
|
||||||
settings: {
|
settings: {
|
||||||
speed: 1.0, // default 1x
|
speed: 1.0, // default 1x
|
||||||
@@ -11,7 +10,13 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
fasterKeyCode: 68, // default: D
|
fasterKeyCode: 68, // default: D
|
||||||
rewindKeyCode: 90, // default: Z
|
rewindKeyCode: 90, // default: Z
|
||||||
advanceKeyCode: 88, // default: X
|
advanceKeyCode: 88, // default: X
|
||||||
rememberSpeed: false // default: false
|
rememberSpeed: false, // default: false
|
||||||
|
blacklist: `
|
||||||
|
www.instagram.com
|
||||||
|
www.twitter.com
|
||||||
|
vine.co
|
||||||
|
imgur.com
|
||||||
|
`.replace(/^\s+|\s+$/gm,'')
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -26,6 +31,9 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
tc.settings.fasterKeyCode = Number(storage.fasterKeyCode);
|
tc.settings.fasterKeyCode = Number(storage.fasterKeyCode);
|
||||||
tc.settings.advanceKeyCode = Number(storage.advanceKeyCode);
|
tc.settings.advanceKeyCode = Number(storage.advanceKeyCode);
|
||||||
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
||||||
|
tc.settings.blacklist = String(storage.blacklist);
|
||||||
|
|
||||||
|
initializeWhenReady(document);
|
||||||
});
|
});
|
||||||
|
|
||||||
var forEach = Array.prototype.forEach;
|
var forEach = Array.prototype.forEach;
|
||||||
@@ -122,6 +130,29 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function initializeWhenReady(document) {
|
function initializeWhenReady(document) {
|
||||||
|
escapeStringRegExp.matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
|
||||||
|
function escapeStringRegExp(str) {
|
||||||
|
return str.replace(escapeStringRegExp.matchOperatorsRe, '\\$&');
|
||||||
|
}
|
||||||
|
|
||||||
|
var blacklisted = false;
|
||||||
|
tc.settings.blacklist.split("\n").forEach(match => {
|
||||||
|
match = match.replace(/^\s+|\s+$/g,'')
|
||||||
|
if (match.length == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var regexp = new RegExp(escapeStringRegExp(match));
|
||||||
|
if (regexp.test(location.href)) {
|
||||||
|
console.log("SKIP", regexp, location.href)
|
||||||
|
blacklisted = true;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
if (blacklisted)
|
||||||
|
return;
|
||||||
|
|
||||||
var readyStateCheckInterval = setInterval(function() {
|
var readyStateCheckInterval = setInterval(function() {
|
||||||
if (document.readyState === 'complete') {
|
if (document.readyState === 'complete') {
|
||||||
clearInterval(readyStateCheckInterval);
|
clearInterval(readyStateCheckInterval);
|
||||||
@@ -265,6 +296,4 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
animation = false;
|
animation = false;
|
||||||
}, 2000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeWhenReady(document);
|
|
||||||
});
|
});
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "Video Speed Controller",
|
"name": "Video Speed Controller",
|
||||||
"short_name": "videospeed",
|
"short_name": "videospeed",
|
||||||
"version": "0.3.1",
|
"version": "0.3.3",
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"description": "Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.",
|
"description": "Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.",
|
||||||
"homepage_url": "https://github.com/igrigorik/videospeed",
|
"homepage_url": "https://github.com/igrigorik/videospeed",
|
||||||
@@ -22,16 +22,13 @@
|
|||||||
},
|
},
|
||||||
"content_scripts": [{
|
"content_scripts": [{
|
||||||
"all_frames": true,
|
"all_frames": true,
|
||||||
"matches": [ "http://*/*", "https://*/*", "file:///*"],
|
"matches": [ "http://*/*", "https://*/*", "file:///*" ],
|
||||||
"exclude_matches": [
|
"exclude_matches": [
|
||||||
"https://plus.google.com/hangouts/*",
|
"https://plus.google.com/hangouts/*",
|
||||||
"https://hangouts.google.com/hangouts/*",
|
"https://hangouts.google.com/hangouts/*",
|
||||||
"https://teamtreehouse.com/*",
|
"https://teamtreehouse.com/*",
|
||||||
"https://www.instagram.com/*",
|
|
||||||
"https://www.twitter.com/*",
|
|
||||||
"https://www.lynda.com/*",
|
"https://www.lynda.com/*",
|
||||||
"http://www.hitbox.tv/*",
|
"http://www.hitbox.tv/*"
|
||||||
"https://vine.co/*"
|
|
||||||
],
|
],
|
||||||
"css": [ "inject.css" ],
|
"css": [ "inject.css" ],
|
||||||
"js": [ "inject.js" ]
|
"js": [ "inject.js" ]
|
||||||
|
@@ -81,6 +81,7 @@ input[type="text"] {
|
|||||||
label {
|
label {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
width: 170px;
|
width: 170px;
|
||||||
|
vertical-align: top;
|
||||||
}
|
}
|
||||||
|
|
||||||
label[for=rememberSpeed] {
|
label[for=rememberSpeed] {
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section>
|
<section>
|
||||||
<h3>Others</h3>
|
<h3>Other</h3>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label for="rewindTime">Rewind Time (s)</label>
|
<label for="rewindTime">Rewind Time (s)</label>
|
||||||
<input id="rewindTime" type="text" value=""/>
|
<input id="rewindTime" type="text" value=""/>
|
||||||
@@ -52,6 +52,10 @@
|
|||||||
<label for="rememberSpeed">Remember Playback Speed</label>
|
<label for="rememberSpeed">Remember Playback Speed</label>
|
||||||
<input id="rememberSpeed" type="checkbox"/>
|
<input id="rememberSpeed" type="checkbox"/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="blacklist">Blacklisted sites on which extension is disabled<br/>(one per line)</label>
|
||||||
|
<textarea id="blacklist" rows="10" cols="50"></textarea>
|
||||||
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<button id="save">Save</button>
|
<button id="save">Save</button>
|
||||||
|
13
options.js
13
options.js
@@ -8,7 +8,13 @@ var tcDefaults = {
|
|||||||
fasterKeyCode: 68, // default: D
|
fasterKeyCode: 68, // default: D
|
||||||
rewindKeyCode: 90, // default: Z
|
rewindKeyCode: 90, // default: Z
|
||||||
advanceKeyCode: 88, // default: X
|
advanceKeyCode: 88, // default: X
|
||||||
rememberSpeed: false // default: false
|
rememberSpeed: false, // default: false
|
||||||
|
blacklist: `
|
||||||
|
www.instagram.com
|
||||||
|
www.twitter.com
|
||||||
|
vine.co
|
||||||
|
imgur.com
|
||||||
|
`.replace(/^\s+|\s+$/gm,'')
|
||||||
};
|
};
|
||||||
|
|
||||||
var keyCodeAliases = {
|
var keyCodeAliases = {
|
||||||
@@ -90,6 +96,7 @@ function save_options() {
|
|||||||
var slowerKeyCode = document.getElementById('slowerKeyInput').keyCode;
|
var slowerKeyCode = document.getElementById('slowerKeyInput').keyCode;
|
||||||
var fasterKeyCode = document.getElementById('fasterKeyInput').keyCode;
|
var fasterKeyCode = document.getElementById('fasterKeyInput').keyCode;
|
||||||
var rememberSpeed = document.getElementById('rememberSpeed').checked;
|
var rememberSpeed = document.getElementById('rememberSpeed').checked;
|
||||||
|
var blacklist = document.getElementById('blacklist').value;
|
||||||
|
|
||||||
speedStep = isNaN(speedStep) ? tcDefaults.speedStep : Number(speedStep);
|
speedStep = isNaN(speedStep) ? tcDefaults.speedStep : Number(speedStep);
|
||||||
rewindTime = isNaN(rewindTime) ? tcDefaults.rewindTime : Number(rewindTime);
|
rewindTime = isNaN(rewindTime) ? tcDefaults.rewindTime : Number(rewindTime);
|
||||||
@@ -109,7 +116,8 @@ function save_options() {
|
|||||||
advanceKeyCode: advanceKeyCode,
|
advanceKeyCode: advanceKeyCode,
|
||||||
slowerKeyCode: slowerKeyCode,
|
slowerKeyCode: slowerKeyCode,
|
||||||
fasterKeyCode: fasterKeyCode,
|
fasterKeyCode: fasterKeyCode,
|
||||||
rememberSpeed: rememberSpeed
|
rememberSpeed: rememberSpeed,
|
||||||
|
blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
|
||||||
}, function() {
|
}, function() {
|
||||||
// Update status to let user know options were saved.
|
// Update status to let user know options were saved.
|
||||||
var status = document.getElementById('status');
|
var status = document.getElementById('status');
|
||||||
@@ -132,6 +140,7 @@ function restore_options() {
|
|||||||
updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode);
|
updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode);
|
||||||
updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode);
|
updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode);
|
||||||
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
||||||
|
document.getElementById('blacklist').value = storage.blacklist;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user