mirror of
https://github.com/SoPat712/videospeed.git
synced 2025-08-21 18:08:46 -04:00
Playback at "fast" speed (#203)
Added new custom key ("G") to jump to a favorite "fast speed", which is also configurable.
This commit is contained in:

committed by
Ilya Grigorik

parent
7437c3a2c9
commit
b3db296c0a
12
inject.js
12
inject.js
@@ -4,6 +4,7 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
speed: 1.0, // default 1x
|
speed: 1.0, // default 1x
|
||||||
resetSpeed: 1.0, // default 1x
|
resetSpeed: 1.0, // default 1x
|
||||||
speedStep: 0.1, // default 0.1x
|
speedStep: 0.1, // default 0.1x
|
||||||
|
fastSpeed: 1.8, // default 1.8x
|
||||||
rewindTime: 10, // default 10s
|
rewindTime: 10, // default 10s
|
||||||
advanceTime: 10, // default 10s
|
advanceTime: 10, // default 10s
|
||||||
resetKeyCode: 82, // default: R
|
resetKeyCode: 82, // default: R
|
||||||
@@ -12,6 +13,7 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
rewindKeyCode: 90, // default: Z
|
rewindKeyCode: 90, // default: Z
|
||||||
advanceKeyCode: 88, // default: X
|
advanceKeyCode: 88, // default: X
|
||||||
displayKeyCode: 86, // default: V
|
displayKeyCode: 86, // default: V
|
||||||
|
fastKeyCode: 71, // default: G
|
||||||
rememberSpeed: false, // default: false
|
rememberSpeed: false, // default: false
|
||||||
startHidden: false, // default: false
|
startHidden: false, // default: false
|
||||||
blacklist: `
|
blacklist: `
|
||||||
@@ -27,12 +29,14 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
tc.settings.speed = Number(storage.speed);
|
tc.settings.speed = Number(storage.speed);
|
||||||
tc.settings.resetSpeed = Number(storage.resetSpeed);
|
tc.settings.resetSpeed = Number(storage.resetSpeed);
|
||||||
tc.settings.speedStep = Number(storage.speedStep);
|
tc.settings.speedStep = Number(storage.speedStep);
|
||||||
|
tc.settings.fastSpeed = Number(storage.fastSpeed);
|
||||||
tc.settings.rewindTime = Number(storage.rewindTime);
|
tc.settings.rewindTime = Number(storage.rewindTime);
|
||||||
tc.settings.advanceTime = Number(storage.advanceTime);
|
tc.settings.advanceTime = Number(storage.advanceTime);
|
||||||
tc.settings.resetKeyCode = Number(storage.resetKeyCode);
|
tc.settings.resetKeyCode = Number(storage.resetKeyCode);
|
||||||
tc.settings.rewindKeyCode = Number(storage.rewindKeyCode);
|
tc.settings.rewindKeyCode = Number(storage.rewindKeyCode);
|
||||||
tc.settings.slowerKeyCode = Number(storage.slowerKeyCode);
|
tc.settings.slowerKeyCode = Number(storage.slowerKeyCode);
|
||||||
tc.settings.fasterKeyCode = Number(storage.fasterKeyCode);
|
tc.settings.fasterKeyCode = Number(storage.fasterKeyCode);
|
||||||
|
tc.settings.fastKeyCode = Number(storage.fastKeyCode);
|
||||||
tc.settings.displayKeyCode = Number(storage.displayKeyCode);
|
tc.settings.displayKeyCode = Number(storage.displayKeyCode);
|
||||||
tc.settings.advanceKeyCode = Number(storage.advanceKeyCode);
|
tc.settings.advanceKeyCode = Number(storage.advanceKeyCode);
|
||||||
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
tc.settings.rememberSpeed = Boolean(storage.rememberSpeed);
|
||||||
@@ -226,6 +230,8 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
runAction('reset', document, true)
|
runAction('reset', document, true)
|
||||||
} else if (keyCode == tc.settings.displayKeyCode) {
|
} else if (keyCode == tc.settings.displayKeyCode) {
|
||||||
runAction('display', document, true)
|
runAction('display', document, true)
|
||||||
|
} else if (keyCode == tc.settings.fastKeyCode) {
|
||||||
|
runAction('fast', document, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
@@ -328,11 +334,17 @@ chrome.extension.sendMessage({}, function(response) {
|
|||||||
controller.classList.toggle('vsc-hidden');
|
controller.classList.toggle('vsc-hidden');
|
||||||
} else if (action === 'drag') {
|
} else if (action === 'drag') {
|
||||||
handleDrag(v, controller);
|
handleDrag(v, controller);
|
||||||
|
} else if (action === 'fast') {
|
||||||
|
playVideoAtFastSpeed(v);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function playVideoAtFastSpeed(video) {
|
||||||
|
video.playbackRate = tc.settings.fastSpeed;
|
||||||
|
}
|
||||||
|
|
||||||
function handleDrag(video, controller) {
|
function handleDrag(video, controller) {
|
||||||
const parentElement = controller.parentElement,
|
const parentElement = controller.parentElement,
|
||||||
shadowController = controller.shadowRoot.querySelector('#controller');
|
shadowController = controller.shadowRoot.querySelector('#controller');
|
||||||
|
@@ -32,6 +32,10 @@
|
|||||||
<label for="fasterKeyInput">Increase speed</label>
|
<label for="fasterKeyInput">Increase speed</label>
|
||||||
<input id="fasterKeyInput" placeholder="press a key" type="text" value=""/>
|
<input id="fasterKeyInput" placeholder="press a key" type="text" value=""/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="fastKeyInput">Preferred speed</label>
|
||||||
|
<input id="fastKeyInput" placeholder="press a key" type="text" value=""/>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label for="displayKeyInput">Show/hide controller</label>
|
<label for="displayKeyInput">Show/hide controller</label>
|
||||||
<input id="displayKeyInput" placeholder="press a key" type="text" value=""/>
|
<input id="displayKeyInput" placeholder="press a key" type="text" value=""/>
|
||||||
@@ -56,6 +60,10 @@
|
|||||||
<label for="speedStep">Speed Change Step</label>
|
<label for="speedStep">Speed Change Step</label>
|
||||||
<input id="speedStep" type="text" value=""/>
|
<input id="speedStep" type="text" value=""/>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<label for="fastSpeed">Preferred Speed (x)</label>
|
||||||
|
<input id="fastSpeed" type="text" value=""/>
|
||||||
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<label for="rememberSpeed">Remember Playback Speed</label>
|
<label for="rememberSpeed">Remember Playback Speed</label>
|
||||||
<input id="rememberSpeed" type="checkbox"/>
|
<input id="rememberSpeed" type="checkbox"/>
|
||||||
|
12
options.js
12
options.js
@@ -3,9 +3,11 @@ var tcDefaults = {
|
|||||||
speedStep: 0.1, // default 0.1x
|
speedStep: 0.1, // default 0.1x
|
||||||
rewindTime: 10, // default 10s
|
rewindTime: 10, // default 10s
|
||||||
advanceTime: 10, // default 10s
|
advanceTime: 10, // default 10s
|
||||||
|
fastSpeed: 1.8, // default 1.8x
|
||||||
resetKeyCode: 82, // default: R
|
resetKeyCode: 82, // default: R
|
||||||
slowerKeyCode: 83, // default: S
|
slowerKeyCode: 83, // default: S
|
||||||
fasterKeyCode: 68, // default: D
|
fasterKeyCode: 68, // default: D
|
||||||
|
fastKeyCode: 71, // default: G
|
||||||
rewindKeyCode: 90, // default: Z
|
rewindKeyCode: 90, // default: Z
|
||||||
advanceKeyCode: 88, // default: X
|
advanceKeyCode: 88, // default: X
|
||||||
displayKeyCode: 86, // default: V
|
displayKeyCode: 86, // default: V
|
||||||
@@ -92,11 +94,13 @@ function save_options() {
|
|||||||
var speedStep = document.getElementById('speedStep').value;
|
var speedStep = document.getElementById('speedStep').value;
|
||||||
var rewindTime = document.getElementById('rewindTime').value;
|
var rewindTime = document.getElementById('rewindTime').value;
|
||||||
var advanceTime = document.getElementById('advanceTime').value;
|
var advanceTime = document.getElementById('advanceTime').value;
|
||||||
|
var fastSpeed = document.getElementById('fastSpeed').value;
|
||||||
var resetKeyCode = document.getElementById('resetKeyInput').keyCode;
|
var resetKeyCode = document.getElementById('resetKeyInput').keyCode;
|
||||||
var rewindKeyCode = document.getElementById('rewindKeyInput').keyCode;
|
var rewindKeyCode = document.getElementById('rewindKeyInput').keyCode;
|
||||||
var advanceKeyCode = document.getElementById('advanceKeyInput').keyCode;
|
var advanceKeyCode = document.getElementById('advanceKeyInput').keyCode;
|
||||||
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 fastKeyCode = document.getElementById('fastKeyInput').keyCode;
|
||||||
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 startHidden = document.getElementById('startHidden').checked;
|
var startHidden = document.getElementById('startHidden').checked;
|
||||||
@@ -105,22 +109,26 @@ function save_options() {
|
|||||||
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);
|
||||||
advanceTime = isNaN(advanceTime) ? tcDefaults.advanceTime : Number(advanceTime);
|
advanceTime = isNaN(advanceTime) ? tcDefaults.advanceTime : Number(advanceTime);
|
||||||
|
fastSpeed = isNaN(fastSpeed) ? tcDefaults.fastSpeed : Number(fastSpeed);
|
||||||
resetKeyCode = isNaN(resetKeyCode) ? tcDefaults.resetKeyCode : resetKeyCode;
|
resetKeyCode = isNaN(resetKeyCode) ? tcDefaults.resetKeyCode : resetKeyCode;
|
||||||
rewindKeyCode = isNaN(rewindKeyCode) ? tcDefaults.rewindKeyCode : rewindKeyCode;
|
rewindKeyCode = isNaN(rewindKeyCode) ? tcDefaults.rewindKeyCode : rewindKeyCode;
|
||||||
advanceKeyCode = isNaN(advanceKeyCode) ? tcDefaults.advanceKeyCode : advanceKeyCode;
|
advanceKeyCode = isNaN(advanceKeyCode) ? tcDefaults.advanceKeyCode : advanceKeyCode;
|
||||||
slowerKeyCode = isNaN(slowerKeyCode) ? tcDefaults.slowerKeyCode : slowerKeyCode;
|
slowerKeyCode = isNaN(slowerKeyCode) ? tcDefaults.slowerKeyCode : slowerKeyCode;
|
||||||
fasterKeyCode = isNaN(fasterKeyCode) ? tcDefaults.fasterKeyCode : fasterKeyCode;
|
fasterKeyCode = isNaN(fasterKeyCode) ? tcDefaults.fasterKeyCode : fasterKeyCode;
|
||||||
|
fastKeyCode = isNaN(fastKeyCode) ? tcDefaults.fastKeyCode : fastKeyCode;
|
||||||
displayKeyCode = isNaN(displayKeyCode) ? tcDefaults.displayKeyCode : displayKeyCode;
|
displayKeyCode = isNaN(displayKeyCode) ? tcDefaults.displayKeyCode : displayKeyCode;
|
||||||
|
|
||||||
chrome.storage.sync.set({
|
chrome.storage.sync.set({
|
||||||
speedStep: speedStep,
|
speedStep: speedStep,
|
||||||
rewindTime: rewindTime,
|
rewindTime: rewindTime,
|
||||||
advanceTime: advanceTime,
|
advanceTime: advanceTime,
|
||||||
|
fastSpeed: fastSpeed,
|
||||||
resetKeyCode: resetKeyCode,
|
resetKeyCode: resetKeyCode,
|
||||||
rewindKeyCode: rewindKeyCode,
|
rewindKeyCode: rewindKeyCode,
|
||||||
advanceKeyCode: advanceKeyCode,
|
advanceKeyCode: advanceKeyCode,
|
||||||
slowerKeyCode: slowerKeyCode,
|
slowerKeyCode: slowerKeyCode,
|
||||||
fasterKeyCode: fasterKeyCode,
|
fasterKeyCode: fasterKeyCode,
|
||||||
|
fastKeyCode: fastKeyCode,
|
||||||
displayKeyCode: displayKeyCode,
|
displayKeyCode: displayKeyCode,
|
||||||
rememberSpeed: rememberSpeed,
|
rememberSpeed: rememberSpeed,
|
||||||
startHidden: startHidden,
|
startHidden: startHidden,
|
||||||
@@ -141,11 +149,13 @@ function restore_options() {
|
|||||||
document.getElementById('speedStep').value = storage.speedStep.toFixed(2);
|
document.getElementById('speedStep').value = storage.speedStep.toFixed(2);
|
||||||
document.getElementById('rewindTime').value = storage.rewindTime;
|
document.getElementById('rewindTime').value = storage.rewindTime;
|
||||||
document.getElementById('advanceTime').value = storage.advanceTime;
|
document.getElementById('advanceTime').value = storage.advanceTime;
|
||||||
|
document.getElementById('fastSpeed').value = storage.fastSpeed;
|
||||||
updateShortcutInputText('resetKeyInput', storage.resetKeyCode);
|
updateShortcutInputText('resetKeyInput', storage.resetKeyCode);
|
||||||
updateShortcutInputText('rewindKeyInput', storage.rewindKeyCode);
|
updateShortcutInputText('rewindKeyInput', storage.rewindKeyCode);
|
||||||
updateShortcutInputText('advanceKeyInput', storage.advanceKeyCode);
|
updateShortcutInputText('advanceKeyInput', storage.advanceKeyCode);
|
||||||
updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode);
|
updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode);
|
||||||
updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode);
|
updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode);
|
||||||
|
updateShortcutInputText('fastKeyInput', storage.fastKeyCode);
|
||||||
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
|
updateShortcutInputText('displayKeyInput', storage.displayKeyCode);
|
||||||
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
document.getElementById('rememberSpeed').checked = storage.rememberSpeed;
|
||||||
document.getElementById('startHidden').checked = storage.startHidden;
|
document.getElementById('startHidden').checked = storage.startHidden;
|
||||||
@@ -182,9 +192,11 @@ document.addEventListener('DOMContentLoaded', function () {
|
|||||||
initShortcutInput('advanceKeyInput');
|
initShortcutInput('advanceKeyInput');
|
||||||
initShortcutInput('slowerKeyInput');
|
initShortcutInput('slowerKeyInput');
|
||||||
initShortcutInput('fasterKeyInput');
|
initShortcutInput('fasterKeyInput');
|
||||||
|
initShortcutInput('fastKeyInput');
|
||||||
initShortcutInput('displayKeyInput');
|
initShortcutInput('displayKeyInput');
|
||||||
|
|
||||||
document.getElementById('rewindTime').addEventListener('keypress', inputFilterNumbersOnly);
|
document.getElementById('rewindTime').addEventListener('keypress', inputFilterNumbersOnly);
|
||||||
document.getElementById('advanceTime').addEventListener('keypress', inputFilterNumbersOnly);
|
document.getElementById('advanceTime').addEventListener('keypress', inputFilterNumbersOnly);
|
||||||
document.getElementById('speedStep').addEventListener('keypress', inputFilterNumbersOnly);
|
document.getElementById('speedStep').addEventListener('keypress', inputFilterNumbersOnly);
|
||||||
|
document.getElementById('fastSpeed').addEventListener('keypress', inputFilterNumbersOnly);
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user