vidsrc.me navigator

Navigate between episodes on vidsrc.me

// ==UserScript==
// @name         vidsrc.me navigator
// @namespace    http://tampermonkey.net/
// @version      1.0
// @license      apache2
// @description  Navigate between episodes on vidsrc.me
// @author       Aditya Sriram
// @match        https://vidsrc.me/embed/*/*-*/
// @grant        none
// @require      http://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js
// ==/UserScript==

(function() {
    'use strict';

    const patn = /embed\/(?<id>tt\d+)\/(?<season>\d+)-(?<episode>\d+)/gi;
    const match = patn.exec(window.location.pathname);
    const data = match ? match.groups : {};

    console.log(`tampered id: ${data.id}, season: ${data.season}, episode: ${data.episode}`);

    function checkForEp(id, season, ep, success, failure) {
        const queryurl = `/embed/${id}/${season}-${ep}/`;
        jQuery.get(queryurl, function(data) {
            if (data == "not found") {
                failure(queryurl);
            } else {
                success(queryurl);
            }
        });

    }

    function setStatus(status) {
        jQuery("div.header").html("<i>" + status + "</i>");
    }

    function resetStatus() {
        jQuery("div.header").html("change player");
    }

    function switchToUrl(newurl) {
        window.setTimeout(function() {window.location = newurl;}, 1000);
        setStatus("redirecting...");
    }

    function nextEp() {
        const id = data.id;
        const season = parseInt(data.season);
        const episode = parseInt(data.episode);
        setStatus("searching...");

        checkForEp(id, season, episode+1, switchToUrl, function(queryurl) {
            checkForEp(id, season+1, 1, switchToUrl, function(queryurl) {
                setStatus("<span style='color:crimson'> couldn't find any more episodes </span>" );
                window.setTimeout(resetStatus, 3000);
            });
        });
    }

    jQuery("body").append(`<div class="tm-next" style="
    color: white;
    background-color: rgba(0,0,0,0.6);
    right: 0px;
    position: absolute;
    top: calc(50% - 30px);
    font-weight: bold;
    border-radius: 5px;
    padding: 5px;
    font-size: 5em;
    cursor: pointer;
    ">⏭</div>`);

    jQuery(".tm-next").click(nextEp);

})();