Greasy Fork

Greasy Fork is available in English.

视频助手

使用键盘控制视频播放

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         视频助手
// @namespace    https://github.com/Aoerz/UserScripts
// @version      0.2
// @description  使用键盘控制视频播放
// @author       Aoerz
// @include      https://www.icourse163.org/*
// @include      https://www.xuetangx.com/*
// @include      https://www.coursera.org/*
// @include      https://www.bilibili.com/*
// @include      https://v.qq.com/*
// @include      https://www.iqiyi.com/*
// @include      https://v.youku.com/*
// @grant        none
// ==/UserScript==
(function() {
  "use strict";
  var skipTime = 10;
  var skipVolume = 0.1;
  var volumeTemp;
  function xuetangxAssistant() {
    document.onkeydown = function(e) {
      var evt = e || window.event;
      var v = document.querySelector("video");
      event.preventDefault();
      switch (evt.keyCode) {
        case 90:
        case 37: {
          //left
          if (v.currentTime < skipTime) {
            v.currentTime = 0;
            alert("已到达视频开头,无法快退");
          }
          console.log("快退" + skipTime + "s");
          v.currentTime = v.currentTime - skipTime;
          break;
        }
        case 88:
        case 39: {
          //right
          if (v.currentTime > v.duration - skipTime) {
            alert("已到达视频末尾,无法快进");
            v.currentTime = v.duration;
          }
          console.log("快进" + skipTime + "s");
          v.currentTime = v.currentTime + skipTime;
          break;
        }
        case 68:
        case 38: {
          //up
          if (v.volume > 1 - skipVolume) {
            alert("到达最大音量");
            v.volume = 1;
            break;
          }
          console.log("音量放大" + skipVolume * 100 + "%");
          v.volume = v.volume + 0.1;
          break;
        }
        case 83:
        case 40: {
          //down
          if (v.volume < skipVolume) {
            alert("到达最小音量");
            v.volume = 0;
            break;
          }
          console.log("音量减小" + skipVolume * 100 + "%");
          v.volume = v.volume - skipVolume;
          break;
        }
        case 32: {
          //pause
          if (v.paused) {
            console.log("播放");
            v.play();
          } else {
            console.log("暂停");
            v.pause();
          }
          break;
        }
        case 70: {
          //fullscreen
          if (!document.fullscreenElement) {
            v.requestFullscreen();
          } else {
            if (document.exitFullscreen) {
              document.exitFullscreen();
            }
          }
          break;
        }
        case 77: {
          //muse
          if (v.volume === 0) {
            v.volume = volumeTemp;
          } else {
            volumeTemp = v.volume;
            v.volume = 0;
          }
          break;
        }
        case 36: {
          //home
          v.currentTime = 0;
          break;
        }
        case 35: {
          //end
          v.currentTime = v.duration;
          break;
        }
      }
    };
  }
  xuetangxAssistant();
})();