MENU

自动播放传智播客课程视频

June 22, 2020 • Read: 5204 • 默认分类阅读设置

这学期还弄了个1+web的什么考核, 天天让看视频做那个作业, 打游戏的时候还要盯着时长, 回来切视频
太麻烦了, 干脆写了个脚本自动帮我切换, 如果有习题就会播放语音提醒
(一点小提示, 可以配合tampermonkey的H5播放器控制来实现16倍速播放, 畅享极致丝滑, 几秒一个视频, 我也是听我朋友说的传智不计观看视频时长, 如果计视频观看时长给分数的话就GG了, 酌情使用)

使用方法:
在传智播客视频播放页按F12, 将下面的代码粘贴到控制台里面, 回车即可运行
(本项目已在GitHub开源, 如果对你有用的话, 顺路给个starrrrrr吧!)

console.log("欢迎使用传智自动播放插件, 作者博客:https://www.nothamor.cn");
    setTimeout(function() {
        let url = window.location.href;
        if(url.includes("http://stu.ityxb.com/lookPaper/busywork/")) {
            auto_search();
            console.log("检测到为测试页面, 开始自动查询题目");
        } else if(url.includes("http://stu.ityxb.com/preview/detail/")) {
            auto_play();
            console.log("检测到为视频播放页面, 开始自动播放视频");
        }
    }, 5000);

    function auto_play() {
        const CLASS_LIST = document.getElementsByClassName("point-progress-box");
        const CLASS_NAME = document.getElementsByClassName("point-text ellipsis");
        let question_text = document.getElementsByTagName("pre")[0];
        let player = document.getElementsByTagName("video")[0].id;
        let question_text_value;
        document.getElementById(player).click();
        let counter = 0;
        const TIMER = setInterval(function () {
            let percent = CLASS_LIST[counter].innerHTML.replace(/\ +/g, "").replace(/[\r\n]/g, "");
            let title_name = CLASS_NAME[counter].innerHTML.replace(/\ +/g, "").replace(/[\r\n]/g, "");
            if (percent.includes("100%") && counter == (CLASS_LIST.length - 1)) {
                clearInterval(TIMER);
                alert("当前页所有视频均已播放完成");
            } else if (percent.includes("100%")) {
                CLASS_LIST[counter + 1].click();
                player = document.getElementsByTagName("video")[0].id;
                document.getElementById(player).click();
                counter++;
            }
            if (title_name.includes("习题")) {
                question_text = document.getElementsByTagName("pre")[0];
                question_text_value = question_text.innerHTML;
                console.log(" ");
                GM_xmlhttpRequest({
                    method: 'GET',
                    url: 'http://jb.s759n.cn/chati.php?w=' + encodeURIComponent(QUESTION[counter].innerHTML),
                    headers: {
                        'Content-type': 'application/x-www-form-urlencoded',
                    },
                    data: 'q=' + encodeURIComponent(QUESTION[counter].innerHTML),
                    onload: function (response) {
                        if (response.status == 200) {
                            let obj = $.parseJSON(response.responseText.replace(/^操作数据失败!/, '')) || {};
                            obj.answer = obj.data;
                            console.log("题目:" + QUESTION[counter].innerHTML + "的答案为:" + obj.answer);
                            if (obj.code) {
                            } else {
                                console.log('服务器繁忙,正在重试...');
                            }
                        } else if (response.status == 403) {
                            console.log('请求过于频繁,建议稍后再试');
                        } else {
                            console.log('服务器异常,正在重试...');
                        }
                    }
                });
            }
        }, 1000);
    }
    function auto_search() {
        const QUESTION = document.getElementsByTagName("pre");
        let counter = 0;
        const SEARCH = setInterval(function() {
            GM_xmlhttpRequest({
                method: 'GET',
                url: 'http://jb.s759n.cn/chati.php?w=' + encodeURIComponent(QUESTION[counter].innerHTML),
                headers: {
                    'Content-type': 'application/x-www-form-urlencoded',
                },
                onload: function (response) {
                    if (response.status == 200) {
                        let obj = $.parseJSON(response.responseText.replace(/^操作数据失败!/, '')) || {};
                        console.log("第" + counter + "题" + "的答案为:" + obj.data);
                        if (obj.code) {
                        } else {
                            console.log('服务器繁忙,正在重试...');
                        }
                    } else if (response.status == 403) {
                        console.log('请求过于频繁,建议稍后再试');
                    } else {
                        console.log('服务器异常,正在重试...');
                    }
                }
            });
            counter++;
            if(counter == (QUESTION.length)) {
                clearInterval(SEARCH);
                console.log("题目搜索完成");
            }
        }, 1000);
    }

