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