From dd3a5351fc24c1ef126f88733d278d9e908b63f9 Mon Sep 17 00:00:00 2001 From: 17ms <79069176+17ms@users.noreply.github.com> Date: Tue, 25 Apr 2023 23:26:00 +0300 Subject: [PATCH] f1tv keyboard shortcuts --- README.md | 11 +++--- shortcut/f1tv-shortcuts.js | 79 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 shortcut/f1tv-shortcuts.js diff --git a/README.md b/README.md index 9b01580..e291bf3 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,9 @@ Tested with [Violentmonkey](https://violentmonkey.github.io/). Available on [Greasyfork](https://greasyfork.org/en/users/1033565-17ms). -* [4c-autohide.js](visual/4c-autohide.js) -* [4c-gallery.js](visual/4c-gallery.js) -* [4c-image-expander.js](visual/4c-image-expander.js) -* [y-image-expander.js](visual/y-image-expander.js) -* [y-media-downloader.js](download/y-media-downloader.js) +- [4c-autohide.js](visual/4c-autohide.js) +- [4c-gallery.js](visual/4c-gallery.js) +- [4c-image-expander.js](visual/4c-image-expander.js) +- [f1tv-shortcuts.js](shortcut/f1tv-shortcuts.js) +- [y-image-expander.js](visual/y-image-expander.js) +- [y-media-downloader.js](download/y-media-downloader.js) diff --git a/shortcut/f1tv-shortcuts.js b/shortcut/f1tv-shortcuts.js new file mode 100644 index 0000000..1adc52e --- /dev/null +++ b/shortcut/f1tv-shortcuts.js @@ -0,0 +1,79 @@ +// ==UserScript== +// @name f1tv-shortcuts +// @description Additional keyboard shortcuts for F1TV +// @author 17ms +// @license MIT License +// @namespace Violentmonkey Scripts +// @match *://f1tv.formula1.com/detail/* +// @version 1.0 +// ==/UserScript== + +/* +Default bindings: + "k" play/pause + "j" 10s rewind + "l" 10s forward + "m" mute + "f" toggle fullscreen +*/ + +const keys = ["k", "j", "l", "m", "f"] + +const wrapperQuery = ".bmpui-container-wrapper" +const playQuery = ".bmpui-ui-playbacktogglebutton" +const muteQuery = ".bmpui-ui-volumetogglebutton" +const rewindQuery = ".bmpui-ui-rewindbutton" +const forwardQuery = ".bmpui-ui-forwardbutton" +const volumeQuery = ".bmpui-ui-volumetogglebutton" +const fullscreenQuery = ".bmpui-ui-fullscreentogglebutton" + +const waitInit = (query) => { + return new Promise((resolve) => { + if (document.querySelector(query)) { + return resolve(document.querySelector(query)) + } + + const observer = new MutationObserver((mutations) => { + if (document.querySelector(query)) { + resolve(document.querySelector(query)) + observer.disconnect() + } + }) + + observer.observe(document.body, { + childList: true, + subtree: true + }) + }) +} + +let play, mute, forward, rewind, volume, fullscreen +waitInit(wrapperQuery).then((w) => { + console.log("f1tv-shortcuts: Wrapper loaded") + play = w.querySelector(playQuery) + mute = w.querySelector(muteQuery) + rewind = w.querySelector(rewindQuery) + forward = w.querySelector(forwardQuery) + volume = w.querySelector(volumeQuery) + fullscreen = w.querySelector(fullscreenQuery) +}) + +document.addEventListener("keyup", (e) => { + switch (e.key) { + case keys[0]: + play.click() + break + case keys[1]: + rewind.click() + break + case keys[2]: + forward.click() + break + case keys[3]: + volume.click() + break + case keys[4]: + fullscreen.click() + break + } +})