当然还有另外一个版本, 这个依赖于浏览器插件tampermonkey, 不用每次都手动去输入脚本内容
可以手动添加, 也可以直接在greasy fork上下载本脚本
greasy fork下载链接:https://greasyfork.org/zh-CN/scripts/405920-传智自动播放视频

// ==UserScript==
// @name         传智自动播放视频
// @namespace    http://tampermonkey.net/
// @version      0.3
// @description  自动播放传智播客课程视频, 开发者博客:http://www.nothamor.cn
// @author       nothamor
// @match        *.ityxb.com/*
// @grant        GM_xmlhttpRequest
// ==/UserScript==

(function() {
    'use strict';

    console.log("欢迎使用传智自动播放插件, 作者博客:https://www.nothamor.cn");
    setTimeout(function() {
        let url = window.location.href;
        if(url.includes("http://stu.ityxb.com/lookPaper/busywork/")) {
            auto_search();
            console.log("检测到为测试页面, 开始自动查询题目");
        } else if(url.includes("http://stu.ityxb.com/preview/detail/")) {
            auto_play();
            console.log("检测到为视频播放页面, 开始自动播放视频");
        }
    }, 5000);

    function auto_play() {
        const CLASS_LIST = document.getElementsByClassName("point-progress-box");
        const CLASS_NAME = document.getElementsByClassName("point-text ellipsis");
        let question_text = document.getElementsByTagName("pre")[0];
        let player = document.getElementsByTagName("video")[0].id;
        let question_text_value;
        document.getElementById(player).click();
        let counter = 0;
        const TIMER = setInterval(function () {
            let percent = CLASS_LIST[counter].innerHTML.replace(/\ +/g, "").replace(/[\r\n]/g, "");
            let title_name = CLASS_NAME[counter].innerHTML.replace(/\ +/g, "").replace(/[\r\n]/g, "");
            if (percent.includes("100%") && counter == (CLASS_LIST.length - 1)) {
                clearInterval(TIMER);
                alert("当前页所有视频均已播放完成");
            } else if (percent.includes("100%")) {
                CLASS_LIST[counter + 1].click();
                player = document.getElementsByTagName("video")[0].id;
                document.getElementById(player).click();
                counter++;
            }
            if (title_name.includes("习题")) {
                question_text = document.getElementsByTagName("pre")[0];
                question_text_value = question_text.innerHTML;
                console.log(" ");
                GM_xmlhttpRequest({
                    method: 'GET',
                    url: 'http://jb.s759n.cn/chati.php?w=' + encodeURIComponent(QUESTION[counter].innerHTML),
                    headers: {
                        'Content-type': 'application/x-www-form-urlencoded',
                    },
                    data: 'q=' + encodeURIComponent(QUESTION[counter].innerHTML),
                    onload: function (response) {
                        if (response.status == 200) {
                            let obj = $.parseJSON(response.responseText.replace(/^操作数据失败!/, '')) || {};
                            obj.answer = obj.data;
                            console.log("题目:" + QUESTION[counter].innerHTML + "的答案为:" + obj.answer);
                            if (obj.code) {
                            } else {
                                console.log('服务器繁忙,正在重试...');
                            }
                        } else if (response.status == 403) {
                            console.log('请求过于频繁,建议稍后再试');
                        } else {
                            console.log('服务器异常,正在重试...');
                        }
                    }
                });
            }
        }, 1000);
    }
    function auto_search() {
        const QUESTION = document.getElementsByTagName("pre");
        let counter = 0;
        const SEARCH = setInterval(function() {
            GM_xmlhttpRequest({
                method: 'GET',
                url: 'http://jb.s759n.cn/chati.php?w=' + encodeURIComponent(QUESTION[counter].innerHTML),
                headers: {
                    'Content-type': 'application/x-www-form-urlencoded',
                },
                onload: function (response) {
                    if (response.status == 200) {
                        let obj = $.parseJSON(response.responseText.replace(/^操作数据失败!/, '')) || {};
                        console.log("第" + counter + "题" + "的答案为:" + obj.data);
                        if (obj.code) {
                        } else {
                            console.log('服务器繁忙,正在重试...');
                        }
                    } else if (response.status == 403) {
                        console.log('请求过于频繁,建议稍后再试');
                    } else {
                        console.log('服务器异常,正在重试...');
                    }
                }
            });
            counter++;
            if(counter == (QUESTION.length)) {
                clearInterval(SEARCH);
                console.log("题目搜索完成");
            }
        }, 1000);
    }
})();
Last Modified: June 27, 2020
Leave a Comment

