灯塔党建视频学习

2019-09-05更新

// ==UserScript==
// @name         灯塔党建视频学习
// @namespace    aaron.js.greasyfork.org
// @version      1.5
// @description  2019-09-05更新
// @author       Aaron
// @match        *.dtdjzx.gov.cn/course/special/*
// @match        *.dtdjzx.gov.cn/recommend
// @grant        none
// ==/UserScript==
var user1=0;

(function() {
    'use strict';

    // Your code here...
    $.postJSON("/bintang/getUserId", {}).then(e=>{
        if(e)
            user1=e;
        else
            alert("请登录");
    })
    $($(".top.clearfix")[1]).append('<p class="title" id="p_gobtn" style="color:  blue;cursor: pointer;">加速学习</p>');
    $("body").append('<script src="/js/sign/crypto-js/core.js"></script><script src="/js/sign/crypto-js/md5.js"></script><script src="/js/sign/sign.js"></script>');
    $("#p_gobtn").click(e=>{
        $("body").append('<div id="divConsole" style="height:600px;width:300px;position: fixed;top: 30px;background-color: #000;left: 15px;color: #aaa;border-radius: 10px;padding: 8px;overflow-y: auto;">>>学习进度面板<br/></div>')
        $("li.xuanji").each((i,n)=>{
            if(n.outerHTML.indexOf("已学")<0){
                var url=$(n).find("a")[0].getAttribute("href");
                $(n).find(".content>.course-mes").append('<span style="line-height: 30px;color: blue;float: right;margin-right: 15px;cursor: pointer;"><a href="javascript:gosss(\''+url+'\')">学习</a></span>');
            }
        });
        $(".xuanji-item").each((i,n)=>{
            if(n.outerHTML.indexOf("已学")<0){
                var url=n.getAttribute("href");
                $(n).find(".xuanji-content>.course-mes").append('<span style="line-height: 30px;color: blue;float: right;margin-right: 15px;cursor: pointer;"><a href="javascript:gosss(\''+url+'\')">学习</a></span>');
            }
        });
    });
    window.divlog=function(n,s,c){
        if(!c)
            c="#aaa";
        $("#divConsole").append(">><span style='color:#fff'>"+n+"</span>:<span style='color:"+c+"'>"+s+"</span><br/>");
    }
    window.gosss=function(url){
        divlog("新的学习","正在载入……");
        $.get(url).error(e=>{
            divlog("新的学习","载入失败!","#f00");
        }).then((h,s,o)=>{

            var project2 = JSON.parse($(h).find("#script_course").html());
            var str=$($(h).find("script")[3]).html();
            window.appSecret=str.substring(str.indexOf("'")+1,str.indexOf(";")-1);

            aaAddTimeCount(project2);
            $(h).find("xuanji-item").each((i,n)=>{
                $.get(n.href).then((h1,s1,o1)=>{
                    var project1 = JSON.parse($(h1).find("#script_course").html());
                    aaAddTimeCount(project2);
                })
            });
        });
    }
    window.aaAddTimeCount=function(project){
        //$.get("http://v.dtdjzx.gov.cn/dyjy/video/"+project.sdPath);
        divlog(project.courseName,"正在载入……");
        $.postJSON("/bintang/addTimeCount", project).fail(e=>{
        divlog(project.courseName,"载入超时","#F00");
        }).then(data=>{
            if(data.code){
				$.postJSON("/bintang/getUserId", {}).fail(e=>{
                    divlog(project.courseName,"载入超时","#F00");
                }).then(
					function(data) {
						var userId = data;
						var getStudyTimes=parseInt(project.courseDuration*60-3);
                        setTimeout(()=>{
							aaToprogress(userId,project,getStudyTimes,'recordProgress');
						},1000);

						setTimeout(()=>{
							aaToprogress(userId,project,project.courseDuration*60,'updateTimeEnd');
						},5000);
					});

            }else{
                divlog(project.courseName,"载入失败","#F00");
            }
        });
    }
	window.aaToprogress=function(userId,project,getStudyTimes,u){
        //var appSecret = '如果自动获取失败,这里替换成你自己的appSecret';
        if(!appSecret){
            divlog("自动获取appSecret失败,请修改第92行代码。")
        }
		var receive = {
			timelength:project.courseDuration,
			courseId:project.courseId,
			userId:userId,
			studyTimes:getStudyTimes
		}
		var requestParam = {
			courseId:project.courseId,
			userId:userId,
			studyTimes:getStudyTimes
		}
		var appKey = userId;
		var timestamp = new Date().getTime();
		var nonce = guid();
		var signatureType = 'MD5';
		var authType = 'ACCESSKEY';
		var signatureVersion = '1';
		var requestUri = '/bintang/recordProgress';
		var signature = sign(appKey, appSecret, requestUri, timestamp, nonce, requestParam);
		var signatureEntity = {
			'appKey' : appKey,
			'timestamp' : timestamp,
			'nonce' : nonce,
			'signatureType' : signatureType,
			'authType' : authType,
			'signatureVersion' : signatureVersion,
			'requestUri' : requestUri,
			'signature' : signature
		};
		$.postJSON("/bintang/"+u, {
			'signatureEntity' : signatureEntity,
			'receive' : receive
		}).then(function(data) {
                    if(data.isRecord){
                    divlog(project.courseName,"学习完成","#0F0");
                    }
                }).fail(e=>{
            var msg="学习失败";
            if(e.status==500)
                msg="服务器端发生错误";
            else if(e.status>=400 && e.status<500)
                msg="学习资源未找到";
            divlog(project.courseName,msg,"#F00");
        });
	}
})();