富学宝典

注释:1.实现富学宝典的后台播放(可倍速),2.进入对应的页面自动完成视频或阅读任务,3.部分浏览器会阻止视频自动播放,需要开放对应的权限,4.执行任务的顺序是从上到下

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

You will need to install an extension such as Tampermonkey to install this script.

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         富学宝典
// @namespace    *://iedu.foxconn.com/
// @version      1.05
// @description  注释:1.实现富学宝典的后台播放(可倍速),2.进入对应的页面自动完成视频或阅读任务,3.部分浏览器会阻止视频自动播放,需要开放对应的权限,4.执行任务的顺序是从上到下
// @author       dieout
// @license      MIT
// @run-at       document-end
// @match        *://iedu.foxconn.com/public/user/playCourse?*
// @match        *://iedu.foxconn.com/public/play/play*
// @match        *://10.134.149.121/*
// @icon         http://video.fulearn.com/images/logo2.png
// ==/UserScript==
var lang = (navigator.systemLanguage ? navigator.systemLanguage: navigator.language);
//获取浏览器配置语言 #括号内是个运算,运算过后赋值给lang,当?前的内容为true时把?后的值赋给lang,为False时把:后的值赋给lang
var text = lang.substr(0, 2); //获取lang字符串的前两位
var status = 0;
if (text == 'zh') {
    status = 0;
} else {
    status = 1;
}
//设置清晰度(无效)
// sd:标清
// hd:高清
var clarity = "hd";
//倍速设置
//volvo:1.0X
//saab:1.25X
//opel:1.5X
//audi:2.0X
// var Double_speed = "volvo";
//默认为1倍速
var Double_speed = "audi";


var rate = 1;

(function() {
    Refresh();
    window.onload = readPdf();
})();


async function readPdf() {
    //pdf自动阅读,临时解决办法,刷新iframe
    let j = 0;
    let i = 0;
    for (; j < document.getElementsByTagName("dd").length;) {
        if (status == 0) {
            if (document.getElementsByTagName("dd")[j].children[1].innerText != "已完成") {
                i = j;
                break;
            } else {++j;
                   }
        } else {
            if (document.getElementsByTagName("dd")[j].children[1].innerText != "Finished") {
                i = j;
                break;
            } else {++j;
                   }
        }
    }
    if(j == document.getElementsByTagName("dd").length ){
        alert("本章已全部完成!请手动切换到下一章。");
        return;
    }
    for (; i < document.getElementsByTagName("dd").length; i++) {
        //开始阅读pdf
        // alert("变量:"+ document.getElementsByTagName("dd").length);
        document.getElementsByTagName("dd")[i].click();
        console.log(document.getElementsByClassName("pdfwarp dpn").length);
        // alert("变量1:"+ document.getElementsByClassName("pdfwarp dpn").length);
        if (document.getElementsByClassName("pdfwarp dpn").length > 0) {
            document.getElementsByClassName("pdfwarp dpn")[0].children[2].click();
            // alert("变量2:"+ document.getElementsByTagName("dd")[i].children[1].innerText);
            if (document.getElementsByTagName("dd")[i].children[1].innerText != "已完成") {
                // alert("变量3:"+ document.getElementsByTagName("video").length);
                // if (document.getElementsByTagName("video").length > 0) {
                //     //id="realvideo_html5_api"
                //     break;
                // }

                await sleep(3000);
                // palyfirstpdf();
                // alert("2024" );
                while (document.getElementsByTagName("dd")[i].children[1].innerText != "已完成") {
                    console.log(document.getElementsByTagName("dd")[i].children[1].innerText);
                    // alert( document.getElementsByTagName("dd")[i].children[1].innerText);//调试
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageDown")[0].click();
                    await sleep(1000);
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageDown")[0].click();
                    await sleep(1000);
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageDown")[0].click();
                    await sleep(1000);
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageUp")[0].click();
                    await sleep(1000);
                    if(document.getElementsByTagName("dd")[i].children[1].innerText == "已完成") break;
                }
            } else if (document.getElementsByTagName("dd")[i].children[1].innerText != "Finished") {
                if (document.getElementsByTagName("video").length > 0) {
                    break;
                }
                await sleep(3000);
                while (document.getElementsByTagName("dd")[i].children[1].innerText != "Finished") {
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageDown")[0].click();
                    await sleep(1000);
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageDown")[0].click();
                    await sleep(1000);
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageDown")[0].click();
                    await sleep(1000);
                    document.getElementById("pdf").contentWindow.document.getElementsByClassName("toolbarButton pageUp")[0].click();
                    await sleep(1000);
                    if(document.getElementsByTagName("dd")[i].children[1].innerText == "Finished") break;
                }
            } else {
                if (document.getElementsByTagName("video").length > 0) {
                    break;
                }
                continue;
            }
        }
    }
    if(i == document.getElementsByTagName("dd").length){
        alert("本章已全部完成!请手动切换到下一章。");
        // alert("11");
        // return;
                if (document.getElementById("realvideo_html5_api")) {
                    //id="realvideo_html5_api"
                    // alert("变量3:");
                    main();

                }
    }
    //main();
}

