您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
全新2.0版本,自动播放下一章节,自动开始并静音,播放速度控制,进度拖动。增加配置面板,可以自由调节。
当前为
// ==UserScript== // @name chinahrt继续教育 // @include http://web.chinahrt.com // @include https://web.chinahrt.com // @version 2.3 // @description 全新2.0版本,自动播放下一章节,自动开始并静音,播放速度控制,进度拖动。增加配置面板,可以自由调节。 // @author yikuaibaiban(https://github.com/yikuaibaiban) // @match http://videoadmin.chinahrt.com.cn/videoPlay/play* // @match http://videoadmin.chinahrt.com/videoPlay/play* // @match https://videoadmin.chinahrt.com.cn/videoPlay/play* // @match https://videoadmin.chinahrt.com/videoPlay/play* // @grant none // @license MIT // @namespace https://github.com/yikuaibaiban/chinahrt // ==/UserScript== window.onload = function() { if (document.head.getElementsByTagName("title")[0].innerText == "404") { var h1 = document.createElement('h1'); h1.innerHTML = '课程已经播放完成,请更换课程!'; h1.style.color = 'red'; h1.style.fontSize = '30px'; h1.style.textAlign = 'center'; h1.style.marginTop = '50px'; document.body.append(h1); alert('课程已经播放完成,请更换课程!'); return; } $(document).ready(function() { // (function () { // 'use strict'; // 顶端漂浮提示 var $topTips = $('<div style="position: fixed;top:0;left:10%;font-size:16px;font-weight: bold;color:red;background: #FFF;">受到浏览器策略影响第一次可能无法自动播放,请手动点击播放。</div>'); $(document.body).append($topTips); // 从localstorage中获取设置 var autoplay = (localStorage.getItem('autoplay') || 'true') === 'true'; var mute = (localStorage.getItem('mute') || 'true') === 'true'; var speed = parseInt(localStorage.getItem('speed') || '1'); var drag = parseInt(localStorage.getItem('drag') || '5'); // ==================页面设计开始========================== // 增加页面配置 var configDiv = document.createElement("div"); configDiv.style.cssText = "position:fixed;right:0;top:0;width:250px;height:400px;background-color:#FFF;z-index:9999;border: 1px solid #ccc;"; // 标题 var configTitle = document.createElement("div"); configTitle.style.cssText = "border-bottom:1px solid #ccc ;padding: 5px;font-weight: bold;"; configTitle.innerHTML = "视频控制配置"; configDiv.appendChild(configTitle); // 外部包裹 var configWrapper = document.createElement("div"); configWrapper.style.cssText = "padding: 5px;padding-bottom: 5px;font-size: 12px;line-height: 150%;"; // 是否自动播放 var configAutoPlay = document.createElement("div"); configAutoPlay.style.cssText = "border-bottom: 1px dotted #ccc ;padding-bottom: 5px;"; var p = document.createElement("p"); p.innerHTML = "是否自动播放:"; configAutoPlay.appendChild(p); var inputAutoPlay = document.createElement("input"); inputAutoPlay.type = "radio"; inputAutoPlay.name = "autoPlay"; inputAutoPlay.value = "true"; inputAutoPlay.checked = autoplay; inputAutoPlay.onclick = function() { localStorage.setItem('autoplay', 'true'); } configAutoPlay.appendChild(inputAutoPlay); var labelAutoPlay = document.createElement("label"); labelAutoPlay.innerHTML = "是"; configAutoPlay.appendChild(labelAutoPlay); var inputAutoPlay2 = document.createElement("input"); inputAutoPlay2.type = "radio"; inputAutoPlay2.name = "autoPlay"; inputAutoPlay2.value = "false"; inputAutoPlay2.checked = !autoplay; inputAutoPlay2.onclick = function() { localStorage.setItem('autoplay', 'false'); } configAutoPlay.appendChild(inputAutoPlay2); var labelAutoPlay2 = document.createElement("label"); labelAutoPlay2.innerHTML = "否"; configAutoPlay.appendChild(labelAutoPlay2); configWrapper.appendChild(configAutoPlay); // 是否静音 var configMute = document.createElement("div"); configMute.style.cssText = "border-bottom: 1px dotted #ccc ;padding-bottom: 5px;"; var p = document.createElement("p"); p.innerHTML = "是否静音:"; configMute.appendChild(p); var inputMute = document.createElement("input"); inputMute.type = "radio"; inputMute.name = "mute"; inputMute.value = "true"; inputMute.checked = mute; inputMute.onclick = function() { localStorage.setItem('mute', 'true'); player.videoMute(); } configMute.appendChild(inputMute); var labelMute = document.createElement("label"); labelMute.innerHTML = "是"; configMute.appendChild(labelMute); var inputMute2 = document.createElement("input"); inputMute2.type = "radio"; inputMute2.name = "mute"; inputMute2.value = "false"; inputMute2.checked = !mute; inputMute2.onclick = function() { localStorage.setItem('mute', 'false'); player.videoEscMute(); } configMute.appendChild(inputMute2); var labelMute2 = document.createElement("label"); labelMute2.innerHTML = "否"; configMute.appendChild(labelMute2); var muteTip = document.createElement("p"); muteTip.style.cssText = "font-size:13px;font-weight:bold;"; muteTip.innerHTML = "注意:不静音,视频可能会出现不会自动播放"; configMute.appendChild(muteTip); configWrapper.appendChild(configMute); // 启用拖放 var configDrag = document.createElement("div"); configDrag.style.cssText = "border-bottom: 1px dotted #ccc ;padding-bottom: 5px;"; var p = document.createElement("p"); p.innerHTML = "启用拖放(慎用):"; configDrag.appendChild(p); var inputDrag = document.createElement("input"); inputDrag.type = "radio"; inputDrag.name = "drag"; inputDrag.value = "5"; inputDrag.checked = drag === 5; inputDrag.onclick = function() { localStorage.setItem('drag', '5'); player.changeConfig('config', 'timeScheduleAdjust', 5); } configDrag.appendChild(inputDrag); var labelDrag = document.createElement("label"); labelDrag.innerHTML = "还原"; configDrag.appendChild(labelDrag); var inputDrag2 = document.createElement("input"); inputDrag2.type = "radio"; inputDrag2.name = "drag"; inputDrag2.value = "1"; inputDrag2.checked = drag === 1; inputDrag2.onclick = function() { localStorage.setItem('drag', '1'); player.changeConfig('config', 'timeScheduleAdjust', 1); } configDrag.appendChild(inputDrag2); var labelDrag2 = document.createElement("label"); labelDrag2.innerHTML = "启用"; configDrag.appendChild(labelDrag2); configWrapper.appendChild(configDrag); // 播放速度调整 var configSpeed = document.createElement("div"); configSpeed.style.cssText = "border-bottom: 1px dotted #ccc ;padding-bottom: 5px;"; var p = document.createElement("p"); p.innerHTML = "播放速度调整(慎用,不知后台是否检测):"; configSpeed.appendChild(p); var inputSpeed = document.createElement("input"); inputSpeed.type = "radio"; inputSpeed.name = "speed"; inputSpeed.value = "0"; inputSpeed.checked = speed === 0; inputSpeed.onclick = function() { localStorage.setItem('speed', '0'); player.changePlaybackRate(0); } configSpeed.appendChild(inputSpeed); var labelSpeed = document.createElement("label"); labelSpeed.innerHTML = "低速"; configSpeed.appendChild(labelSpeed); var inputSpeed2 = document.createElement("input"); inputSpeed2.type = "radio"; inputSpeed2.name = "speed"; inputSpeed2.value = "1"; inputSpeed2.checked = speed === 1; inputSpeed2.onclick = function() { localStorage.setItem('speed', '1'); player.changePlaybackRate(1); } configSpeed.appendChild(inputSpeed2); var labelSpeed2 = document.createElement("label"); labelSpeed2.innerHTML = "正常"; configSpeed.appendChild(labelSpeed2); var inputSpeed3 = document.createElement("input"); inputSpeed3.type = "radio"; inputSpeed3.name = "speed"; inputSpeed3.value = "2"; inputSpeed3.checked = speed === 2; inputSpeed3.onclick = function() { localStorage.setItem('speed', '2'); player.changePlaybackRate(2); } configSpeed.appendChild(inputSpeed3); var labelSpeed3 = document.createElement("label"); labelSpeed3.innerHTML = "高速"; configSpeed.appendChild(labelSpeed3); var inputSpeed4 = document.createElement("input"); inputSpeed4.type = "radio"; inputSpeed4.name = "speed"; inputSpeed4.value = "3"; inputSpeed4.checked = speed === 3; inputSpeed4.onclick = function() { localStorage.setItem('speed', '3'); player.changePlaybackRate(3); } configSpeed.appendChild(inputSpeed4); var labelSpeed4 = document.createElement("label"); labelSpeed4.innerHTML = "超高速"; configSpeed.appendChild(labelSpeed4); var speedTip = document.createElement("div"); speedTip.style.cssText = "font-size:13px;font-weight:bold;"; speedTip.innerHTML = "提示:基于播放器本身的速度挡位实现,目测最高大概是2倍速。"; configSpeed.appendChild(speedTip); configWrapper.appendChild(configSpeed); configDiv.appendChild(configWrapper); // 联系方式 var contactDiv = document.createElement("div"); contactDiv.style.cssText = "margin-top:10px;font-size:12px;font-weight:bold;line-height: 150%;"; // 博客园地址 var blogDiv = document.createElement("div"); var blog = document.createElement("a"); blog.href = "https://www.cnblogs.com/ykbb/"; blog.target = "_blank"; blog.innerHTML = "博客园地址"; blogDiv.appendChild(blog); contactDiv.appendChild(blogDiv); // 意见反馈 var feedbackDiv = document.createElement("div"); var feedback = document.createElement("a"); feedback.href = "https://msg.cnblogs.com/send/ykbb"; feedback.target = "_blank"; feedback.innerHTML = "点此意见反馈"; feedbackDiv.appendChild(feedback); contactDiv.appendChild(feedbackDiv); configDiv.appendChild(contactDiv); document.body.appendChild(configDiv); // ==================页面设计结束========================== $("video").prop("muted", "muted"); // 移除讨厌的事件 window.onfocus = function() {}; window.onblur = function() {}; var tmp = setInterval(function() { if (player && player.loaded) { player.addListener('loadedmetadata', function() { // 总是显示播放进度 player.changeControlBarShow(true); // 拖动开关 player.changeConfig('config', 'timeScheduleAdjust', drag); if (mute) { player.videoMute(); } else { player.videoEscMute(); } player.changePlaybackRate(speed); if (autoplay) { player.videoPlay(); } clearInterval(tmp); }); // 播放结束 player.addListener('ended', function() { var url = window.location.href; var sectionId = /sectionId=([^&]*)/.exec(url)[1]; var courseId = sectionId.split('-')[0]; var sectionId = sectionId.split('-')[1]; var sectionId = parseInt(sectionId) + 1; var newUrl = url.replace(/sectionId=([^&]*)/, 'sectionId=' + courseId + '-' + sectionId); window.location.href = newUrl; }); } }, 500); }); }