BHD Pop-up Player for YT Trailers

A pop-up player for YouTube trailer video on the BHD title page.

// ==UserScript==
// @name        BHD Pop-up Player for YT Trailers
// @namespace   Violentmonkey Scripts
// @match       https://beyond-hd.me/library/title/*
// @match       https://beyond-hd.me/torrents/*
// @grant       none
// @version     1.0
// @author      CodeX0
// @license     MIT
// @description A pop-up player for YouTube trailer video on the BHD title page.
// ==/UserScript==

(function() {
    'use strict';

    console.log("[BHD Trailer Pop-Up Player] - Script loaded.");

    const videoLinkSelector = 'a[href*="youtube.com/watch"]';

    let popup = null;

    function extractVideoUrl(redirectUrl) {
        console.log("[BHD Trailer Pop-Up Player] - Extracting video URL from:", redirectUrl);

        if (redirectUrl.startsWith("https://anon.to/?")) {
            const realUrl = redirectUrl.split("https://anon.to/?")[1];
            console.log("[BHD Trailer Pop-Up Player] - Extracted video URL:", realUrl);
            return realUrl;
        }

        console.log("[BHD Trailer Pop-Up Player] - No redirect found, using original URL:", redirectUrl);
        return redirectUrl;
    }

    function convertToEmbedUrl(videoUrl) {
        console.log("[BHD Trailer Pop-Up Player] - Converting to embed URL:", videoUrl);

        const videoId = videoUrl.split("v=")[1];
        if (!videoId) {
            console.error("[BHD Trailer Pop-Up Player] - Could not extract video ID from URL:", videoUrl);
            return null;
        }

        const embedUrl = `https://www.youtube.com/embed/${videoId}`;
        console.log("[BHD Trailer Pop-Up Player] - Embed URL:", embedUrl);
        return embedUrl;
    }

    function createPopup(videoUrl) {
        console.log("[BHD Trailer Pop-Up Player] - Creating pop-up for video URL:", videoUrl);

        popup = document.createElement('div');
        popup.style.position = 'fixed';
        popup.style.top = '50%';
        popup.style.left = '50%';
        popup.style.transform = 'translate(-50%, -50%)';
        popup.style.width = '640px';
        popup.style.height = '360px';
        popup.style.backgroundColor = '#000';
        popup.style.zIndex = '1000';
        popup.style.border = '2px solid #fff';
        popup.style.boxShadow = '0 0 10px rgba(0, 0, 0, 0.5)';

        const iframe = document.createElement('iframe');
        iframe.src = videoUrl;
        iframe.style.width = '100%';
        iframe.style.height = '100%';
        iframe.style.border = 'none';
        iframe.allow = 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture';
        iframe.allowFullscreen = true;

        const closeButton = document.createElement('button');
        closeButton.innerText = 'X';
        closeButton.style.position = 'absolute';
        closeButton.style.top = '10px';
        closeButton.style.right = '10px';
        closeButton.style.backgroundColor = 'red';
        closeButton.style.color = 'white';
        closeButton.style.border = 'none';
        closeButton.style.cursor = 'pointer';
        closeButton.style.padding = '5px 10px';
        closeButton.style.borderRadius = '50%';
        closeButton.onclick = () => {
            console.log("[BHD Trailer Pop-Up Player] - Closing pop-up via close button.");
            closePopup();
        };

        popup.appendChild(iframe);
        popup.appendChild(closeButton);
        document.body.appendChild(popup);

        document.addEventListener('click', handleOutsideClick);

        console.log("[BHD Trailer Pop-Up Player] - Pop-up created and appended to the body.");
    }

    function closePopup() {
        if (popup) {
            console.log("[BHD Trailer Pop-Up Player] - Closing pop-up.");
            document.body.removeChild(popup);
            popup = null;

            document.removeEventListener('click', handleOutsideClick);
        }
    }

    function handleOutsideClick(event) {
        if (!popup || popup.contains(event.target)) {
            return;
        }

        closePopup();
    }

    document.querySelectorAll(videoLinkSelector).forEach(link => {
        link.addEventListener('click', function(event) {
            event.preventDefault();
            event.stopPropagation();

            console.log("[BHD Trailer Pop-Up Player] - Video link clicked:", this.href);

            const videoUrl = extractVideoUrl(this.href);
            console.log("[BHD Trailer Pop-Up Player] - Final video URL:", videoUrl);

            const embedUrl = convertToEmbedUrl(videoUrl);
            if (!embedUrl) {
                console.error("[BHD Trailer Pop-Up Player] - Failed to convert to embed URL.");
                return;
            }

            createPopup(embedUrl);
        });
    });

    console.log("[BHD Trailer Pop-Up Player] - Event listeners added to video links.");
})();

QingJ © 2025

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