async function main() {
    'use strict';
    let video = document.getElementsByTagName("video");
    let i = 0;
    let j = 0;
    // alert("变量1:"+ document.getElementsByTagName("dd").length);
    for (; j < document.getElementsByTagName("dd").length;) {
        if (status == 0) {
            if (document.getElementsByTagName("dd")[j].children[1].innerText != "已完成") {
                i = j;
                break;
            } else {++j;
                   }
        } else {
            if (document.getElementsByTagName("dd")[j].children[1].innerText != "Finished") {
                i = j;
                break;
            } else {++j;
                   }
        }
    }
    if(j == document.getElementsByTagName("dd").length ){
        alert("本章已全部完成!请手动切换到下一章。");
        alert("123");
        return;
    }
    //隐藏视频上的账号信息
    if (document.getElementsByClassName("vjs-userName").length > 0) {
        document.getElementsByClassName("vjs-userName")[0].style.display = "none";
        document.getElementsByClassName("vjs-userName")[0].style.visibility = "hidden";
        document.getElementsByClassName("vjs-userName")[0].innerText = "";
    }
    //视频播放
    for (; i < document.getElementsByTagName("dd").length; i++) {
        alert("变量2:"+ document.getElementsByTagName("dd")[i].children[1].innerText);
        document.getElementsByTagName("dd")[i].click(); //dianji(i,this); 调用网页中自带的函数
        video = document.getElementsByTagName("video");
        // video.play();
        // document.querySelector('video').play();
        if(document.getElementById("pdf").style.display != "none"){
            readPdf();
        }
        if (status == 0) {
            if (video.length != 0 && document.getElementsByTagName("dd")[i].children[1].innerText != "已完成") {
                let id = video[0].getAttribute("id"); //realvideo_html5_api
                let mp4 = document.getElementById(id);
                //设置默认为高清播放模式
                let select = document.getElementsByTagName("select")[0];
                select.autocomplete="off";
                for (let z = 0; z < select.options.length; ++z) {
                    if (select.options[z].value == clarity) {
                        select.options[z].selected = true;
                        break;
                    }
                }
                //设置倍速播放
                let select2 = document.getElementsByTagName("select")[1];
                select2.autocomplete="off";
                for (let y = 0; y < select2.options.length; ++y) {
                    if (select2.options[y].value == Double_speed) {
                        select2.options[y].selected = true;
                        if(Double_speed == "saab"){
                            rate =1.25
                        }else if(Double_speed == "opel"){
                            rate =1.5
                        }else if(Double_speed == "audi"){
                            rate =2
                        }
                        break;
                    }
                }
                mp4.muted = true; //静音播放
                while (document.getElementsByTagName("dd")[i].children[1].innerText != "已完成") {
                    console.log(document.getElementsByTagName("dd")[i].children[1].innerText);
                    await sleep(1000)
                    document.querySelector('video').playbackRate = rate;
                    mp4.play();
                    if(document.getElementsByTagName("dd")[i].children[1].innerText == "已完成") break;
                }
            }
        } else {
            if (video.length != 0 && document.getElementsByTagName("dd")[i].children[1].innerText != "Finished") {
                document.getElementsByTagName("dd")[i].click(); //dianji(i,this); 调用网页中自带的函数
                let id = video[0].getAttribute("id"); //realvideo_html5_api
                let mp4 = document.getElementById(id);
                //设置默认为高清播放模式
                 let select = document.getElementsByTagName("select")[0];
                 select2.autocomplete="off";
                 for (let z = 0; z < select.options.length; ++z) {
                     if (select.options[z].value == clarity) {
                         select.options[z].selected = true;
                         break;
                    }
                }
                //设置倍速播放
                let select2 = document.getElementsByTagName("select")[1];
                select2.autocomplete="off";
                for (let y = 0; y < select2.options.length; ++y) {
                    if (select2.options[y].value == Double_speed) {
                        select2.options[y].selected = true;
                        if(Double_speed == "saab"){
                            rate =1.25
                        }else if(Double_speed == "opel"){
                            rate =1.5
                        }else if(Double_speed == "audi"){
                            rate =2
                        }
                        break;
                    }
                }
                mp4.muted = true; //静音播放
                while (document.getElementsByTagName("dd")[i].children[1].innerText != "Finished") {
                    console.log(document.getElementsByTagName("dd")[i].children[1].innerText);
                    await sleep(1000)
                    document.querySelector('video').playbackRate = rate;
                    mp4.play();
                    if(document.getElementsByTagName("dd")[i].children[1].innerText == "Finished") break;
                }
            }
        }
    }
    if(i == document.getElementsByTagName("dd").length){
        alert("本章已全部完成!请手动切换到下一章。");
        return;
    }
};
//刷新页面
function Refresh() {
    // Reload every 10 minutes to avoid video jam
    let k2 = 0;
    for (; k2 < document.getElementsByTagName("dd").length;) {
        if (status == 0) {
            if (document.getElementsByTagName("dd")[k2].children[1].innerText != "已完成") {
                setTimeout(()=>{
                    location.reload()
                },600000); //每10分钟重新加载一次,避免视频卡住
                break;
            } else {++k2;
                   }
        } else {
            if (document.getElementsByTagName("dd")[k2].children[1].innerText != "Finished") {
                setTimeout(()=>{
                    location.reload()
                },600000); //每10分钟重新加载一次,避免视频卡住
                break;
            } else {
                ++k2;
            }
        }
    }
    if(k2 == document.getElementsByTagName("dd").length){
        alert("本章已全部完成!请手动切换到下一章。");
    }
}
//休眠等待
function sleep(time) {
    return new Promise((resolve)=>setTimeout(resolve, time));
}