mirror of
https://github.com/SoPat712/videospeed.git
synced 2025-08-21 18:08:46 -04:00
Add support for audio (#454)
* Add speed controler for audio * Add additional checks for audioBoolean * Change video to media
This commit is contained in:

committed by
Ilya Grigorik

parent
7bfa8a9985
commit
5fec357d2e
37
inject.js
37
inject.js
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
displayKeyCode: 86, // default: V
|
displayKeyCode: 86, // default: V
|
||||||
rememberSpeed: false, // default: false
|
rememberSpeed: false, // default: false
|
||||||
|
audioBoolean: false, // default: false
|
||||||
startHidden: false, // default: false
|
startHidden: false, // default: false
|
||||||
keyBindings: [],
|
keyBindings: [],
|
||||||
blacklist: `
|
blacklist: `
|
||||||
@@ -70,6 +71,7 @@
|
|||||||
version: tc.settings.version,
|
version: tc.settings.version,
|
||||||
displayKeyCode: tc.settings.displayKeyCode,
|
displayKeyCode: tc.settings.displayKeyCode,
|
||||||
rememberSpeed: tc.settings.rememberSpeed,
|
rememberSpeed: tc.settings.rememberSpeed,
|
||||||
|
audioBoolean: tc.settings.audioBoolean,
|
||||||
startHidden: tc.settings.startHidden,
|
startHidden: tc.settings.startHidden,
|
||||||
blacklist: tc.settings.blacklist.replace(/^\s+|\s+$/gm, '')
|
blacklist: tc.settings.blacklist.replace(/^\s+|\s+$/gm, '')
|
||||||
});
|
});
|
||||||
@@ -77,6 +79,7 @@
|
|||||||
tc.settings.speed = Number(storage.speed);
|
tc.settings.speed = Number(storage.speed);
|
||||||
tc.settings.displayKeyCode = Number(storage.displayKeyCode);
|
tc.settings.displayKeyCode = Number(storage.displayKeyCode);
|
||||||
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
||||||
|
tc.settings.audioBoolean = Boolean(storage.audioBoolean);
|
||||||
tc.settings.startHidden = Boolean(storage.startHidden);
|
tc.settings.startHidden = Boolean(storage.startHidden);
|
||||||
tc.settings.blacklist = String(storage.blacklist);
|
tc.settings.blacklist = String(storage.blacklist);
|
||||||
|
|
||||||
@@ -330,8 +333,9 @@
|
|||||||
}, true);
|
}, true);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
function checkForVideo(node, parent, added) {
|
function checkForVideo(node, parent, added) {
|
||||||
if (node.nodeName === 'VIDEO') {
|
if (node.nodeName === 'VIDEO' || (node.nodeName === 'AUDIO' && tc.settings.audioBoolean)) {
|
||||||
if (added) {
|
if (added) {
|
||||||
new tc.videoController(node, parent);
|
new tc.videoController(node, parent);
|
||||||
} else {
|
} else {
|
||||||
@@ -371,8 +375,13 @@
|
|||||||
});
|
});
|
||||||
observer.observe(document, { childList: true, subtree: true });
|
observer.observe(document, { childList: true, subtree: true });
|
||||||
|
|
||||||
var videoTags = document.getElementsByTagName('video');
|
if (tc.settings.audioBoolean) {
|
||||||
forEach.call(videoTags, function(video) {
|
var mediaTags = document.querySelectorAll('video,audio');
|
||||||
|
} else {
|
||||||
|
var mediaTags = document.querySelectorAll('video');
|
||||||
|
}
|
||||||
|
|
||||||
|
forEach.call(mediaTags, function(video) {
|
||||||
new tc.videoController(video);
|
new tc.videoController(video);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -385,19 +394,23 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function runAction(action, document, value, e) {
|
function runAction(action, document, value, e) {
|
||||||
var videoTags = document.getElementsByTagName('video');
|
if (tc.settings.audioBoolean) {
|
||||||
videoTags.forEach = Array.prototype.forEach;
|
var mediaTags = document.querySelectorAll('video,audio');
|
||||||
|
} else {
|
||||||
// Get the controller that was used if called from a button press event e
|
var mediaTags = document.querySelectorAll('video');
|
||||||
if (e){
|
|
||||||
var targetController = e.target.getRootNode().host;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
videoTags.forEach(function(v) {
|
mediaTags.forEach = Array.prototype.forEach;
|
||||||
|
|
||||||
|
// Get the controller that was used if called from a button press event e
|
||||||
|
if (e) {
|
||||||
|
var targetController = e.target.getRootNode().host;
|
||||||
|
}
|
||||||
|
|
||||||
|
mediaTags.forEach(function(v) {
|
||||||
var id = v.dataset['vscid'];
|
var id = v.dataset['vscid'];
|
||||||
var controller = document.querySelector(`div[data-vscid="${id}"]`);
|
var controller = document.querySelector(`div[data-vscid="${id}"]`);
|
||||||
|
// Don't change video speed if the video has a different controller
|
||||||
// Don't change video speed if the video has a different controller
|
|
||||||
if (e && !(targetController == controller)) {
|
if (e && !(targetController == controller)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@@ -90,6 +90,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="audioBoolean">Work on audio</label>
|
||||||
|
<input id="audioBoolean" type="checkbox"/>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label for="blacklist">Blacklisted sites on which extension is disabled<br/>(one per line)</label>
|
<label for="blacklist">Blacklisted sites on which extension is disabled<br/>(one per line)</label>
|
||||||
<textarea id="blacklist" rows="10" cols="50"></textarea>
|
<textarea id="blacklist" rows="10" cols="50"></textarea>
|
||||||
|
@@ -2,6 +2,7 @@ var tcDefaults = {
|
|||||||
speed: 1.0, // default:
|
speed: 1.0, // default:
|
||||||
displayKeyCode: 86, // default: V
|
displayKeyCode: 86, // default: V
|
||||||
rememberSpeed: false, // default: false
|
rememberSpeed: false, // default: false
|
||||||
|
audioBoolean: false, // default: false
|
||||||
startHidden: false, // default: false
|
startHidden: false, // default: false
|
||||||
keyBindings: [
|
keyBindings: [
|
||||||
{action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S
|
{action: "slower", key: 83, value: 0.1, force: false, predefined: true}, // S
|
||||||
@@ -141,6 +142,7 @@ function save_options() {
|
|||||||
|
|
||||||
var displayKeyCode = document.getElementById('displayKeyInput').keyCode;
|
var displayKeyCode = document.getElementById('displayKeyInput').keyCode;
|
||||||
var rememberSpeed = document.getElementById('rememberSpeed').checked;
|
var rememberSpeed = document.getElementById('rememberSpeed').checked;
|
||||||
|
var audioBoolean = document.getElementById('audioBoolean').checked;
|
||||||
var startHidden = document.getElementById('startHidden').checked;
|
var startHidden = document.getElementById('startHidden').checked;
|
||||||
var blacklist = document.getElementById('blacklist').value;
|
var blacklist = document.getElementById('blacklist').value;
|
||||||
|
|
||||||
@@ -150,6 +152,7 @@ function save_options() {
|
|||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
displayKeyCode: displayKeyCode,
|
displayKeyCode: displayKeyCode,
|
||||||
rememberSpeed: rememberSpeed,
|
rememberSpeed: rememberSpeed,
|
||||||
|
audioBoolean: audioBoolean,
|
||||||
startHidden: startHidden,
|
startHidden: startHidden,
|
||||||
keyBindings: keyBindings,
|
keyBindings: keyBindings,
|
||||||
blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
|
blacklist: blacklist.replace(/^\s+|\s+$/gm,'')
|
||||||
@@ -168,6 +171,7 @@ function restore_options() {
|
|||||||
chrome.storage.sync.get(tcDefaults, function(storage) {
|
chrome.storage.sync.get(tcDefaults, function(storage) {
|
||||||
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
|
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
|
||||||
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
||||||
|
document.getElementById('audioBoolean').checked = storage.audioBoolean;
|
||||||
document.getElementById('startHidden').checked = storage.startHidden;
|
document.getElementById('startHidden').checked = storage.startHidden;
|
||||||
document.getElementById('blacklist').value = storage.blacklist;
|
document.getElementById('blacklist').value = storage.blacklist;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user