课程视频助手

防止掉线;每分钟更新视频观看时间;结束后自动跳转下一视频;解除鼠标右键和F12禁用

Installer ce script?
Script suggéré par l'auteur

Vous pourriez également aimer Maximize Video.

Installer ce script
// ==UserScript==
// @name         课程视频助手
// @namespace    http://tampermonkey.net/
// @version      0.7
// @description  防止掉线;每分钟更新视频观看时间;结束后自动跳转下一视频;解除鼠标右键和F12禁用
// @author       零度
// @match        *://course.ucas.ac.cn/portal/site/*/tool/*/video/*
// @grant        GM_setValue
// @grant        GM_getValue
// ==/UserScript==

(function() {
    'use strict';
    var doc = document;
    var url = doc.URL;
    var html_source = doc.documentElement.outerHTML;
    if(url.indexOf('list')>=0){
        var video_id_list = html_source.match(/(?<=gotoPlay\(\')[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}/g);
        GM_setValue('VideoList', video_id_list);
    }
    else if(url.indexOf('play')>=0){
        portal.updateVideoView_url = html_source.match(/(?<=\$\.post\(\").*w(?=\",)/)[0];
        portal.updateVideoView_id = html_source.match(/(?<=id\:\s\")[0-9]*/)[0];
        portal.updateVideoView = function updateVideoView(){
            var videoState = $("#videoState").val();
		    if(videoState=="1"){
                $.post(portal.updateVideoView_url, { id: portal.updateVideoView_id },
		            function(data, state){
		                console.log('更新视频观看时间:'+state);
		 	            return("确定要关闭页面吗?");
	                }
                );
            }
        }
        portal.forever_keep_alive = function forever_keep_alive(){
            clearTimeout(sessionTimeOut);
            keep_session_alive();
            portal.updateVideoView();
            portal.forever_keep_alive_timer = setTimeout('portal.forever_keep_alive()', 60000);
        }
        portal.forever_keep_alive();
        portal.video_list = GM_getValue('VideoList', '');
        if(portal.video_list!=''){
            portal.cur_video_id = url.match(/(?<=id\=)[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}/)[0];
            var cur_video_index = portal.video_list.indexOf(portal.cur_video_id);
            if(cur_video_index>0){
                portal.next_video_id = portal.video_list[cur_video_index-1];
                portal.next_video_url = url.replace(/(?<=id\=)[0-9a-z]{8}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{4}-[0-9a-z]{12}/, portal.next_video_id);
                portal.goto_next_video = function goto_next_video(){
                    window.location = portal.next_video_url
                }
            }
            else{
                portal.next_video_id = null;
                portal.next_video_url = null;
                portal.goto_next_video = function goto_next_video(){
                    alert('暂无下一个视频!')
                }
            }
            player.on("ended", function(){
		        console.log("播放结束");
                portal.updateVideoView();
	            $("#videoState").val("0");
                console.log("10秒后进入下一个视频");
                portal.goto_next_video_timer = setTimeout('portal.goto_next_video()', 10000);
	        });
        }
        else{
            alert('未获取到视频列表,请返回视频列表后再点击进入视频播放界面!')
        }
    }
    //following code is copied from chrome extension 'Enable Copy'
var body = doc.body;
var html = doc.documentElement;
function allowUserSelect(element) {
	element.setAttribute('style', '-webkit-user-select: auto !important');
	element.setAttribute('style', 'user-select: auto !important');
	return element;
}

function clearHandlers() {
	html.onselectstart = html.oncopy = html.oncut = html.onpaste = html.onkeydown = html.oncontextmenu = html.onmousemove = body.oncopy = body.oncut = body.onpaste = body.onkeydown = body.oncontextmenu = body.onmousedown = body.onmousemove = body.onselectstart = body.ondragstart = doc.onselectstart = doc.oncopy = doc.oncut = doc.onpaste = doc.onkeydown = doc.oncontextmenu = doc.onmousedown = doc.onmouseup = window.onkeyup = window.onkeydown = null;
	allowUserSelect(html);
	allowUserSelect(body);
}
clearHandlers();

var jQuery = window.jQuery;

var $Fn = window.$Fn;
if ($Fn) {
	try {
		$Fn.freeElement(doc);
		$Fn.freeElement(body);
	} catch (e) {}
}

var jindo = window.jindo;
if (jindo) {
	jindo.$A = null;
}

var domain_pattern = /^https?:\/\/([^\/]+)/;
var result = domain_pattern.exec(url);
if (result) {
	try {
		var domain = result[1];
		if (jQuery) {
			var $doc = jQuery(doc);
			var $body = jQuery(body);
			if ($doc.off) {
				$doc.off();
				$body.off();
				jQuery(window).off();
			} else {
				$doc.unbind();
				$body.unbind();
				jQuery(window).unbind();
			}
		}
	} catch (e) {
		console.log(e);
	}
}
})();