Greasy Fork

Udemy Auto Enroll Free Courses

Udemy auto enroll free courses

当前为 2022-12-06 提交的版本,查看 最新版本

// ==UserScript==
// @name         Udemy Auto Enroll Free Courses
// @namespace    http://tampermonkey.net/
// @version      0.1.1.8
// @description  Udemy auto enroll free courses
// @author       0x01x02x03
// @license MIT
// @match        https://www.udemy.com/course/*/*
// @match        https://www.udemy.com/cart/checkout/express/course*/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=udemy.com
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    let beenExecutedOne = false;
    let beenExecutedTwo = false;
    
    function courseIsFree(){
        let freeCourse = document.body.querySelector("#udemy > div.ud-main-content-wrapper > div.ud-main-content > div > div > div:nth-child(3) > div.heading > div.ud-container.lead-container > div:nth-child(2) > div > div > div > div > div.buy-button.buy-box--buy-box-item--2RETv.buy-box--buy-button--35r28 > div > button");
        if (freeCourse.textContent == 'Enroll now'){
            alert("This course is free, and we gonna add it to your library");
            freeCourse.click();
        }
        else{
            setTimeout(alreadyOwned, 5000);
        }
    }
    
    function alreadyOwned(){
        let owned = document.body.querySelector('#udemy > div.ud-main-content-wrapper > div.ud-main-content > div > div > div.paid-course-landing-page__container > div.sidebar-container-position-manager > div.course-landing-page_sidebar-container > div > div:nth-child(1) > div.sidebar-container--purchase-section--2DONZ > div > div > div.generic-purchase-section--buy-box-main--2o6Au > div > div.buy-button.buy-box--buy-box-item--2RETv.buy-box--buy-button--35r28 > div > button').textContent;
        if (owned == 'Go to course'){
            alert("Course already owned!");
        }
        else{
            setTimeout(stillFree, 5000);
        }
    }
    
    function stillFree(){
        let freeOrNot = document.body.querySelector("#udemy > div.ud-main-content-wrapper > div.ud-main-content > div > div > div.paid-course-landing-page__container > div.sidebar-container-position-manager > div.course-landing-page_sidebar-container > div > div:nth-child(1) > div.sidebar-container--purchase-section--2DONZ > div > div > div.generic-purchase-section--buy-box-main--2o6Au > div > div.buy-button.buy-box--buy-box-item--2RETv.buy-box--buy-button--35r28 > div > button").textContent;
        if (freeOrNot == 'Buy now'){
            alert("Course no longer free, sorry");
        }
        else{
            execOnce();
        }
    }

    function autoEnrollUno() {
        let e = document.querySelectorAll('#udemy > div.ud-main-content-wrapper > div.ud-main-content > div > div > div.paid-course-landing-page__container > div.sidebar-container-position-manager > div.course-landing-page_sidebar-container > div > div:nth-child(1) > div.sidebar-container--purchase-section--2DONZ > div > div > div.generic-purchase-section--buy-box-main--2o6Au > div > div.buy-button.buy-box--buy-box-item--2RETv.buy-box--buy-button--35r28 > div > button')[Math.random() * 100 >= 50 ? 0 : 1];
        if (e) {
            console.log("Enrolled Udemy One", e);
            beenExecutedOne = true;
            e.click();
        } else {
            console.log("No Button found yet, waiting 5 seconds");
            setTimeout(execOnce, 5000);
        }
    }

    function autoEnrollDos() {
        let e = document.querySelectorAll('#udemy > div.ud-main-content-wrapper > div.ud-main-content > div > div > div > div.marketplace-checkout--checkout-summary--gBdnZ > div > div.marketplace-checkout--marketplace-checkout-button-container--1cpeV > div.marketplace-checkout--button-term-wrapper--2_M-- > div.checkout-button--checkout-button--container--RQKAM > button')[Math.random() * 100 >= 50 ? 0 : 1];
        if (e) {
            console.log("Enrolled Udemy Two", e);
            beenExecutedTwo = true;
            e.click();
        } else {
            console.log("No Button found yet, waiting 5 seconds");
            setTimeout(execOnce, 5000);
        }
    }

    function execOnce() {
        if (!beenExecutedOne) autoEnrollUno();
        if (!beenExecutedTwo) autoEnrollDos();
    }
    setTimeout(courseIsFree, 3000);


})();