80 lines
1.9 KiB
JavaScript
80 lines
1.9 KiB
JavaScript
// ==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
|
|
}
|
|
})
|