滚轮音量调节;鼠标功能键全屏;快捷键:开关弹幕D、网页全屏W、隐藏有边框Q、↑↓键音量调节、←→快进快退改成5s、Ctrl+←→快进快退30s
// ==UserScript==// @name 优#(youku)快捷操作// @namespace hhh2000// @version 0.1// @description 滚轮音量调节;鼠标功能键全屏;快捷键:开关弹幕D、网页全屏W、隐藏有边框Q、↑↓键音量调节、←→快进快退改成5s、Ctrl+←→快进快退30s// @author hhh2000// @match http*://v.youku.com/v_show/*// @require https://cdn.staticfile.org/jquery/1.12.4/jquery.min.js// @run-at document-end// @grant none// @compatible chrome/* globals jQuery, $, waitForkeyElements *//* eslint-disable no-multi-spaces, dot-notation *//* eslint no-eval:0 */// ==/UserScript=='use strict';(function() {function getkeyCode(k) {var keyCodes = {300: '滚↑轮',301: '滚↓轮',302: '鼠标左键',303: '鼠标右键',304: '鼠标中键',305: '鼠标左前侧键',306: '鼠标左后侧键',307: '鼠标右前侧键',308: '鼠标右后侧键',309: '鼠标中前侧键',310: '鼠标中后侧键',0: "",3: "break",8: "Backspace",9: "Tab",12: "Clear",13: "Enter",16: "Shift",17: "Ctrl",18: "Alt",19: "PauseBreak",20: "CapsLock",27: "Escape",32: "Space",33: "PageUp",34: "PageDown",35: "End",36: "Home",37: "←", //LeftArrow ↑ ↓ ← →38: "↑", //UpArrow39: "→", //RightArrow40: "↓", //DownArrow45: "Insert",46: "Delete",48: "0",49: "1",50: "2",51: "3",52: "4",53: "5",54: "6",55: "7",56: "8",57: "9",65: "A",66: "B",67: "C",68: "D",69: "E",70: "F",71: "G",72: "H",73: "I",74: "J",75: "K",76: "L",77: "M",78: "N",79: "O",80: "P",81: "Q",82: "R",83: "S",84: "T",85: "U",86: "V",87: "W",88: "X",89: "Y",90: "Z",93: "ContextMenu",96: "NumPad0",97: "NumPad1",98: "NumPad2",99: "NumPad3",100: "NumPad4",101: "NumPad5",102: "NumPad6",103: "NumPad7",104: "NumPad8",105: "NumPad9",106: "NumPad_Multiply",107: "NumPad_Add",108: "NumPad_Separator",109: "NumPad_Subtract",110: "NumPad_Decimal",111: "NumPad_Divide",112: "F1",113: "F2",114: "F3",115: "F4",116: "F5",117: "F6",118: "F7",119: "F8",120: "F9",121: "F10",122: "F11",123: "F12",124: "F13",125: "F14",126: "F15",127: "F16",128: "F17",129: "F18",130: "F19",144: "NumLock",145: "ScrollLock",166: "BrowserBack",167: "BrowserForward",170: "BrowserSearch",172: "BrowserHome",173: "AudioVolumeMute",174: "AudioVolumeDown",175: "AudioVolumeUp",176: "MediaTrackNext",177: "MediaTrackPrevious",178: "MediaStop",179: "MediaPlayPause",180: "LaunchMail",181: "LaunchMediaPlayer",183: "LaunchApp2",186: ";",187: "=",188: ",",189: "-",190: ".",191: "/",192: "`",193: "ABNT_C1",194: "ABNT_C2",219: "[",220: "\\",221: "]",222: "'",223: "OEM_8",226: "OEM_102",229: "KeyInComposition",};return keyCodes[k];}let keycode = {'Enter': 13,'Ctrl': 17,'Esc': 27,'left': 37,'right': 39,'up': 38,'down': 40,'space': 32,'NumPad0': 96,'NumPad_Decimal': 110,}let h5Playerlet log = console.loglet dir = console.dirlet err = console.errorfunction waitForTrue(ifTrue, callback, time=100) {if(--time < 0) {err('waitForTrue 超时 '+ifTrue); return false;}const fn = waitForTrue;//let fn = arguments.callee;if (ifTrue()) {callback(); return true;} else {setTimeout(function() { fn(ifTrue, callback, time); }, 50);}}function geth5Player(){ return $('video')[0] }function set_progress(selector, percent, limit_begin, limit_end){function calc_bar_offset(percent, bar_length, limit_begin, limit_end){let p = Math.max(Math.min(+percent, limit_end), limit_begin);let limit = limit_end - limit_begin;let bar_offset = (p-limit_begin) * bar_length / limit;//console.log(p, limit, bar_offset)//return Math.round(bar_offset); //百分比对应进度条位置return bar_offset; //百分比对应进度条位置}$('.kui-dashboard-dashboard-panel').css('display','flex')$('.kui-volumecontrol-').addClass('kui-s-hover')let e = new MouseEvent('click')let rect = selector.getBoundingClientRect()//console.log(rect)//console.log(percent, rect.bottom-rect.top, limit_begin, limit_end)let bar_offset = calc_bar_offset(percent, rect.bottom-rect.top, limit_begin, limit_end)let clientY = rect.bottom - bar_offset//console.log(bar_offset+' - '+clientY)e.initMouseEvent('click',1,1,window,1,0,0,0,clientY+0.5,0,0,0,0,0,null)selector.dispatchEvent(e)$('.kui-volumecontrol-').removeClass('kui-s-hover')$('.kui-dashboard-dashboard-panel').css('display','')}function adjust_progress(selector, inc_percent, range_bengin, range_end){const curr_percent = parseInt($('#volume-tip').text())//console.log(curr_percent,inc_percent,(curr_percent+parseInt(inc_percent)))set_progress(selector, curr_percent+parseInt(inc_percent), 0, 100)}//显示hintfunction cut_InfoDisappear(){if($('.kui-message-information-item').css('animation-name') === 'InfoDisappear'){$('.kui-message-information-item').css('animation-name', 'InfoDisappear1')}else{$('.kui-message-information-item').css('animation-name', 'InfoDisappear')}}function select_rate(diff){let rate_text = ['0.5X','1.0X','1.25X','1.5X','2.0X']let curr_rate_text = $('.kui-playrate-rate-item[style*=color]').text()//console.log(curr_rate_text)let rate_index = rate_text.indexOf(curr_rate_text) + diffrate_index = Math.min(Math.max(rate_index, 0), rate_text.length-1)//console.log(rate_index)$(`.kui-playrate-rate-item:contains(${rate_text[rate_index]})`).click()$('.kui-message-information-item .kui-message-information-text').text(`${rate_text[rate_index]}`)//curr_rate_text = $('.kui-playrate-rate-item[style*=color]').text()//console.log(curr_rate_text)}function setCurrentTime(second){h5Player = geth5Player()h5Player.currentTime = h5Player.currentTime + second;}//滚轮音量调节;鼠标功能键全屏;快捷键:开关弹幕D、网页全屏W、隐藏有边框Q、↑↓键音量调节、←→快进快退改成5s、Ctrl+←→快进快退30sfunction run(){log('youku快捷操作加载完毕')h5Player = geth5Player()let keystrokes = 0//非全屏滚轮音量调节$('#player').off('mousewheel.hhh_youku').on('mousewheel.hhh_youku',function(e){let delta = e.originalEvent.wheelDeltaif(delta >= 120){ //upadjust_progress($('#kui_dashboard_volume-control_volumeSlider')[0], 1, 0, 100)}else{adjust_progress($('#kui_dashboard_volume-control_volumeSlider')[0], -1, 0, 100)}return false})//功能键全屏$('#player').off('mousedown.hhh_youku').on('mousedown.hhh_youku',function(e){if(e.buttons > 2){$('.kui-webfullscreen-icon-0').click()return false}})//======快捷键======$('body').off('keyup.hhh_youku').on('keyup.hhh_youku',function(e){if(e.ctrlKey && (e.keyCode === keycode['left'] || e.keyCode === keycode['right'])){ //←→ +/-30sreturn false}if(e.keyCode === keycode['left'] || e.keyCode === keycode['right']){ //←→ +/-5s//log('keystrokes: ',keystrokes)if(e.keyCode === keycode['right'] && keystrokes > 1){keystrokes = 0return}keystrokes = 0let secode = e.keyCode === keycode['left'] ? 5 : -10setCurrentTime(secode)h5Player.play()//h5Player.playbackRate = 1//return false}})$('body').off('keydown.hhh_youku').on('keydown.hhh_youku',function(e){//---功能键---if(e.ctrlKey && (e.keyCode === keycode['up'] || e.keyCode === keycode['down'])){ //Ctrl+↑↓ 视频速度if(e.keyCode === keycode['up']){select_rate(1)}else{select_rate(-1)}return false}else if(e.ctrlKey && (e.keyCode === keycode['left'] || e.keyCode === keycode['right'])){ //Ctrl+←→ +/-30slet secode = e.keyCode === keycode['left'] ? -30 : 30setCurrentTime(secode)h5Player.play();return false}if(e.ctrlKey || e.shiftKey || e.altKey) return;//---非功能键---if(e.keyCode === keycode['up'] || e.keyCode === keycode['down']){ //↑↓音量if(e.keyCode === keycode['up']){adjust_progress($('#kui_dashboard_volume-control_volumeSlider')[0], 5, 0, 100)}else{adjust_progress($('#kui_dashboard_volume-control_volumeSlider')[0], -5, 0, 100)}//$('.kui-message-information-text font').text($('#volume-tip').text()) //set hint text//cut_InfoDisappear()return false}else if(e.keyCode === keycode['NumPad_Decimal'] || e.keyCode === keycode['NumPad0']){ //NumPad_Decimal numpad1音量if(e.keyCode === keycode['NumPad_Decimal']){adjust_progress($('.kui-volumecontrol-volume-dashboard')[0], -1, 0, 100)}else{adjust_progress($('.kui-volumecontrol-volume-dashboard')[0], 1, 0, 100)}return false}else if(e.keyCode === keycode['right']){ //++keystrokes//if(keystrokes === 1) return false}else if(e.keyCode === 'W'.charCodeAt()){ //W 网页全屏$('.kui-webfullscreen-icon-0').click()}else if(e.keyCode === 'Q'.charCodeAt()){ //W 宽屏$('.iconzhankaijiantou-shang, .iconzhankaijiantou-xia').click()}else if(e.keyCode === 'D'.charCodeAt()){ //D 开关弹幕$('.switch-img_12hDa:first').click()}})}waitForTrue(()=>$('#kui_dashboard_volume-control_volumeSlider').length>0, ()=>{run()})})();