腾讯课堂自动签到 Plus

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

  1. // ==UserScript==
  2. // @name 腾讯课堂自动签到 Plus
  3. // @name:zh-CN 腾讯课堂自动签到 Plus
  4. // @namespace http://tampermonkey.net/
  5. // @version 1.2.3
  6. // @description 基于SDchao的改编 加入系统级通知和网页签到状态指示功能 合并了去除xxx正在观看的弹幕
  7. // @description:zh-cn 基于SDchao的改编 加入系统级通知和网页签到状态指示功能 合并了去除xxx正在观看的弹幕
  8. // @author xianfei, thank for SDchao
  9. // @match https://ke.qq.com/webcourse/*
  10. // @grant none
  11. // ==/UserScript==
  12. var signNum = 0;
  13. var signElement;
  14. var intervalFlag;
  15. var hasDati = false;
  16. var lastHasDati = false;
  17.  
  18. (function() {
  19. 'use strict';
  20. setTimeout(()=>{signElement=document.getElementsByClassName("applied-text")[0];},4000);
  21. setInterval(clickSign,5000);
  22. intervalFlag = setInterval(clearDanmu,1000);
  23. console.warn("签到脚本已经加载");
  24. // 请求通知权限
  25. window.addEventListener('load', function () {
  26. Notification.requestPermission(function (status) {
  27. // 这将使我们能在 Chrome/Safari 中使用 Notification.permission
  28. if (Notification.permission !== status) {
  29. Notification.permission = status;
  30. }
  31. });
  32. });
  33. // Your code here...
  34. })();
  35.  
  36. function clearDanmu() {
  37. var marquee = document.getElementById("marquee");
  38. if(marquee) {
  39. marquee.firstElementChild.innerHTML = "";
  40. clearInterval(intervalFlag);
  41. }
  42. }
  43.  
  44. function showNotifi(status,str) {
  45. console.log(status); // 仅当值为 "granted" 时显示通知
  46. var n = new Notification("腾讯课堂签到助手", {body: str}); // 显示通知
  47. }
  48.  
  49. function clickSign() {
  50. 'use strict';
  51. if(signNum==0) signElement.innerHTML = "自动签到已加载";
  52. var elements = document.getElementsByClassName("s-btn s-btn--primary s-btn--m");
  53. var datiElements = document.getElementsByClassName("head-text");
  54. hasDati = false;
  55. for(var e of datiElements){if(e.innerHTML.indexOf("选题") !== -1){
  56. hasDati = true;
  57. if(lastHasDati==false&&hasDati==true){
  58. console.warn("老师发起了答题");
  59. Notification.requestPermission(showNotifi(status,"老师发起了答题 快去看看!"));}
  60. }}
  61. if(hasDati) lastHasDati = true;
  62. else lastHasDati=false;
  63. for(var element of elements) {
  64. try {
  65. if(element.innerHTML == "签到") {
  66. element.click();
  67. signNum = signNum+1;
  68. console.warn("签到了"+signNum+"次");
  69. Notification.requestPermission(showNotifi(status,"刚刚进行了签到,已成功签到"+signNum+"次"));
  70. signElement.innerHTML = ("已签到"+signNum+"次");
  71. setTimeout(clickConfirm,2000);
  72. break;
  73. }
  74. }
  75. catch(e){}
  76. }
  77. }
  78.  
  79. function clickConfirm() {
  80. 'use strict';
  81. var elements2 = document.getElementsByClassName("s-btn s-btn--primary s-btn--m");
  82. for(var i = 0; i < elements2.length; i++) {
  83. try {
  84. var element = elements2[i];
  85. if(element.innerHTML == "确定") {
  86. element.click();
  87. break;
  88. }
  89. }
  90. catch(e){}
  91. }
  92. }

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址