Greasy Fork is available in English.

国家开放大学 新平台(刷视频,进度(视频和进度全自动),形考,考试)

国开自动刷视频和目录进度

// ==UserScript==
// @name         国家开放大学 新平台(刷视频,进度(视频和进度全自动),形考,考试)
// @namespace    http://www.baidu.com/
// @version      0.05
// @description  国开自动刷视频和目录进度
// @author       laowang3142 微信:laowang3142
// @match        http://*/course/view.php?id=*
// @grant        none
// @license MIT
// ==/UserScript==

(function() {
    'use strict';


   (function ($) {
  $(function(){
  		//获取当前url
  		href= window.location.href.split('course')[0];
  		mid=window.location.href.split('mid=')[1];

  		$('div[role="main"]').css('display','none');
		//展示小节信息
		var sec=$('#region-main-box').attr('sec');
		var courseid=$('#alm').attr('courseid');
		$.ajaxSetup({
		    async : false
		});
		function aler(e){
		    $("body").append("<div style='width:20em;background-color:white;padding:0 20px;height: 6rem; text-align: center; position: fixed; top: 50%; margin-top: -1rem; line-height: 6rem;right:0;left:0;margin:auto' id='msg'><span>"+e+"</span></div>");
		    clearmsg();
		}
		function clearmsg(){

		};
		$.post(href+'theme/blueonionre/sectionInfo.php',{sectionid:sec,courseid:courseid},function(response){
			 data=JSON.parse(response);
			 var secinfo=data.secinfo;
			 var tmpsequence=data.sequence;
			 var sequence='';
			 $.each(tmpsequence,function(n,va){
			 	if(n < (tmpsequence.length -1)){
			 		sequence +=va+',';
			 	}else{
			 		sequence +=va
			 	}
			 })

			 var order=sequence.split(',');
			 lmes=new Array();
			 $.each(order,function(n,v){
			 	if(data[v]){
			 		lmes.push(data[v]);
			 	}

			 })
			 // $('.listinfo').append($("<p>"+secinfo.fsec+"</p>"));
			 $('#list span').html(secinfo.fsec+"<img style='position:absolute;right: 15px;;margin-top:10px;' src='"+href+"theme/blueonionre/pix/v.png'>");

			 delete secinfo.fsec;console.log(secinfo);
			 $.each(secinfo,function(na,va){
			 	$('.listinfo').append($("<a style='overflow:hidden;text-overflow:ellipsis;white-space:nowrap;' href='"+href+"course/view.php?id="+courseid+"&sectionid="+va.id+"&mid="+va.sequence.split(',')[0]+"' title='"+va.name+"'>"+va.name+"</a>"));
			 })
			console.log(data)
			console.log(lmes)
			 delete data.sequence;
			 delete data.secinfo;
			 // '/mod/"+value.type+"/view.php?id="+value.id+"'
			 var i=1;
			 $.each(lmes,function(name,value){

			 	switch(value.type)
				{
				case "page":
				  	src=href+'theme/blueonionre/pix/page.png';
				  break;
				case "forum":
				  src=href+'theme/blueonionre/pix/forum.png';
				  break;
				case "quiz":
				  src=href+'theme/blueonionre/pix/quiz.png';
				  break;
				case "assign":
				  src=href+'theme/blueonionre/pix/assign.png';
				  break;
				 case "url":
				  src=href+'theme/blueonionre/pix/url.png';
				  break;
				}
			 	if(mid == value.id){
			 		if(value.is_com == '1'){
			 			var li=$("<li typ="+value.type+" availability='"+value.availability+"' is_com="+value.is_com+" class='act' i="+value.id+"> <div> <img src='"+href+"theme/blueonionre/pix/"+value.type+"(c).png'> <p title='"+value.name+"'>"+value.name+"</p> </div> </li>");
			 		}else{
			 			var li=$("<li typ="+value.type+" availability='"+value.availability+"' is_com="+value.is_com+" class='act' i="+value.id+"> <div> <img src='"+href+"theme/blueonionre/pix/"+value.type+".png'> <p title='"+value.name+"'>"+value.name+"</p> </div> </li>");
			 		}
			 		if(value.type == 'page'  || value.type == 'url'){
			 			if(value.type== 'url'){

				 			if($(window).width()<=768){
								video_height='179px';
							}else if($(window).width()>768 && $(window).width()<=1200){
								video_height='370px';
							}else{
								video_height='619px';
							}
			 				cnt = "<div>"+data[value.id].des+"</div><div id='video' style='height:"+video_height+"'></div>";
			 				// cnt = "<div>"+data[name].des+"</div><video width='100%' src='"+data[name].videourl+"' controls='controls'> 您的浏览器不支持 video 标签。 </video>";
			 			}else{
			 				cnt= "<div>"+data[value.id].cnt+"</div>";
			 				//发送ajax添加完成
			 				if(value.is_com != 1){
			 					$.get(href+'theme/blueonionre/modulesCompletion.php',{cmid:value.id,id:courseid,sectionid:sec},function(res){
				 					console.log(res)
				 					if(res==1){
				 						li.attr('is_com','1').find('img').attr('src',href+'theme/blueonionre/pix/'+value.type+'(c).png');
				 					}
				 				})
			 				}

			 			}
			 			$('#com div:first-child').html(cnt);

			 			if(data[value.id].type == 'url'){
			 				center=data[value.id].videourl.split('.ouchn.cn/')[0].split('oss')[1];
				 			if(center){
				 				videourl='http://oss.ouchn.cn/'+center+'/'+data[value.id].videourl.split('.ouchn.cn/')[1];
				 			}else{
				 				videourl=data[value.id].videourl;
				 			}

				 					var videoObject = {
					        container:'#video',
					        variable:'player',
					        autoplay:false,
					        video:videourl,
					        duration:10,
					        seek:0
					    };
    					var player=new ckplayer(videoObject);

    					function videoContol(ckplayerInstance) {
							var _this = this;
							this.video = ckplayerInstance.V;
							this.pastTime = 0;//缓存视频上一秒的播放时间
							this.currentTimeBeforeSeek = 0;//缓存开始拖动时的播放时间
							this.isSeeking = true;//是否在“拖动”状态

							//重置视频拖动播放前的位置
							function resetVideo() {


							}

							//视频播放事件
							this.video.ontimeupdate = function () {
								//如果出现拖动情况,重置状态(如果当前播放时间与上一次的时间相差超过1秒,就视为拖动行为)

							}

							//播放结束事件
							this.video.onended = function () {
								//如果用户一下子拖至视频的结束位置,重置状态
                            }

							//拖动播放事件
							this.video.onseeking = function () {

							}

							//拖动结束
							this.video.onseeked = function () {

							}

							return this;
						}

						//如果ckplayer使用的是h5的video播放器
						if (player.playerType == 'html5video' && data[mid].is_com != 1) {
							//实例化一个监控对象
							//new videoContol(player)
						}

			 			}



			 		}else{
			 			$('#com div:first-child').html(data[value.id].des);
			 			$('#com #ck').css('display','block').find('a').attr("href",href+"mod/"+value.type+"/view.php?id="+value.id);
			 		}
			 		// 完成情况
			 		if(value.is_com == '1'){
			 			$('#ov').css('display','block');


			 		}else{
			 			var sign=$('<div id="sign">标记为完成</div>');
			 			$('#ov').css('display','none');
			 			sign.click(function(){
			 				$.get(href+'theme/blueonionre/modulesCompletion.php',{cmid:value.id,id:courseid,sectionid:sec},function(res){
			 					console.log(res)
			 					if(res==1){
			 						$('#sign').css('display','none');
			 						$('#ov').css('display','block');
			 						$('.mlist li[i="'+value.id+'"]').attr('is_com','1').find('img').attr('src',href+'theme/blueonionre/pix/'+value.type+'(c).png');
			 					}
			 				})
			 			})
			 			$('#ov').before(sign);


			 		}
			 	}else{
			 		if(value.is_com == '1'){
			 			var li=$("<li typ="+value.type+" availability='"+value.availability+"' is_com="+value.is_com+" i="+value.id+"> <div> <img src='"+href+"theme/blueonionre/pix/"+value.type+"(c).png'> <p title='"+value.name+"'>"+value.name+"</p> </div> </li>");
			 		}else{
			 			var li=$("<li typ="+value.type+" availability='"+value.availability+"' is_com="+value.is_com+" i="+value.id+"> <div> <img src='"+href+"theme/blueonionre/pix/"+value.type+".png'> <p title='"+value.name+"'>"+value.name+"</p> </div> </li>");
			 		}
			 	}


			 	li.click(function(){
			 		var li_clicktyp=$(this).attr('typ');
			 		var _ava=true;
			 		if(JSON.parse($(this).attr('availability'))){
			 			var availability=JSON.parse($(this).attr('availability')).c;
				 		$.each(availability,function(k,v){
				 			switch(v.type)
							{
								case "completion":

									if(v.e ==1){
										if($('.mlist li[i='+v.cm+']').attr('is_com') !=1){
											if(li_clicktyp == 'quiz'){
								 				alert('请先观看完成本专题内的视频,再进行专题测验。');
								 			}else{
								 				alert('专题内视频需按顺序进行学习,请先观看上一视频。');

								 			}

								 			_ava=false;
								 			return false;
										}

									}

					  			break;
					  			case "date":

					  				if(v.d == '>='){
					  					if(Math.round(new Date() / 1000) < v.t ){
					  						alert('未到开启时间');
					  						_ava=false;
					  						return false;
					  					}
					  				}else{
					  					if(Math.round(new Date() / 1000) > v.t){
					  						alert('截止时间已过');
					  						_ava=false;
					  						return false;
					  					}
					  				}
					  			break;
					  		}

				 		})
			 		}



			 		if(!_ava){
			 			return false;
			 		}
			 		// if(($(this).prev().attr('is_com') ==0 || $(this).prev().attr('is_com') == 'false') && $(this).attr('typ') != 'page' &&  $(this).prev().attr('typ') != 'page' ){
			 		// 	if($(this).attr('typ') == 'quiz'){
			 		// 		alert('请先观看完成本专题内的视频,再进行专题测验。');
			 		// 	}else{
			 		// 		alert('专题内视频需按顺序进行学习,请先观看上一视频。');
			 		// 	}

			 		// 	return false;
			 		// }
			 		var url=window.location.href;
			 		window.location.href = url.replace(mid,value.id);
			 		return false;

			 	})
			 	$('#na ul').append(li);
			 	i++;
			 })

		})
		// 当前章节移动到合适位置
		function move_mod(){
			if($(window).width()<=768){
				var ind=$('.mlist .act').index()+1;
				if(ind>2){
					$('.mlist ul').css('left',(2-ind)*131 + 'px');
				}

			}else if($(window).width()>768 && $(window).width()<=1200){
				var ind=$('.mlist .act').index()+1;
				if(ind>3){
					$('.mlist ul').css('left',(3-ind)*221 + 'px');
				}

			}else{
				var ind=$('.mlist .act').index()+1;
				if(ind>5){
					$('.mlist ul').css('left',(5-ind)*221 + 'px');
				}

			}
		}
		move_mod();
    	//点击展开小节目录
    	// $('#list>span').click(function(){
    	// 	$('.listinfo').slideToggle();
    	// 	return false;
    	// })

    	//点击移动
    	//
    	function sec_move(){
    		if($(window).width()<=768){
				sec_width=131;
				sec_lgh=2;
			}else if($(window).width()>768 && $(window).width()<=1200){
				sec_lgh=3;
				sec_width=221;
			}else{
				sec_lgh=5;
				sec_width=221;
			}
			$('.mlist ul').css('width',sec_width*$('.mlist li').length+'px');
		}
		sec_move();

    	if($('.mlist li').length>sec_lgh){
			$('#sec_right').css('background-image','url("'+href+'theme/blueonionre/pix/btnrc.png")');
		}
    	$('#sec_right').click(function(){
    		if($('.mlist li').length<=sec_lgh){
    			var left=0;
    		}else{
    			var left= parseInt($('.mlist ul').css('left')) -sec_width;
    		}

    		if(left < 0 ){
    			setTimeout(function () {
			        $('#sec_left').css('background-image','url("'+href+'theme/blueonionre/pix/btnlc.png")');
			    }, 800);
    		}
    		if(-left > ($('.mlist li').length-(sec_lgh+1))*sec_width && $('.mlist li').length>sec_lgh){
    			left = -($('.mlist li').length-sec_lgh)*sec_width;
    			setTimeout(function () {
			        $('#sec_right').css('background-image','url("'+href+'theme/blueonionre/pix/btnr.png")');
			    }, 800);
    		}
    		$('.mlist ul').css('left',left + 'px');
    	})

		$('#sec_left').click(function(){
			left= parseInt($('.mlist ul').css('left')) +sec_width;
			if(-left <= ($('.mlist li').length-(sec_lgh+1))*sec_width){
				setTimeout(function () {
					$('#sec_right').css('background-image','url("'+href+'theme/blueonionre/pix/btnrc.png")');
			    }, 800);
			}
			if( left > -sec_width){
				left=0;
				setTimeout(function () {
			        $('#sec_left').css('background-image','url("'+href+'theme/blueonionre/pix/btnl.png")');
			    }, 800);

			}
    		$('.mlist ul').css('left',left + 'px');
    	})



    	$(window).resize(function() {
		     sec_move();
		     move_mod();
		});


    	// 页面离开或最小化暂停播放
		document.addEventListener("visibilitychange", function () {


		}, true);

	})

})(jQuery);

    var video = document.getElementsByTagName("video")[0];


    video.play();
    setTimeout(function () {

			      video.currentTime=video.duration-4;
video.play();

			    }, 3000);
setTimeout(function () {
history.go(0);

},6000)

})();