From b3db296c0a44632da0762fe08fb8e268976fb2e6 Mon Sep 17 00:00:00 2001 From: "J. B. Rainsberger" Date: Tue, 18 Apr 2017 02:03:29 -0300 Subject: [PATCH] Playback at "fast" speed (#203) Added new custom key ("G") to jump to a favorite "fast speed", which is also configurable. --- inject.js | 12 ++++++++++++ options.html | 8 ++++++++ options.js | 12 ++++++++++++ 3 files changed, 32 insertions(+) diff --git a/inject.js b/inject.js index 58996e0..fd75f3c 100644 --- a/inject.js +++ b/inject.js @@ -4,6 +4,7 @@ chrome.extension.sendMessage({}, function(response) { speed: 1.0, // default 1x resetSpeed: 1.0, // default 1x speedStep: 0.1, // default 0.1x + fastSpeed: 1.8, // default 1.8x rewindTime: 10, // default 10s advanceTime: 10, // default 10s resetKeyCode: 82, // default: R @@ -12,6 +13,7 @@ chrome.extension.sendMessage({}, function(response) { rewindKeyCode: 90, // default: Z advanceKeyCode: 88, // default: X displayKeyCode: 86, // default: V + fastKeyCode: 71, // default: G rememberSpeed: false, // default: false startHidden: false, // default: false blacklist: ` @@ -27,12 +29,14 @@ chrome.extension.sendMessage({}, function(response) { tc.settings.speed = Number(storage.speed); tc.settings.resetSpeed = Number(storage.resetSpeed); tc.settings.speedStep = Number(storage.speedStep); + tc.settings.fastSpeed = Number(storage.fastSpeed); tc.settings.rewindTime = Number(storage.rewindTime); tc.settings.advanceTime = Number(storage.advanceTime); tc.settings.resetKeyCode = Number(storage.resetKeyCode); tc.settings.rewindKeyCode = Number(storage.rewindKeyCode); tc.settings.slowerKeyCode = Number(storage.slowerKeyCode); tc.settings.fasterKeyCode = Number(storage.fasterKeyCode); + tc.settings.fastKeyCode = Number(storage.fastKeyCode); tc.settings.displayKeyCode = Number(storage.displayKeyCode); tc.settings.advanceKeyCode = Number(storage.advanceKeyCode); tc.settings.rememberSpeed = Boolean(storage.rememberSpeed); @@ -226,6 +230,8 @@ chrome.extension.sendMessage({}, function(response) { runAction('reset', document, true) } else if (keyCode == tc.settings.displayKeyCode) { runAction('display', document, true) + } else if (keyCode == tc.settings.fastKeyCode) { + runAction('fast', document, true); } return false; @@ -328,11 +334,17 @@ chrome.extension.sendMessage({}, function(response) { controller.classList.toggle('vsc-hidden'); } else if (action === 'drag') { handleDrag(v, controller); + } else if (action === 'fast') { + playVideoAtFastSpeed(v); } } }); } + function playVideoAtFastSpeed(video) { + video.playbackRate = tc.settings.fastSpeed; + } + function handleDrag(video, controller) { const parentElement = controller.parentElement, shadowController = controller.shadowRoot.querySelector('#controller'); diff --git a/options.html b/options.html index 0e2ab43..33bc8a5 100644 --- a/options.html +++ b/options.html @@ -32,6 +32,10 @@ +
+ + +
@@ -56,6 +60,10 @@
+
+ + +
diff --git a/options.js b/options.js index ab7af96..c1136e0 100644 --- a/options.js +++ b/options.js @@ -3,9 +3,11 @@ var tcDefaults = { speedStep: 0.1, // default 0.1x rewindTime: 10, // default 10s advanceTime: 10, // default 10s + fastSpeed: 1.8, // default 1.8x resetKeyCode: 82, // default: R slowerKeyCode: 83, // default: S fasterKeyCode: 68, // default: D + fastKeyCode: 71, // default: G rewindKeyCode: 90, // default: Z advanceKeyCode: 88, // default: X displayKeyCode: 86, // default: V @@ -92,11 +94,13 @@ function save_options() { var speedStep = document.getElementById('speedStep').value; var rewindTime = document.getElementById('rewindTime').value; var advanceTime = document.getElementById('advanceTime').value; + var fastSpeed = document.getElementById('fastSpeed').value; var resetKeyCode = document.getElementById('resetKeyInput').keyCode; var rewindKeyCode = document.getElementById('rewindKeyInput').keyCode; var advanceKeyCode = document.getElementById('advanceKeyInput').keyCode; var slowerKeyCode = document.getElementById('slowerKeyInput').keyCode; var fasterKeyCode = document.getElementById('fasterKeyInput').keyCode; + var fastKeyCode = document.getElementById('fastKeyInput').keyCode; var displayKeyCode = document.getElementById('displayKeyInput').keyCode; var rememberSpeed = document.getElementById('rememberSpeed').checked; var startHidden = document.getElementById('startHidden').checked; @@ -105,22 +109,26 @@ function save_options() { speedStep = isNaN(speedStep) ? tcDefaults.speedStep : Number(speedStep); rewindTime = isNaN(rewindTime) ? tcDefaults.rewindTime : Number(rewindTime); advanceTime = isNaN(advanceTime) ? tcDefaults.advanceTime : Number(advanceTime); + fastSpeed = isNaN(fastSpeed) ? tcDefaults.fastSpeed : Number(fastSpeed); resetKeyCode = isNaN(resetKeyCode) ? tcDefaults.resetKeyCode : resetKeyCode; rewindKeyCode = isNaN(rewindKeyCode) ? tcDefaults.rewindKeyCode : rewindKeyCode; advanceKeyCode = isNaN(advanceKeyCode) ? tcDefaults.advanceKeyCode : advanceKeyCode; slowerKeyCode = isNaN(slowerKeyCode) ? tcDefaults.slowerKeyCode : slowerKeyCode; fasterKeyCode = isNaN(fasterKeyCode) ? tcDefaults.fasterKeyCode : fasterKeyCode; + fastKeyCode = isNaN(fastKeyCode) ? tcDefaults.fastKeyCode : fastKeyCode; displayKeyCode = isNaN(displayKeyCode) ? tcDefaults.displayKeyCode : displayKeyCode; chrome.storage.sync.set({ speedStep: speedStep, rewindTime: rewindTime, advanceTime: advanceTime, + fastSpeed: fastSpeed, resetKeyCode: resetKeyCode, rewindKeyCode: rewindKeyCode, advanceKeyCode: advanceKeyCode, slowerKeyCode: slowerKeyCode, fasterKeyCode: fasterKeyCode, + fastKeyCode: fastKeyCode, displayKeyCode: displayKeyCode, rememberSpeed: rememberSpeed, startHidden: startHidden, @@ -141,11 +149,13 @@ function restore_options() { document.getElementById('speedStep').value = storage.speedStep.toFixed(2); document.getElementById('rewindTime').value = storage.rewindTime; document.getElementById('advanceTime').value = storage.advanceTime; + document.getElementById('fastSpeed').value = storage.fastSpeed; updateShortcutInputText('resetKeyInput', storage.resetKeyCode); updateShortcutInputText('rewindKeyInput', storage.rewindKeyCode); updateShortcutInputText('advanceKeyInput', storage.advanceKeyCode); updateShortcutInputText('slowerKeyInput', storage.slowerKeyCode); updateShortcutInputText('fasterKeyInput', storage.fasterKeyCode); + updateShortcutInputText('fastKeyInput', storage.fastKeyCode); updateShortcutInputText('displayKeyInput', storage.displayKeyCode); document.getElementById('rememberSpeed').checked = storage.rememberSpeed; document.getElementById('startHidden').checked = storage.startHidden; @@ -182,9 +192,11 @@ document.addEventListener('DOMContentLoaded', function () { initShortcutInput('advanceKeyInput'); initShortcutInput('slowerKeyInput'); initShortcutInput('fasterKeyInput'); + initShortcutInput('fastKeyInput'); initShortcutInput('displayKeyInput'); document.getElementById('rewindTime').addEventListener('keypress', inputFilterNumbersOnly); document.getElementById('advanceTime').addEventListener('keypress', inputFilterNumbersOnly); document.getElementById('speedStep').addEventListener('keypress', inputFilterNumbersOnly); + document.getElementById('fastSpeed').addEventListener('keypress', inputFilterNumbersOnly); })