Duolingo - autoStart next Lesson

Automatically starts next lesson when Duolingo loads.

目前为 2020-01-25 提交的版本。查看 最新版本

// ==UserScript==
// @name        Duolingo - autoStart next Lesson
// @description Automatically starts next lesson when Duolingo loads.
// @version     1.1
// @namespace   minirock
// @match       https://www.duolingo.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// ==/UserScript==

// function next_lesson_scroll() {
//     let lessons = document.querySelectorAll("div[class='QmbDT']");

//     for (let i = 0; i < lessons.length; ++i) {
//         var lesson = lessons[i].querySelector("div[data-test='level-crown']");
//         if (lesson === null) {
//             var last_finished = i;
//             break;
//         }
//     }

//     // go to next unfinished lesson
//     lessons[last_finished].querySelector("div[class='_2albn']").click();
// }

function next_lesson_start() {
    let lessons = document.querySelectorAll("div[class='QmbDT']");
    if (lessons.length === 0) return;

    for (let i = 0; i < lessons.length; ++i) {
        var lesson = lessons[i].querySelector("div[data-test='level-crown']");
        if (lesson === null) {
            var last_finished = i;
            break;
        }
    }

    // go to next unfinished lesson
    lessons[last_finished].querySelector("div[class='_2albn']").click();

    var status = Array.prototype.filter.call(lessons[last_finished].querySelectorAll("div[class='_2yvEQ']"), function (element) {
        return RegExp('^0% Complete').test(element.textContent);
    });

    // status > 0 == lesson : tips
    if (status.length !== 0) {
        console.log('TIPS');
        lessons[last_finished].querySelectorAll("button")[1].click()
    } else {
        console.log('LESSON');
        lessons[last_finished].querySelector("button[data-test='start-button']").click();
    }
}

function next_lesson_start_from_tips() {
    let tips = document.querySelector("div[class='_2LApJ']");
    if (tips !== null) {
        tips.querySelectorAll("button")[0].click();
    }
}

$(document).ready(function () {
    next_lesson_start();
});

let keyEventListener = function (event) {
    if (event.keyCode === 13) {
        next_lesson_start_from_tips();
        next_lesson_start();
    }
}

document.addEventListener("keyup", keyEventListener);

// start automatically next after 2s
(function () {
    var rs = history.replaceState;
    history.replaceState = function () {
        rs.apply(history, arguments); // preserve normal functionality
        // console.log("navigating", arguments); // do something extra here; raise an event
        
        if (window.location.href.indexOf('/practice') == -1) setTimeout(function () { window.location.href = '/practice'; }, 2000);
        else setTimeout(next_lesson_start, 2000);
    };
}());

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址