返回首頁 

Greasy Fork is available in English.

HTML5播放器自定义配置

HTML5播放器自定义配置,按需定制自己的功能

  1. // ==UserScript==// @name HTML5播放器自定义配置// @name:en HTML5 player enhanced script custom configuration// @namespace https://github.com/xxxily/h5player// @homepage https://github.com/xxxily/h5player// @version 0.0.1// @description HTML5播放器自定义配置,按需定制自己的功能// @description:en HTML5 video player enhanced script custom configuration// @author ankvps// @icon https://cdn.jsdelivr.net/gh/xxxily/h5player@master/logo.png// @match *://*/*// @grant unsafeWindow// @run-at document-start// @license GPL// ==/UserScript==/* 自定义配置 */const customConfiguration = {media: {autoPlay: false,playbackRate: 1,volume: 1,/* 是否允许存储播放进度 */allowRestorePlayProgress: {},/* 视频播放进度映射表 */progress: {}},hotkeys: [{desc: '网页全屏',key: 'shift+enter',command: 'setWebFullScreen',/* 如需禁用快捷键,将disabled设为true */disabled: false},{desc: '全屏',key: 'enter',command: 'setFullScreen'},{desc: '切换画中画模式',key: 'shift+p',command: 'togglePictureInPicture'},{desc: '视频截图',key: 'shift+s',command: 'capture'},{desc: '启用或禁止自动恢复播放进度功能',key: 'shift+r',command: 'capture'},{desc: '垂直镜像翻转',key: 'shift+m',command: 'setMirror',args: [true]},{desc: '水平镜像翻转',key: 'm',command: 'setMirror'},{desc: '下载音视频文件(实验性功能)',key: 'shift+d',command: 'mediaDownload'},{desc: '缩小视频画面 -0.05',key: 'shift+x',command: 'setScaleDown'},{desc: '放大视频画面 +0.05',key: 'shift+c',command: 'setScaleUp'},{desc: '恢复视频画面',key: 'shift+z',command: 'resetTransform'},{desc: '画面向右移动10px',key: 'shift+arrowright',command: 'setTranslateRight'},{desc: '画面向左移动10px',key: 'shift+arrowleft',command: 'setTranslateLeft'},{desc: '画面向上移动10px',key: 'shift+arrowup',command: 'setTranslateUp'},{desc: '画面向下移动10px',key: 'shift+arrowdown',command: 'setTranslateDown'},{desc: '前进5秒',key: 'arrowright',command: 'setCurrentTimeUp'},{desc: '后退5秒',key: 'arrowleft',command: 'setCurrentTimeDown'},{desc: '前进30秒',key: 'ctrl+arrowright',command: 'setCurrentTimeUp',args: [30]},{desc: '后退30秒',key: 'ctrl+arrowleft',command: 'setCurrentTimeDown',args: [-30]},{desc: '音量升高 5%',key: 'arrowup',command: 'setVolumeUp',args: [0.05]},{desc: '音量降低 5%',key: 'arrowdown',command: 'setVolumeDown',args: [-0.05]},{desc: '音量升高 20%',key: 'ctrl+arrowup',command: 'setVolumeUp',args: [0.2]},{desc: '音量降低 20%',key: 'ctrl+arrowdown',command: 'setVolumeDown',args: [-0.2]},{desc: '切换暂停/播放',key: 'space',command: 'switchPlayStatus'},{desc: '减速播放 -0.1',key: 'x',command: 'setPlaybackRateDown'},{desc: '加速播放 +0.1',key: 'c',command: 'setPlaybackRateUp'},{desc: '正常速度播放',key: 'z',command: 'resetPlaybackRate'},{desc: '设置1x的播放速度',key: 'Digit1',command: 'setPlaybackRatePlus',args: 1},{desc: '设置1x的播放速度',key: 'Numpad1',command: 'setPlaybackRatePlus',args: 1},{desc: '设置2x的播放速度',key: 'Digit2',command: 'setPlaybackRatePlus',args: 2},{desc: '设置2x的播放速度',key: 'Numpad2',command: 'setPlaybackRatePlus',args: 2},{desc: '设置3x的播放速度',key: 'Digit3',command: 'setPlaybackRatePlus',args: 3},{desc: '设置3x的播放速度',key: 'Numpad3',command: 'setPlaybackRatePlus',args: 3},{desc: '设置4x的播放速度',key: 'Digit4',command: 'setPlaybackRatePlus',args: 4},{desc: '设置4x的播放速度',key: 'Numpad4',command: 'setPlaybackRatePlus',args: 4},{desc: '下一帧',key: 'F',command: 'freezeFrame',args: 1},{desc: '上一帧',key: 'D',command: 'freezeFrame',args: -1},{desc: '增加亮度',key: 'E',command: 'setBrightnessUp'},{desc: '减少亮度',key: 'W',command: 'setBrightnessDown'},{desc: '增加对比度',key: 'T',command: 'setContrastUp'},{desc: '减少对比度',key: 'R',command: 'setContrastDown'},{desc: '增加饱和度',key: 'U',command: 'setSaturationUp'},{desc: '减少饱和度',key: 'Y',command: 'setSaturationDown'},{desc: '增加色相',key: 'O',command: 'setHueUp'},{desc: '减少色相',key: 'I',command: 'setHueDown'},{desc: '模糊增加 1 px',key: 'K',command: 'setBlurUp'},{desc: '模糊减少 1 px',key: 'J',command: 'setBlurDown'},{desc: '图像复位',key: 'Q',command: 'resetFilterAndTransform'},{desc: '画面旋转 90 度',key: 'S',command: 'setRotate'},{desc: '播放下一集',key: 'N',command: 'setNextVideo'},{desc: '执行JS脚本',key: 'ctrl+j ctrl+s',command: () => {alert('自定义JS脚本-demo')},when: ''}],enhance: {/* 不禁用默认的调速逻辑,则在多个视频切换时,速度很容易被重置,所以该选项默认开启 */blockSetPlaybackRate: true,blockSetCurrentTime: false,blockSetVolume: false,allowExperimentFeatures: false},debug: false}/*** 任务配置中心 Task Control Center* 用于配置所有无法进行通用处理的任务,如不同网站的全屏方式不一样,必须调用网站本身的全屏逻辑,才能确保字幕、弹幕等正常工作**/const customTaskControlCenter = {/*** 配置示例* 父级键名对应的是一级域名,* 子级键名对应的相关功能名称,键值对应的该功能要触发的点击选择器或者要调用的相关函数* 所有子级的键值都支持使用选择器触发或函数调用* 配置了子级的则使用子级配置逻辑进行操作,否则使用默认逻辑* 注意:include,exclude这两个子级键名除外,这两个是用来进行url范围匹配的* */'demo.demo': {fullScreen: '.fullscreen-btn',exitFullScreen: '.exit-fullscreen-btn',webFullScreen: function () {},exitWebFullScreen: '.exit-fullscreen-btn',autoPlay: '.player-start-btn',pause: '.player-pause',play: '.player-play',switchPlayStatus: '.player-play',playbackRate: function () {},currentTime: function () {},addCurrentTime: '.add-currenttime',subtractCurrentTime: '.subtract-currenttime',// 自定义快捷键的执行方式,如果是组合键,必须是 ctrl-->shift-->alt 这样的顺序,没有可以忽略,键名必须全小写shortcuts: {/* 注册要执行自定义回调操作的快捷键 */register: ['ctrl+shift+alt+c','ctrl+shift+c','ctrl+alt+c','ctrl+c','c'],/* 自定义快捷键的回调操作 */callback: function (h5Player, taskConf, data) {const { event, player } = dataconsole.log(event, player)}},/* 当前域名下需包含的路径信息,默认整个域名下所有路径可用 必须是正则 */include: /^.*/,/* 当前域名下需排除的路径信息,默认不排除任何路径 必须是正则 */exclude: /\t/},'netflix.com': {// 停止在netflix下使用插件的所有功能// disable: true,fullScreen: 'button.button-nfplayerFullscreen',addCurrentTime: 'button.button-nfplayerFastForward',subtractCurrentTime: 'button.button-nfplayerBackTen',/*** 使用netflix自身的调速,因为目前插件没法解决调速导致的服务中断问题* https://github.com/xxxily/h5player/issues/234* https://github.com/xxxily/h5player/issues/317* https://github.com/xxxily/h5player/issues/381* https://github.com/xxxily/h5player/issues/179* https://github.com/xxxily/h5player/issues/147*/playbackRate: true,shortcuts: {/*** TODO* netflix 一些用户习惯使用F键进行全屏,所以此处屏蔽掉f键的下一帧功能* 后续开放自定义配置能力后,让用户自行决定是否屏蔽*/register: ['f'],callback: function (h5Player, taskConf, data) {return true}}}}/* 注册自定义配置信息 */const pageWin = window.unsafeWindowif (pageWin) {const configuration = { customConfiguration, customTaskControlCenter }pageWin.__h5PlayerCustomConfiguration__ = configurationpageWin.__setH5PlayerCustomConfiguration__ instanceof Function && pageWin.__setH5PlayerCustomConfiguration__(configuration, 'External')}