48 Comments
  1. 您好,我看到一个继续再教育网站的不能自动播放视频,请问有没有什么办法

  2. h2z2h h2z2h

    好像答不了题了,有新版本更新吗

  3. 撒旦 撒旦

    Uncaught TypeError: Cannot read property 'id' of undefined
    at auto_play (userscript.html?name=%E4%BC%A0%E6%99%BA%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE%E8%A7%86%E9%A2%91.user.js&id=3935eecc-2b13-4f5a-b225-6bac90f59c95:35)
    at Window.eval (userscript.html?name=%E4%BC%A0%E6%99%BA%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE%E8%A7%86%E9%A2%91.user.js&id=3935eecc-2b13-4f5a-b225-6bac90f59c95:26)
    at :3:100
    at E.z. (eval at exec_fn (0ebfee1672e2440cb21e3586a9757220:1), :43:442)
    答题报错

  4. 水怪 水怪

    仅当用户同意、网站由用户激活或媒体无声时允许自动播放。这是啥情况

  5. wqed wqed

    提供当天真实物流单号和快递单号购买服务www.kuaidi5u.com

  6. Rudy Rudy

    dgdvdsf

  7. 风过无期 风过无期

    脚本识别不出来是怎么回事呢,

    1. @风过无期sorry for late reply, 请问是什么页面

  8. 艮卦- 艮卦-

    请问在油猴上你上传的插件题库貌似不是很全,挺多题搜不到的,一直提示
    李恒雅提醒大家:考试千万场,诚信第一场.一朝弄舞弊,十年挂南墙(未搜索到答案)
    大佬考虑更新一下题库接口吗?

    1. @艮卦-是的, 这个题库的确并不是很齐全, 我明天看看有没有题库更全的接口, 进行更换

    2. 艮卦- 艮卦-

      @欧尼酱那就麻烦了,谢谢了

  9. 谢谢分享,日常打卡~ 滴滴~@(汗)

  10. okc okc

    好像不能用了
    GET http://s19.cnzz.com/z_stat.php?id=1273545537&show=pic1 net::ERR_BLOCKED_BY_CLIENT
    net::ERR_BLOCKED_BY_CLIENT
    出现这个错误

    1. @okc这个错误貌似是tampermonkey弹出窗口的时候你没点击允许导致的吧

    2. okc okc

      @欧尼酱也没有弹出窗口

    3. okc okc

      @欧尼酱关闭拦截了,但也没看到搜题提示

    4. okc okc

      @欧尼酱userscript.html?id=9de44702-145d-4139-9445-213763cf096f:88 Uncaught TypeError: Cannot read property 'innerHTML' of undefined
      at Window.eval (userscript.html?id=9de44702-145d-4139-9445-213763cf096f:88)
      at :2:494
      at c. (eval at exec_fn

    5. okc okc

      @欧尼酱Uncaught TypeError: Cannot read property 'innerHTML' of undefined

    6. @okc查题的时候出现的错误么

    7. okc okc

      @欧尼酱是的,出现这个代码错误就执行不下去了

    8. anonymous anonymous

      @okc同该错误

    9. zharly zharly

      @okc我也出现这个错误了

  11. Lx Lx

    用了插件,但是没有反应呢。

    1. @Lx什么页面下没有反应,什么功能不好使

  12. 小呆呆 小呆呆

    搜题一直显示“李恒雅在睡觉觉”,是什么原因?

    1. @小呆呆题库没有完善,没有搜索到查询的题目

    2. 小呆呆 小呆呆

      @欧尼酱啥时候完善,或者可以引用别的题库么

    3. @小呆呆明天我看一下,看一下哪个题库更全一些,进行更换

  13. 1256 1256

    userscript.html?name=%E4%BC%A0%E6%99%BA%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE%E8%A7%86%E9%A2%91.user.js&id=747f202e-b03e-4350-98ab-84b9756d23e1:84 Uncaught TypeError: Cannot read property 'innerHTML' of undefined
    at Window.eval (userscript.html?name=%E4%BC%A0%E6%99%BA%E8%87%AA%E5%8A%A8%E6%92%AD%E6%94%BE%E8%A7%86%E9%A2%91.user.js&id=747f202e-b03e-4350-98ab-84b9756d23e1:84)
    at :3:98
    at G.c. (eval at exec_fn (762ec5809ac347f789f634550a1b9073?courseId=2a9f2fcaae214d64ab31cb329ed66885:1), :42:472)

    1. @1256在什么页面发生的问题, 有没有截图

  14. 123 123

    不能用啊大佬

    1. @123什么情况下不能使用,什么页面呢

    2. 123 123

      @欧尼酱http://stu.ityxb.com/writePaper/busywork/22760fd09490474b9ad434dea580af28?courseId=2a9f2fcaae214d64ab31cb329ed66885
      这个网站播放视频有题目弹出

    3. @123我明天看一下,感谢反馈

  15. tffv tffv

    提供快递单号、空包代发有底单、内网www.88danhw.com

  16. 阿泰 阿泰

    楼主太牛逼了!!!

    1. @阿泰我是垃圾

  17. 师见打#(喜极而泣)

    1. @c0sMx我还把代码截图发了个空间,给这个老师看见了,没说我啥,还说我是她教过最好的学生@(挖鼻)

    2. @c0sMx用js偷懒js#(赞一个)

    3. @欧尼酱@(阴险)别人家的孩子。

    4. 小徐 小徐

      @c0sMx兄弟,有没有自动查题目的,就传智播客的题目,那些网上智慧树之类的的接口基本都有答案。@(乖)

    5. @小徐在研究了, 不确定能不能做出来, 做出来的话会更新的@(滑稽)

    6. 小徐 小徐

      @欧尼酱好的大佬!!我时刻等更新啊,下周考试要用,你可以参考那些智慧树和超星的查题脚本的,查题接口用一样的就行,题库是一样的,都有的。@(你懂的)

    7. @小徐好的, 我现在做, 更新的话邮件通知你

    8. 小徐 小徐

      @欧尼酱谢谢大佬!!!大恩不言谢@(真棒)

    9. @小徐查题功能更新好了, 你看看能不能用吧, 有问题的话及时反馈

    10. @小徐可以在greasy fork上直接更新0.2版本, 也可以把代码复制粘贴过去