您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
非常感谢同济大佬Hyoung提供的脚本,请大家支持https://github.com/Flesymeb。但是因为它有一些问题,所以我二次开发了这一版。
// ==UserScript== // @name uestc全自动党旗飘飘刷课工具(webvpn版) // @namespace https://uestc // @version 1.0.0 // @description 非常感谢同济大佬Hyoung提供的脚本,请大家支持https://github.com/Flesymeb。但是因为它有一些问题,所以我二次开发了这一版。 // @icon data:image/png;base64,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 // @author kangkang // @match *://*.*.edu.cn/https/*/user/lesson // @match *://*.*.edu.cn/https/*/fzdx/play* // @match *://*.*.edu.cn/https/*/fzdx/lesson // @require https://code.jquery.com/jquery-3.4.0.min.js // @require https://lib.baomitu.com/jquery-cookie/1.4.1/jquery.cookie.min.js // @grant GM_notification // @license MIT // ==/UserScript== (function () { 'use strict'; const currentUrl = window.location.href; // --- 1. 如果是课程列表页 --- if (currentUrl.includes("/user/lesson") || currentUrl.includes("/fzdx/lesson")) { setTimeout(() => { const courseUnits = $('.study_plan2'); let found = false; courseUnits.each(function() { const unit = $(this); if (unit.text().includes('未完成')) { const studyButton = unit.find('a.study_a'); if (studyButton.length > 0) { GM_notification({ text: `找到未完成课程:${unit.find('a.plan_a').text().trim()},即将跳转学习...`, timeout: 3000 }); found = true; studyButton[0].click(); return false; } } }); if (!found) { GM_notification({ text: '本页所有课程均已完成!', timeout: 5000 }); } }, 2000); // 延迟2秒执行,给页面加载时间 return; // 列表页逻辑执行完毕,退出脚本 } if (currentUrl.includes("/fzdx/play")) { const originAddListener = Document.prototype.addEventListener; Document.prototype.addEventListener = function (type, listener, options) { if (type === "visibilitychange") return; return originAddListener.call(this, type, listener, options); }; Object.defineProperty(document, 'hidden', { configurable: true, get: () => false }); Object.defineProperty(document, 'visibilityState', { configurable: true, get: () => 'visible' }); const style = document.createElement("style"); style.innerHTML = ` .gpt-btn { padding: 6px 15px; font-size: 14px; font-weight: bold; color: white; background: linear-gradient(to right, #43cea2, #185a9d); border: none; border-radius: 6px; box-shadow: 0 2px 6px rgba(0,0,0,0.2); cursor: pointer; transition: transform 0.1s ease; } .gpt-btn:hover { transform: scale(1.03); background: linear-gradient(to right, #2bc0e4, #eaecc6); } .gpt-btn.stop { background: #e74c3c; } select.gpt-btn { background-color: #ffffff; color: #000000; border: 1px solid #ccc; border-radius: 6px; padding: 6px 10px; font-weight: bold; appearance: menulist; } .gpt-controls, .gpt-extra-controls { display: flex; gap: 10px; margin: 10px 0; flex-wrap: wrap; align-items: center; } .gpt-status { padding: 10px; font-family: Consolas, monospace; background: #f9f9f9; border-left: 4px solid #2ecc71; border-radius: 6px; font-size: 13px; color: #333; white-space: pre-line; }`; document.head.appendChild(style); const setCookie = (name, value, days) => { const d = new Date(); d.setTime(d.getTime() + days * 864e5); document.cookie = `${name}=${value}; expires=${d.toGMTString()}`; }; const getCookie = name => { const prefix = name + "="; return document.cookie.split(';').map(c => c.trim()).find(c => c.startsWith(prefix))?.slice(prefix.length) || ""; }; const checkUserCookie = () => { let user = getCookie("username"); if (!user) { GM_notification({ text: '刷课系统已就绪,欢迎使用!', timeout: 3000 }); user = prompt("请输入你的名字:", "哈喽~~"); if (user) setCookie("username", user, 30); } }; const targetContainer = document.querySelector(".video_cont") || document.body; const controlsWrapper = document.createElement("div"); controlsWrapper.className = "gpt-controls"; let autoStarted = false; let completedIndex = 0; const btnStartAuto = document.createElement("button"); btnStartAuto.textContent = "▶️ 开始刷课"; btnStartAuto.className = "gpt-btn"; btnStartAuto.onclick = () => { $.cookie('autoPlayEnabled', 1); startAutoLearning(); }; const btnStopAuto = document.createElement("button"); btnStopAuto.textContent = "⏸️ 暂停刷课"; btnStopAuto.className = "gpt-btn stop"; btnStopAuto.onclick = () => { $.cookie('autoPlayEnabled', 0); clearInterval(window.start); document.querySelector("video")?.pause(); GM_notification({ text: "⏸️ 已暂停自动刷课", timeout: 3000 }); autoStarted = false; }; const selectPlaybackRate = document.createElement("select"); selectPlaybackRate.className = "gpt-btn"; [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, 4.0, 8.0, 16.0].forEach(rate => { const opt = document.createElement("option"); opt.value = rate; opt.textContent = rate + "x"; selectPlaybackRate.appendChild(opt); }); const savedRate = parseFloat($.cookie('playback_rate') || 1.5); selectPlaybackRate.value = savedRate; selectPlaybackRate.onchange = () => { const video = document.querySelector("video"); if (video) { video.playbackRate = parseFloat(selectPlaybackRate.value); $.cookie('playback_rate', video.playbackRate, { expires: 7 }); } }; controlsWrapper.appendChild(btnStartAuto); controlsWrapper.appendChild(btnStopAuto); controlsWrapper.appendChild(selectPlaybackRate); targetContainer.prepend(controlsWrapper); const extraControls = document.createElement("div"); extraControls.className = "gpt-extra-controls"; const timeLabel = document.createElement("span"); timeLabel.textContent = "🕒 增加学习时长:"; timeLabel.style.fontWeight = "bold"; extraControls.appendChild(timeLabel); const selectTime = document.createElement("select"); selectTime.className = "gpt-btn"; [5, 10, 15, 20, 30].forEach(min => { const opt = document.createElement("option"); opt.value = min; opt.textContent = `➕ ${min} 分钟`; selectTime.appendChild(opt); }); const btnAddTime = document.createElement("button"); btnAddTime.className = "gpt-btn"; btnAddTime.textContent = "添加"; const getRid = () => { try { if (typeof studyTime !== 'undefined') { const str = studyTime.toString(); const match = str.match(/rid:\s*["']?(\d+)["']?/); if (match) return match[1]; } const html = document.documentElement.innerHTML; const match2 = html.match(/rid\s*[:=]\s*["']?(\d+)["']?/); return match2 ? match2[1] : null; } catch { return null; } }; btnAddTime.onclick = () => { const rid = getRid(); const minutes = parseInt(selectTime.value); const _xsrf = $(':input[name="_xsrf"]').val() || ""; if (!rid) return GM_notification({ text: "❌ 未找到 rid", timeout: 3000 }); $.ajax({ type: "POST", url: "/jjfz/lesson/study_time", data: { rid: rid, study_time: minutes * 60 * 1000, _xsrf: _xsrf }, complete: res => { if (res.status === 200) { GM_notification({ text: `✅ 为 rid ${rid} 增加 ${minutes} 分钟`, timeout: 3000 }); } else { GM_notification({ text: `❌ 增加失败(状态码 ${res.status})`, timeout: 3000 }); } } }); }; extraControls.appendChild(selectTime); extraControls.appendChild(btnAddTime); targetContainer.appendChild(extraControls); const statusBox = document.createElement("div"); statusBox.className = "gpt-status"; const updateStatus = () => { const total = document.querySelectorAll(".video_lists ul li").length; const rate = parseFloat($.cookie("playback_rate") || 1.0); statusBox.innerHTML = `🎓 Hello~ ${getCookie("username") || "同学"} 📺 状态:${$.cookie('autoPlayEnabled') == 1 ? "自动刷课中" : "未开启"} ⏩ 倍速:${rate}x 📊 进度:${completedIndex}/${total}(剩余 ${total - completedIndex}) 🌐 标签检测:已屏蔽 💡 <a href="https://github.com/Flesymeb" target="_blank">Made by Flesymeb↗</a>`; }; setInterval(updateStatus, 3000); targetContainer.appendChild(statusBox); setInterval(() => { const video = document.querySelector("video"); const currentRate = parseFloat($.cookie("playback_rate") || 1.0); if (video && video.playbackRate !== currentRate) { video.playbackRate = currentRate; } }, 1000); const startAutoLearning = () => { if (autoStarted || $.cookie('autoPlayEnabled') != 1) return; autoStarted = true; window.start = setInterval(() => { const video = document.querySelector("video"); const current = document.querySelector(".video_red1")?.closest("li"); const next = current?.nextElementSibling; if (!video || !current) return; const ended = video.ended; if (ended) { completedIndex++; if (next && next.querySelector("a")) { next.querySelector("a").click(); } else { GM_notification({ text: '✅ 本章播放完成,跳转课程列表页~', timeout: 4000 }); clearInterval(window.start); const baseUrl = location.href.split('/fzdx/play')[0]; location.href = baseUrl + '/user/lesson'; } return; } if (video.paused) video.play(); document.querySelector(".public_cancel")?.click(); document.querySelector(".public_submit")?.click(); }, 1500); }; checkUserCookie(); setTimeout(() => { if ($.cookie('autoPlayEnabled') == 1) startAutoLearning(); }, 1000); } })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址