mirror of
https://github.com/SoPat712/videospeed.git
synced 2025-08-21 18:08:46 -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) {
|
||||
|
||||
var tc = {
|
||||
settings: {
|
||||
speed: 1.0, // default 1x
|
||||
@@ -11,7 +10,13 @@ chrome.extension.sendMessage({}, function(response) {
|
||||
fasterKeyCode: 68, // default: D
|
||||
rewindKeyCode: 90, // default: Z
|
||||
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.advanceKeyCode = Number(storage.advanceKeyCode);
|
||||
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
||||
tc.settings.blacklist = String(storage.blacklist);
|
||||
|
||||
initializeWhenReady(document);
|
||||
});
|
||||
|
||||
var forEach = Array.prototype.forEach;
|
||||
@@ -122,6 +130,29 @@ chrome.extension.sendMessage({}, function(response) {
|
||||
}
|
||||
|
||||
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() {
|
||||
if (document.readyState === 'complete') {
|
||||
clearInterval(readyStateCheckInterval);
|
||||
@@ -265,6 +296,4 @@ chrome.extension.sendMessage({}, function(response) {
|
||||
animation = false;
|
||||
}, 2000);
|
||||
}
|
||||
|
||||
initializeWhenReady(document);
|
||||
});
|
||||
|
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "Video Speed Controller",
|
||||
"short_name": "videospeed",
|
||||
"version": "0.3.1",
|
||||
"version": "0.3.3",
|
||||
"manifest_version": 2,
|
||||
"description": "Speed up, slow down, advance and rewind any HTML5 video with quick shortcuts.",
|
||||
"homepage_url": "https://github.com/igrigorik/videospeed",
|
||||
@@ -22,16 +22,13 @@
|
||||
},
|
||||
"content_scripts": [{
|
||||
"all_frames": true,
|
||||
"matches": [ "http://*/*", "https://*/*", "file:///*"],
|
||||
"matches": [ "http://*/*", "https://*/*", "file:///*" ],
|
||||
"exclude_matches": [
|
||||
"https://plus.google.com/hangouts/*",
|
||||
"https://hangouts.google.com/hangouts/*",
|
||||
"https://teamtreehouse.com/*",
|
||||
"https://www.instagram.com/*",
|
||||
"https://www.twitter.com/*",
|
||||
"https://www.lynda.com/*",
|
||||
"http://www.hitbox.tv/*",
|
||||
"https://vine.co/*"
|
||||
"http://www.hitbox.tv/*"
|
||||
],
|
||||
"css": [ "inject.css" ],
|
||||
"js": [ "inject.js" ]
|
||||
|
@@ -81,6 +81,7 @@ input[type="text"] {
|
||||
label {
|
||||
display: inline-block;
|
||||
width: 170px;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
label[for=rememberSpeed] {
|
||||
|
@@ -35,7 +35,7 @@
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Others</h3>
|
||||
<h3>Other</h3>
|
||||
<div class="row">
|
||||
<label for="rewindTime">Rewind Time (s)</label>
|
||||
<input id="rewindTime" type="text" value=""/>
|
||||
@@ -52,6 +52,10 @@
|
||||
<label for="rememberSpeed">Remember Playback Speed</label>
|
||||
<input id="rememberSpeed" type="checkbox"/>
|
||||
</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>
|
||||
|
||||
<button id="save">Save</button>
|
||||
|
13
options.js
13
options.js
@@ -8,7 +8,13 @@ var tcDefaults = {
|
||||
fasterKeyCode: 68, // default: D
|
||||
rewindKeyCode: 90, // default: Z
|
||||
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 = {
|
||||
@@ -90,6 +96,7 @@ function save_options() {
|
||||
var slowerKeyCode = document.getElementById('slowerKeyInput').keyCode;
|
||||
var fasterKeyCode = document.getElementById('fasterKeyInput').keyCode;
|
||||
var rememberSpeed = document.getElementById('rememberSpeed').checked;
|
||||
var blacklist = document.getElementById('blacklist').value;
|
||||
|
||||
speedStep = isNaN(speedStep) ? tcDefaults.speedStep : Number(speedStep);
|
||||
rewindTime = isNaN(rewindTime) ? tcDefaults.rewindTime : Number(rewindTime);
|
||||
@@ -109,7 +116,8 @@ function save_options() {
|
||||
advanceKeyCode: advanceKeyCode,
|
||||
slowerKeyCode: slowerKeyCode,
|
||||
fasterKeyCode: fasterKeyCode,
|
||||
rememberSpeed: rememberSpeed
|
||||
rememberSpeed: rememberSpeed,
|
||||
blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
|
||||
}, function() {
|
||||
// Update status to let user know options were saved.
|
||||
var status = document.getElementById('status');
|
||||
@@ -132,6 +140,7 @@ function restore_options() {
|
||||
updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode);
|
||||
updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode);
|
||||
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
||||
document.getElementById('blacklist').value = storage.blacklist;
|
||||
});
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user