Greasy Fork

Greasy Fork is available in English.

潭州课堂助手

去除潭州课堂播轮播广告,头像下增加我的作业菜单,昵称完整展示,作业数量醒目展示。

当前为 2019-06-25 提交的版本,查看 最新版本

// ==UserScript==
// @name         潭州课堂助手
// @namespace    http://tampermonkey.net/
// @version      1.05
// @description  去除潭州课堂播轮播广告,头像下增加我的作业菜单,昵称完整展示,作业数量醒目展示。
// @author       QQ:619877197   Email:[email protected]
// @match        *://*.shiguangkey.com/*
// @require      https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.onload = function () {

        // 移除轮播广告
        $("div[class='_1-j4s']").remove();

        // 直接展示课程目录
        var tabs = $("div[role='tab']");
        $.each(tabs, function (i, item) {
            if ($(item).text() === "课程目录") {
                $(item).click();
                return false;
            }
        });

        // 头像下面添加我的作业菜单
        var avatarlis = $("div[class='memberHome___ReVBw']").length > 0 ? $("div[class='memberHome___ReVBw']").find("ul").find("li") : $("div[class='_2v85p']").find("ul").find("li");
        $.each(avatarlis, function(i, item) {
            if ($(item).find("a").text() === "我的课表") {
                var homeworkdom = $("<li><a href='/i/homework'>我的作业</a></li>");
                $(item).after(homeworkdom);
            }
        })

        // 昵称完整展示
        var nickdom = $("span[class='avatarNick___3PfCp userNickname']").length > 0 ? $("span[class='avatarNick___3PfCp userNickname']") : $("span[class='_3Au-A userNickname']")
        nickdom.css({
            "margin-right": "30px",
            "overflow": "visible"
        })

        setInterval(function() {

            // 待完成/已完成作业数量展示
            (function() {
                var homeworktabs = $("div[role='tab']")
                $.each(homeworktabs, function(i, item) {
                    var labelp = $(item).find("p");
                    if (RegExp(/待完成/).exec(labelp.text())) {
                        if (labelp.find("span[class='shiguangkeyHelper']").length == 0) {
                            shiguangkeyHelper.sethomeworknum("uncompleted", labelp);
                        }
                    } else if (RegExp(/已完成/).exec(labelp.text())) {
                        if (labelp.find("span[class='shiguangkeyHelper']").length == 0) {
                            shiguangkeyHelper.sethomeworknum("completed", labelp);
                        }
                    }
                })
            })();

            // 待完成作业数数量加粗标红醒目展示
            (function() {
                var thead = $("thead[class='rc-table-thead']");
                var thead_th = $(thead).find("tr").find("th")[7];
                if ($(thead_th).text() == "待完成作业数") {
                    var tbody = $(thead).next();
                    $.each(tbody, function (i, item) {
                        var trs = $(item).find("tr");
                        $.each(trs, function (i, item) {
                            var td = $(item).find("td")[7];
                            if ($(td).text() != 0) {
                                $(td).css({
                                    "color": "red",
                                    "font-weight": "bold",
                                    "font-size": "200%"
                                });
                            }

                        })
                    })
                }
            })();

            // 我的课程表增加最近在学
            (function() {
                if ($("a[onclick='shiguangkeyHelper.lastlearnselect()']").length == 1) {
                    return;
                }
                var lastlearn = $("<li class><a href='javascript:;' style='color: blue; font-weight: bold' onclick='shiguangkeyHelper.lastlearnselect()'>最近在学</a></li>");
                $("div[class='_2HiiN']").find("ul").append(lastlearn);
            })();

        }, 500)

    };

    window.shiguangkeyHelper = {
        sethomeworknum: function(status, labelp) {
            var homeworkurl = status == "uncompleted" ? "https://www.shiguangkey.com/api/student/homework/getUnCompletedList" : "https://www.shiguangkey.com/api/student/homework/getCompletedList"
            $.ajax({
                type: "GET",
                async: false,
                cache: false,
                headers: {
                    "token": $.cookie.get("token"),
                    "terminaltype": 4
                },
                cookie: document.cookie,
                url: homeworkurl + "?classId=" + $.getUrlParam("classId") + "&activeKey=1&pageIndex=1&pageSize=10&terminalType=4",
                dataType: "json",
                success: function (res) {
                    if (status == "uncompleted") {
                        var uncompleted = $("<span style='color: red;' class='shiguangkeyHelper'>(" + res.data.totalItem + ")</span>");
                        labelp.find("span[style='color: red;']").remove();
                        labelp.append(uncompleted);
                    } else {
                        var completed = $("<span style='color: green;' class='shiguangkeyHelper'>(" + res.data.totalItem + ")</span>");
                        labelp.find("span[style='color: green;']").remove();
                        labelp.append(completed);
                    }
                },
                error: function () {}
            });
        },
        lastlearnselect: function() {
            var lastlearnselectEle = $("a[onclick='shiguangkeyHelper.lastlearnselect()']").parent("li");
            if (lastlearnselectEle.hasClass("_2Aysu")) {
                lastlearnselectEle.removeClass("_2Aysu");
                // 最近在学按钮再次点击,恢复课程展示,待实现。
            } else {
                $.ajax({
                    type: "POST",
                    async: false,
                    cache: false,
                    headers: {"token": $.cookie.get("token")},
                    cookie: document.cookie,
                    url: "https://www.shiguangkey.com/api/course/queryByStudent",
                    data: {"pageIndex": 1, "pageSize":10, "courseType": 5310, "terminalType":4},
                    dataType: "json",
                    success: function (res) {
                        var courses = res.data.courses;
                        for (var i=0; i<courses.length; i++) {
                            var course = courses[i];
                            if (course.liveChapterStartTime || course.startTimeMills || course.startTime) {
                                var courseHtml = '<div class="TlhQy"><a href="/course/{id}" target="_blank" rel="noopener noreferrer" class="_1TOYf"><img src="https://res.shiguangkey.com/{cover}?x-oss-process=image/format,webp" alt="封面"><span class="_27EfR _2VfA1">VIP</span></a><div class="_3f44N"><a href="/course/{id}" target="_blank" rel="noopener noreferrer" class="_1gBLk">{title}</a><div><div class="_25oe4">开课时间:<b>{t}</b></div><div class="_25oe4">所在班期:<b>{period}期</b></div></div><div class="_19ULe"><div class="_2_52z" href="javascript:;">联系老师<ul><div class="_1Zcg9"><div class="_2u4ro"><li><a href="tencent://message/?uin=3003302254&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">在线查考勤木子</a></li><li><a href="tencent://message/?uin=2917322537&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">05179-Tuple</a></li><li><a href="tencent://message/?uin=3002727582&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">塔卡-05028</a></li><li><a href="tencent://message/?uin=&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">Sky老师</a></li><li><a href="tencent://message/?uin=2446867994&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">心蓝06258</a></li><li><a href="tencent://message/?uin=3002751317&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">缇子05015</a></li><li><a href="tencent://message/?uin=3003806927&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">忘仙_03179</a></li><li><a href="tencent://message/?uin=3002795033&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">木子</a></li><li><a href="tencent://message/?uin=&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">小拓</a></li><li><a href="tencent://message/?uin=3003302254&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">南小帝</a></li><li><a href="tencent://message/?uin=&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">Youkou</a></li><li><a href="tencent://message/?uin=879735038&amp;Site=qq&amp;Menu=yes" target="_blank" rel="noopener noreferrer">蓝羽</a></li></div></div></ul></div></div></div><div class="zBr3m"><span class="_3dqyA" onclick="shiguangkeyHelper.setclassreminder({id}, {classId})"><span class="WM317"></span></span><span>开课提醒已关闭</span></div><div style="display: flex; flex-direction: column; float: right;"><button class="_3xDIx" onclick="(function() {location.href = \'https://www.shiguangkey.com/live/{id}/{classId}\'})();">开始学习</button></div></div>'
                                course.t = $.timeFormat((new Date(course.liveChapterStartTime)), "yyyy-MM-dd hh:mm")
                                courseHtml = $.stringFormat(courseHtml, course)
                                var courses_div = $("div[class='_2GxAN']").find("div[class='_2u4ro']");
                                $(courses_div.find("div[class='TlhQy']")).remove();
                                courses_div.append($(courseHtml));
                            }
                            $("div[class='_3vI_T']").remove();
                        };
                        lastlearnselectEle.addClass("_2Aysu");
                    },
                    error: function () {}
                })
            }
        },
        setclassreminder: function(courseId, classId) {
            var classreminderEle = $($.stringFormat("span[onclick='shiguangkeyHelper.setclassreminder({courseId}, {classId})']", {courseId: courseId, classId: classId}));
            if (classreminderEle.hasClass("p3Y8Q")) {
                $.ajax({
                    type: "POST",
                    async: false,
                    cache: false,
                    headers: {
                        "token": $.cookie.get("token")
                    },
                    cookie: document.cookie,
                    url: "https://www.shiguangkey.com/api/interaction/cancelCourseRemond",
                    data: {
                        "courseId": courseId,
                        "classId": classId,
                        "terminalType": 4
                    },
                    dataType: "json",
                    success: function (res) {
                        if (res.status == 0) {
                            classreminderEle.removeClass("p3Y8Q");
                        }
                    },
                    error: function () {}
                })
            } else {
                $.ajax({
                    type: "POST",
                    async: false,
                    cache: false,
                    headers: {
                        "token": $.cookie.get("token")
                    },
                    cookie: document.cookie,
                    url: "https://www.shiguangkey.com/api/interaction/setCourseRemond",
                    data: {
                        "courseId": courseId,
                        "classId": classId,
                        "terminalType": 4
                    },
                    dataType: "json",
                    success: function (res) {
                        if (res.status == 0) {
                            classreminderEle.addClass("p3Y8Q");
                        }
                    },
                    error: function () {}
                })
            }
        },


    }

    $.extend({
        stringFormat: function (str, obj) {
            /*
            字符串格式化
            调用方式:
            var result=$.format("我是{name},今年{age}了", {name:"小美",age:18});alert(result); //我是小美,今年18了。
            */
            if (typeof(str) == "string" && typeof(obj) == "object") {
                for (var key in obj) {
                    if (obj[key] != undefined) {
                        var reg = new RegExp("({" + key + "})", "g");
                        str = str.replace(reg, obj[key]);
                    }
                }

            }
            return str;
        },
        timeFormat: function (t, format) {
            /*
            时间戳格式化
            调用方法:$.timeFormat((new Date), "yyyy-MM-dd hh:mm:ss")
            */
            if ((typeof t) == "object" && (typeof format) == "string") {
                var o = {
                    "M+": t.getMonth() + 1,
                    "d+": t.getDate(),
                    "h+": t.getHours(),
                    "m+": t.getMinutes(),
                    "s+": t.getSeconds(),
                    "q+": Math.floor((t.getMonth() + 3) / 3),
                    "S": t.getMilliseconds()
                }
                if (/(y+)/.test(format)) {
                    format = format.replace(RegExp.$1, (t.getFullYear() + "").substr(4 - RegExp.$1.length));
                }
                for (var k in o) {
                    if (new RegExp("(" + k + ")").test(format)) {
                        format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
                    }
                }

            }
            return format;
        },
        getUrlParam: function (name) {
            /*
            获取当前页面URL路径里指定参数的值
            调用方式:$.getUrlParam("name")
            */
            var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
            var r = window.location.search.substr(1).match(reg);
            if (r != null)
                return unescape(r[2]);
            return null;
        },
        cookie: {
            /*
            操作cookies
            调用方法:
            $.cookie.get("token");
            $.cookie.set("abc", "_ab111a001", 600, true);
            $.cookie.remove("abc");
            */
			get: function (t) {
				for (var e = t + "=", n = document.cookie.split(";"), r = 0; r < n.length; r++) {
					for (var o = n[r]; " " == o.charAt(0); )
						o = o.substring(1, o.length);
					if (0 == o.indexOf(e))
						return decodeURIComponent(o.substring(e.length, o.length))
				}
				return null
			},
			set: function (t, e, n, r, o) {
				var s = "",
				a = "",
				c = "";
				if (r) {
					var u = document.location.hostname.match(/[a-z0-9][a-z0-9\-]+\.[a-z\.]{2,6}$/i),
					f = u ? u[0] : "";
					s = f ? "; domain=." + f : ""
				}
				if (n) {
					var d = new Date;
					d.setTime(d.getTime() + 24 * n * 60 * 60 * 1e3),
					a = "; expires=" + d.toGMTString()
				}
				o && (c = "; secure"),
				document.cookie = t + "=" + encodeURIComponent(e) + a + "; path=/" + s + c
			},
			remove: function (t) {
				var e = document.location.hostname.match(/[a-z0-9][a-z0-9\-]+\.[a-z\.]{2,6}$/i),
				n = e ? e[0] : "";
				this.set(t, "", -1, "." + n)
			}
		}
    });

})();