🏠 Home 

Video Shortcuts

Ускоряйте, замедляйте, перематывайте вперед и назад, зацикливайте любое видео HTML5 на любом сайте с помощью быстрых клавиш!

// ==UserScript==
// @name            Video Shortcuts
// @name:de         Video Tastaturkürzel
// @name:en         Video Shortcuts
// @name:es         Video Shortcuts
// @name:it         Video Shortcuts
// @name:ja         Video Shortcuts
// @name:fr         Video Shortcuts
// @name:ko         Video Shortcuts
// @name:pl         Video Shortcuts
// @name:ru         Video Shortcuts
// @name:zh         视频的键盘快捷键
// @namespace       videoShortcuts
// @version         0.3
// @description     Speed up, slow down, advance, rewind, loop any HTML5 video on any site with quick shortcuts!
// @description:de  Beschleunigen, verlangsamen, vorrücken, zurückspulen, jedes HTML5-Video auf jeder Site mit schnellen Verknüpfungen schleifen!
// @description:en  Speed up, slow down, advance, rewind, loop any HTML5 video on any site with quick shortcuts!
// @description:es  ¡Acelere, reduzca la velocidad, avance, retroceda, repita cualquier video HTML5 en cualquier sitio con atajos rápidos!
// @description:it  Accelera, rallenta, avanza, riavvolgi, riproduci in loop qualsiasi video HTML5 su qualsiasi sito con tasti rapidi!
// @description:ja  クイックショートカットを使用して、サイト上のHTML5ビデオをスピードアップ、スローダウン、アドバンス、巻き戻し、ループします。
// @description:fr  Accélérez, ralentissez, avancez, rembobinez, bouclez n'importe quelle vidéo HTML5 sur n'importe quel site avec des raccourcis rapides!
// @description:ko  빠른 바로 가기로 모든 사이트에서 HTML5 비디오의 속도를 높이고, 느리게하고, 진행하고, 되 감고, 반복합니다!
// @description:pl  Przyspiesz, zwalniaj, przewijaj, przewijaj do tyłu, zapętlaj dowolny film HTML5 na dowolnej stronie dzięki szybkim skrótom!
// @description:ru  Ускоряйте, замедляйте, перематывайте вперед и назад, зацикливайте любое видео HTML5 на любом сайте с помощью быстрых клавиш!
// @description:zh  加快,放慢速度,快进,快退,循环播放任何站点上的HTML5视频,并提供快速快捷键!
// @author          Blank
// @match           *://*/*
// @run-at          document-idle
// @grant           none
// @compatible      chrome
// @compatible      firefox
// @compatible      safari
// @compatible      opera
// ==/UserScript==
// shortcuts:
// - speed - 0.25 (speedDelta const)
// = speed + 0.25 (speedDelta const)
// \ speed = 1
// ] advance 10s (timeDelta const)
// [ rewind 10s (timeDelta const)
// ` toggle loop (loop is OFF by default)
(function main() {
'use strict';
const speedDelta = 0.25;
const timeDelta = 10;
const applyLimits = (x, min, max) => {
if (x < min) return min;
if (x > max) return max;
return x;
};
window.addEventListener('message', ({ data }) => {
if (data === 'pleasePauseVideo') {
document.querySelectorAll('video').forEach((video) => video.pause());
}
});
document.addEventListener('keydown', ({ target, code }) => {
if (target.tagName === 'INPUT' || target.tagName === 'TEXTAREA' || target.isContentEditable) return;
switch (code) {
case 'Equal': // = speed+
document.querySelectorAll('video').forEach((video) => {
video.playbackRate = applyLimits(video.playbackRate + speedDelta, 0, 16);
});
break;
case 'Minus': // - speed-
document.querySelectorAll('video').forEach((video) => {
video.playbackRate = applyLimits(video.playbackRate - speedDelta, 0, 16);
});
break;
case 'Backslash': // \ speed reset
document.querySelectorAll('video').forEach((video) => {
video.playbackRate = 1;
});
break;
case 'BracketLeft': // [ rewind
document.querySelectorAll('video').forEach((video) => {
video.currentTime = applyLimits(video.currentTime - timeDelta, 0, video.duration);
});
break;
case 'BracketRight': // ] advance
document.querySelectorAll('video').forEach((video) => {
if (video.currentTime < video.duration) {
video.currentTime = applyLimits(video.currentTime + timeDelta, 0, video.duration);
}
});
break;
case 'Backquote': // ` toggle loop
document.querySelectorAll('video').forEach((video) => {
video.loop = !video.loop;
});
break;
default:
}
}, { passive: true });
}());