Greasy Fork

Better FMovies

Stay Fullscreen and Switch to Next Season on Last Episode

目前为 2023-12-16 提交的版本。查看 最新版本

// ==UserScript==
// @name         Better FMovies
// @description  Stay Fullscreen and Switch to Next Season on Last Episode
// @version      0.1.0
// @require      http://code.jquery.com/jquery-latest.js
// @include     /https?://(www\.)?fmoviesz\.to\/tv/
// @run-at       document-idle
// @namespace https://greasyfork.org/users/1235006
// ==/UserScript==

function addJQuery(callback) {
    var script = document.createElement("script");
    script.setAttribute(
        "src",
        "//ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"
    );
    script.addEventListener(
        "load",
        function () {
            var script = document.createElement("script");
            script.textContent =
                "window.jQ=jQuery.noConflict(true);(" +
                callback.toString() +
                ")();";
            document.body.appendChild(script);
        },
        false
    );
    document.body.appendChild(script);
}

function main() {
    const fulLScreenBtn = document.createElement("div");
    const fulLScreenBtnContent = document.createTextNode("Auto fullscreen");
    fulLScreenBtn.id = "fullscreen-btn";
    fulLScreenBtn.classList.add("item");
    fulLScreenBtn.appendChild(fulLScreenBtnContent);
    document.querySelector(".c-items").appendChild(fulLScreenBtn);

    var fullscreen_btn = document.getElementById("fullscreen-btn");

    fullscreen_btn.addEventListener("click", function () {
        var elem = document.getElementById("player");
        var fn =
            elem.requestFullscreen ||
            elem.mozRequestFullScreen ||
            elem.webkitRequestFullscreen ||
            elem.msRequestFullscreen;

        if (fn) {
            fn.call(elem);
        }
    });

    function receiveMessage(e) {
        let visibleEpisodes = $("ul.episodes:visible");
        let episodeLinks = Array.from(visibleEpisodes.find("a"));
        let lastEpisode = episodeLinks[episodeLinks.length - 1];

        var r = e.message || e.data || e.originalEvent.data;
        var p = JSON.parse(r);

        if (lastEpisode.classList.contains("active")) {
            if (p.event === "PLAY_COMPLETED") {
                var currentSeason = visibleEpisodes.attr("data-season");
                var nextSeason =
                    $("ul.episodes").find(":visible").prevObject[currentSeason];
                nextSeason.querySelector("a").click();
            }
        }
    }

    window.addEventListener("message", receiveMessage);
}

addJQuery(main);