Greasy Fork

Greasy Fork is available in English.

百度网盘自定义倍速播放

第一次写的脚本,主要是考研看视频舒服一点,设置了一个可以自定义倍速的脚本,后面会逐渐完善和增加功能,欢迎反馈

当前为 2021-03-03 提交的版本,查看 最新版本

// ==UserScript==
// @name         百度网盘自定义倍速播放
// @namespace    http://tampermonkey.net/
// @version      3.1
// @description  第一次写的脚本,主要是考研看视频舒服一点,设置了一个可以自定义倍速的脚本,后面会逐渐完善和增加功能,欢迎反馈
// @author       枫影
// @match        *://pan.baidu.com/play/video
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    //生成倍速下拉菜单
    function createSelect(id){
    	var s=document.createElement("SELECT");
    	s.setAttribute("id",id);
		s.setAttribute("lay-verify","required");
    	var p0=document.createElement("OPTION");
    	var p1=document.createElement("OPTION");
    	var p2=document.createElement("OPTION");
    	var p3=document.createElement("OPTION");
    	var p4=document.createElement("OPTION");
    	var p5=document.createElement("OPTION");
		
		p0.setAttribute("id","p0");
		p1.setAttribute("id","p1");
		p2.setAttribute("id","p2");
		p3.setAttribute("id","p3");
		p4.setAttribute("id","p4");
		p5.setAttribute("id","p5");
		
		p0.setAttribute("value","1");
		p1.setAttribute("value","0.5");
		p2.setAttribute("value","1.0");
		p3.setAttribute("value","1.5");
		p4.setAttribute("value","2");
		p5.setAttribute("value","5");
		
    	p0.innerHTML="快捷倍速";
    	p1.innerHTML="0.5";
    	p2.innerHTML="1.0";
    	p3.innerHTML="1.5";
    	p4.innerHTML="2";
    	p5.innerHTML="5";
		
    	s.add(p0);
    	s.add(p1);
		s.add(p2);
		s.add(p3);
		s.add(p4);
		s.add(p5);
		return s;
    }

    function createInput(inid,onid,selectid){
		window.onload=function(){
			layui.use('layer', function(){
			  var layer = layui.layer;
			  layer.msg('倍速脚本加载完成!欢迎使用');
			});
		 }
		//生成元素
		let cr=document.createElement("BUTTON");
		cr.setAttribute("class","layui-btn layui-btn-normal layui-btn-lg");
		cr.setAttribute("id","create");
		
		let sm=document.createElement("i");
		sm.setAttribute("class","layui-icon layui-icon-face-smile-b");
		sm.setAttribute("style","font-size: 30px; color: #ffffff;");
		cr.setAttribute("alt","隐藏倍速工具箱");
		cr.appendChild(sm);
		
		let f=document.createElement("fieldset");
		f.setAttribute("class","layui-elem-field");
		f.setAttribute("id","box");
		let le=document.createElement("legend");
		le.innerHTML="视频倍速工具箱";
		f.appendChild(le);
		
    	var d=document.createElement("FORM");
    	d.style.width="420px";
    	d.style.height="65px";
		d.setAttribute("id","inform");
		d.setAttribute("class","layui-form");
		
    	var init=document.createElement("INPUT");
    	init.setAttribute("type","text");
    	init.setAttribute("placeholder","请输入你想倍速的倍数");
    	init.setAttribute("id",inid);
		init.setAttribute("class","layui-input");
		
    	var on=document.createElement("BUTTON");
    	var res=document.createElement("BUTTON");
    	on.innerHTML="确认";
		on.setAttribute("id",onid);
		on.setAttribute("class","layui-btn layui-btn-sm");
    	res.setAttribute("type","reset");
		res.innerHTML="清空";
		res.setAttribute("class","layui-btn layui-btn-normal layui-btn-sm");
		var se=createSelect(selectid);
		
		//引入layui框架
		let js=document.createElement("script");
		js.setAttribute("type","text/javascript");
		js.setAttribute("src","https://www.layuicdn.com/layui-v2.5.6/layui.js");
		let css=document.createElement("link");
		css.setAttribute("type","text/css");
		css.setAttribute("href","https://www.layuicdn.com/layui-v2.5.6/css/layui.css");
		css.setAttribute("rel","stylesheet");
		let head=document.getElementsByTagName("head")[0];
		head.appendChild(js);
		head.appendChild(css);
		
		//设置位置
		f.style.position="absolute";
		f.style.left="0px";
		f.style.top="50%";
    	init.style.position="absolute";
		init.style.width="160px";
    	on.style.position="absolute";
    	res.style.position="absolute";
    	init.style.zIndex=999;
    	on.style.zIndex=999;
    	res.style.zIndex=999;
		init.style.top="30%";
		init.style.left="0px";
    	on.style.left="40%";
        on.style.top="34%";
    	res.style.left="51%";
        res.style.top="34%";
		se.style.position="absolute";
		se.style.top="63%";
		se.style.left="1px";
		se.style.zIndex=999;
		cr.style.position="absolute";
		cr.style.left="0px";
		cr.style.top="42%";
		
		//设置样式
		f.style.width="400px";
		f.style.height="125px";

		//生成到界面上
		document.body.appendChild(cr);
		d.appendChild(init);
		d.appendChild(on);
		d.appendChild(res);
		f.appendChild(d);
		f.appendChild(se);
		controlBox(f,false);
    	document.body.appendChild(f);
    }
	
	//显示当前倍速
	function outNow(fast){
		layui.use('layer', function(){
		  var layer = layui.layer;
		  layer.msg("当前倍速:"+fast);
		});
	}
	
	//控制工具箱的显示
	var flag=0;
	function createBox(){
		let on=document.getElementById("create");
		let f=document.getElementById("box");
		on.onclick=function(){
			//0表示此时是隐藏状态
			if(flag==0){
				layui.use('layer', function(){
				  var layer = layui.layer;
				  layer.msg("显示倍速工具箱");
				});
				
				let sm1=document.createElement("i");
				sm1.setAttribute("class","layui-icon layui-icon-face-cry");
				sm1.setAttribute("style","font-size: 30px; color: #ffffff;");
				on.setAttribute("alt","隐藏倍速工具箱");
				on.removeChild(on.firstChild);
				on.appendChild(sm1);
				controlBox(f,true);
				flag=1;
			}
			else{
				layui.use('layer', function(){
				  var layer = layui.layer;
				  layer.msg("隐藏倍速工具箱");
				});
				
				let sm2=document.createElement("i");
				sm2.setAttribute("class","layui-icon layui-icon-face-smile-b");
				sm2.setAttribute("style","font-size: 30px; color: #ffffff;");
				on.setAttribute("alt","显示倍速工具箱");
				on.removeChild(on.firstChild);
				on.appendChild(sm2);
				controlBox(f,false);
				flag=0;
			}
		}
	}
	
	//动画显示隐藏指定id的fileld
	function controlBox(fieldset,flag){
		//true为渐显
		if(flag==true){
			fieldset.setAttribute("class","layui-elem-field layui-anim layui-anim-fadein");
		}
		//false为渐隐
		else{
			fieldset.setAttribute("class","layui-elem-field layui-anim layui-anim-fadeout");
		}
	}
	
	//视频工具箱操作实现
	function control(selectid){
		let select=document.getElementById(selectid);
		select.onchange=function(){
			setFast(selectid,0.0);
		}
	}

	//设置倍速
    function setFast(id,num){
    	var fast;
		if(num==0.0){
			fast=document.getElementById(id).value;
		}
		else{
			fast=num;
		}
		if(fast==0){
			fast=1;
			alert('你输入的倍数非法,已为你自动调整到原倍速!');
		}
		console.log("执行倍速:"+fast);
    	videojs.getPlayers("video-player").html5player.tech_.setPlaybackRate(fast);
		outNow(fast);
    }

    function getInputFastAndSet(inid,btnid){
    	var on=document.getElementById(btnid);
    	on.onclick=function(){
    		setFast(inid,0.0);
    	}
    }
	
    createInput("in","btn","select");
    getInputFastAndSet("in","btn");
	control("select");
	createBox();
	
})();