Javbus在线播放

在磁力链接下方增加【在线播放】地址

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey, Greasemonkey или Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Violentmonkey.

За да инсталирате този скрипт, трябва да имате инсталирано разширение като Tampermonkey или Userscripts.

За да инсталирате скрипта, трябва да инсталирате разширение като Tampermonkey.

За да инсталирате този скрипт, трябва да имате инсталиран скриптов мениджър.

(Вече имам скриптов мениджър, искам да го инсталирам!)

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да инсталирате разширение като Stylus.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

За да инсталирате този стил, трябва да имате инсталиран мениджър на потребителски стилове.

(Вече имам инсталиран мениджър на стиловете, искам да го инсталирам!)

// ==UserScript==
// @name         Javbus在线播放
// @namespace    Violentmonkey Scripts
// @version      3.1
// @description  在磁力链接下方增加【在线播放】地址
// @match        https://www.javbus.com/*
// @grant        GM_xmlhttpRequest
// @license      All Rights Reserved
// ==/UserScript==

(function() {
    'use strict';

    // 如果当前页面包含 "forum",则不执行脚本
    if (window.location.href.includes("forum")) {
        return;
    }

    // 提取视频的识别码
    var codeElement = document.querySelector('.col-md-3.info span[style="color:#CC0000;"]');
    if (codeElement) {
        var code = codeElement.innerText.trim().toLowerCase(); // 确保识别码为小写
        console.log('识别码: ' + code);

        // 创建在线播放区域
        var playArea = createPlayArea(code);

        // 将播放区域插入到磁力链接容器下方
        var magnetTable = document.getElementById("magnet-table");
        if (magnetTable) {
            var row = document.createElement("tr");
            var cell = document.createElement("td");
            cell.colSpan = 3;
            cell.appendChild(playArea);
            row.appendChild(cell);
            magnetTable.parentNode.insertBefore(row, magnetTable.nextSibling);
        }
    }

    /**
     * 创建在线播放区域
     * @param {string} code 识别码
     * @returns {HTMLElement} 播放区域元素
     */
    function createPlayArea(code) {
        var playArea = document.createElement("div");
        playArea.className = "play-area";
        playArea.style.border = "1px solid #ccc";
        playArea.style.padding = "15px";
        playArea.style.marginTop = "15px";
        playArea.style.borderRadius = "8px";
        playArea.style.backgroundColor = "#ffffff";
        playArea.style.boxShadow = "0 4px 8px rgba(0, 0, 0, 0.1)";

        var title = document.createElement("h3");
        title.textContent = "在线播放";
        title.style.marginBottom = "15px";
        title.style.color = "#333";
        title.style.fontFamily = "Arial, sans-serif";

        var linkList = document.createElement("ul");
        linkList.className = "link-list";
        linkList.style.listStyle = "none";
        linkList.style.padding = "0";

        var links = [
            { name: "Javgg", url: `https://javgg.net/jav/sdam-074/${code}` },
            { name: "Javmost", url: `https://www5.javmost.com/${code}` },
            { name: "Njav", url: `https://njav.tv/zh/v/${code}` },
            { name: "Jable", url: `https://jable.tv/videos/${code}/` }
        ];

        links.forEach(link => {
            var listItem = createLink(link.name, link.url);
            linkList.appendChild(listItem);
            checkLinkStatus(listItem); // 检查超链接状态
        });

        playArea.appendChild(title);
        playArea.appendChild(linkList);
        return playArea;
    }

    /**
     * 创建超链接元素
     * @param {string} title 链接标题
     * @param {string} url 链接地址
     * @returns {HTMLElement} 超链接列表项
     */
    function createLink(title, url) {
        var link = document.createElement("li");
        link.style.marginBottom = "10px";

        var linkText = document.createElement("a");
        linkText.textContent = title;
        linkText.href = url;
        linkText.target = "_blank";
        linkText.style.textDecoration = "none";
        linkText.style.color = "#007BFF";
        linkText.style.fontWeight = "bold";
        linkText.style.fontFamily = "Arial, sans-serif";
        linkText.style.transition = "color 0.3s";

        linkText.addEventListener("mouseover", function() {
            linkText.style.color = "#0056b3";
        });

        linkText.addEventListener("mouseout", function() {
            linkText.style.color = "#007BFF";
        });

        var linkTitle = document.createElement("span");
        linkTitle.style.marginLeft = "10px";
        linkTitle.style.fontSize = "0.9em";
        linkTitle.style.color = "#666";

        link.appendChild(linkText);
        link.appendChild(linkTitle);
        return link;
    }

    /**
     * 检查超链接状态并获取标题
     * @param {HTMLElement} link 链接列表项
     */
    function checkLinkStatus(link) {
        GM_xmlhttpRequest({
            method: "HEAD",
            url: link.firstChild.href,
            onload: function(response) {
                if (response.status === 200) {
                    link.firstChild.style.color = "green";
                    link.lastChild.textContent = " ✅";
                    getLinkTitle(link.firstChild.href, link.lastChild);
                } else {
                    link.firstChild.style.color = "red";
                    link.lastChild.textContent = " ❌";
                }
            }
        });
    }

    /**
     * 获取链接页面标题
     * @param {string} url 链接地址
     * @param {HTMLElement} titleElement 用于显示标题的元素
     */
    function getLinkTitle(url, titleElement) {
        GM_xmlhttpRequest({
            method: "GET",
            url: url,
            onload: function(response) {
                var html = response.responseText;
                var titleMatch = html.match(/<title>(.*?)<\/title>/i);
                if (titleMatch && titleMatch.length > 1) {
                    titleElement.textContent += " - " + titleMatch[1];
                }
            }
        });
    }
})();