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:
Ilya Grigorik
2016-07-28 13:22:23 +02:00
parent 707c0c3f16
commit fce4d611b8
5 changed files with 71 additions and 31 deletions

View File

@@ -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);
}); });

View File

@@ -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",
@@ -27,11 +27,8 @@
"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" ]

View File

@@ -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] {

View File

@@ -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>

View File

@@ -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;
}); });
} }