腾讯课堂自动签到 Plus

基于SDchao的改编 加入系统级通知和网页签到状态指示功能 合并了去除xxx正在观看的弹幕

// ==UserScript==
// @name         腾讯课堂自动签到 Plus
// @name:zh-CN   腾讯课堂自动签到 Plus
// @namespace    http://tampermonkey.net/
// @version      1.2.3
// @description  基于SDchao的改编  加入系统级通知和网页签到状态指示功能  合并了去除xxx正在观看的弹幕
// @description:zh-cn  基于SDchao的改编  加入系统级通知和网页签到状态指示功能  合并了去除xxx正在观看的弹幕
// @author       xianfei, thank for SDchao
// @match        https://ke.qq.com/webcourse/*
// @grant        none
// ==/UserScript==
var signNum = 0;
var signElement;
var intervalFlag;
var hasDati = false;
var lastHasDati = false;

(function() {
    'use strict';
    setTimeout(()=>{signElement=document.getElementsByClassName("applied-text")[0];},4000);
    setInterval(clickSign,5000);
    intervalFlag = setInterval(clearDanmu,1000);
    console.warn("签到脚本已经加载");
    // 请求通知权限
    window.addEventListener('load', function () {
  Notification.requestPermission(function (status) {
    // 这将使我们能在 Chrome/Safari 中使用 Notification.permission
    if (Notification.permission !== status) {
      Notification.permission = status;
    }
  });
});
    // Your code here...
})();

function clearDanmu() {
    var marquee = document.getElementById("marquee");
    if(marquee) {
        marquee.firstElementChild.innerHTML = "";
        clearInterval(intervalFlag);
    }
}

function showNotifi(status,str) {
  console.log(status); // 仅当值为 "granted" 时显示通知
  var n = new Notification("腾讯课堂签到助手", {body: str}); // 显示通知
}

function clickSign() {
    'use strict';
    if(signNum==0) signElement.innerHTML = "自动签到已加载";
    var elements = document.getElementsByClassName("s-btn s-btn--primary s-btn--m");
    var datiElements = document.getElementsByClassName("head-text");
    hasDati = false;
    for(var e of datiElements){if(e.innerHTML.indexOf("选题") !== -1){
        hasDati = true;
        if(lastHasDati==false&&hasDati==true){
        console.warn("老师发起了答题");
        Notification.requestPermission(showNotifi(status,"老师发起了答题 快去看看!"));}
    }}
    if(hasDati) lastHasDati = true;
    else lastHasDati=false;
    for(var element of elements) {
        try {
            if(element.innerHTML == "签到") {
                element.click();
                signNum = signNum+1;
                console.warn("签到了"+signNum+"次");
                Notification.requestPermission(showNotifi(status,"刚刚进行了签到,已成功签到"+signNum+"次"));
                signElement.innerHTML = ("已签到"+signNum+"次");
                setTimeout(clickConfirm,2000);
                break;
            }
        }
        catch(e){}
    }
}

function clickConfirm() {
    'use strict';
    var elements2 = document.getElementsByClassName("s-btn s-btn--primary s-btn--m");
    for(var i = 0; i < elements2.length; i++) {
        try {
            var element = elements2[i];
            if(element.innerHTML == "确定") {
                element.click();
                break;
            }
        }
        catch(e){}
    }
}