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:
J. B. Rainsberger
2017-04-18 02:03:29 -03:00
committed by Ilya Grigorik
parent 7437c3a2c9
commit b3db296c0a
3 changed files with 32 additions and 0 deletions

View File

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

View File

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

View File

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