8行代码实现学习通视频自动播放

最近放假也是闲得慌,突发奇想想写一个超星的脚本,顺便回顾了一些dom的操作和iframe的相关知识

代码

不废话直接上代码

function start () {
  iframe = document.querySelector('iframe').contentWindow.document.querySelectorAll('iframe')[0].contentWindow;
  const play = iframe.document.querySelector('.vjs-big-play-button');
  play.click();
  var pass = iframe.document.querySelector('#video > div.vjs-control-bar > div.vjs-progress-control.vjs-control > div');
  if (pass && parseInt(pass.getAttribute('aria-valuenow')) >= 99) document.querySelector('.orientationright').click()
}
setInterval(start, 2000);

这只是一个简单的demo,适用于每页只有一个视频的情况。

如果有的视频中间有答题的话,会继续向后播放,但是哪个题目会一直挂在那里,所以刷完记得再回过来答题。

使用

控制台

嫌麻烦的话,直接浏览器F12,在控制台把代码注入

52ea383f1cd34ef2a79bd14193ac8fad.png

书签

http://t.csdn.cn/w1YAE

浏览器插件

目录样式

b3b96371c7d540a3a527cb4703d0d293.png

manifest.json文件配置插件适用的网页,也就是指定域名。

{
  "manifest_version": 2,
  "name": "刷课",
  "version": "1.0",
  "description": "刷课",
  "content_scripts": [
    {
      "matches": [
        "*://*/*"
      ],
      "js": [
        "main.js"
      ]
    }
  ]
}

main.js中就放上面的代码

打开谷歌浏览器,在扩展程序管理中将文件夹拖进去
0400559789dd4b068f62a04082ea9bf6.png

其他功能

设置静音

    //判断音量并设计静音
    let volumeDom = iframe.document.querySelector('div.vjs-volume-bar.vjs-slider-bar.vjs-slider.vjs-slider-vertical')
    if (volumeDom) {
      var volume = parseInt(volumeDom.getAttribute('aria-valuenow'));
      if (volume > 0) iframe.document.querySelector('.vjs-mute-control.vjs-control.vjs-button.vjs-vol-3').click();
    }

移除答题框

iframe = document.querySelector('iframe').contentWindow.document.querySelectorAll('iframe')    //获取答题框
var dialog =  iframe.document.querySelector(".el-dialog__wrapper.dialog-test");
if (dialog != undefined) {   
//移除答题框   
iframe.document.querySelector(".v-modal").remove();   
iframe.document.querySelector(".el-dialog__wrapper.dialog-test")[0].remove();   iframe.document.querySelector("body").removeClass("el-popup-parent--hidden");
}

上面代码是直接移除然后继续往下播放,如果有题库的话可以获取题目文本然后查找题库选取正确答案

设置视频播放速度

iframe = document.querySelector('iframe').contentWindow.document.querySelectorAll('iframe')[0].contentWindow;
let speedArr = iframe.document.querySelectorAll('#video > div.vjs-control-bar > div.vjs-playback-rate.vjs-menu-button.vjs-menu-button-popup.vjs-control.vjs-button > div.vjs-menu > ul > li > span.vjs-menu-item-text')
console.log(speedArr);
for (let index = 0; index < speedArr.length; index++) {
  const element = speedArr[index];
  const result = element.innerHTML.replace(/X/g, "");
  //设置播放速度为2
  if (parseInt(result) == 2) {
    element.click()
  }
}

脚本的话只是实现了一个简单的demo,像有的章节有两个视频或者每个章节有多个页面然后每个页面又有视频这些个情况没有考虑。

然后浏览器插件的实现并没有下太大功夫,可以继续编写插件运行以及一些参数配置的可视化控制界面

等什么时候又闲的慌了再继续捣鼓一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值