Sleazy Fork is available in English.

yimuhe

1.去除javlibrary详情页面中下载url的重定向;高亮yimuhe的下载链接,去除名称中的链接,方便复制;添加 在javbus中查询 链接;添加磁力链

ของเมื่อวันที่ 05-03-2024 ดู เวอร์ชันล่าสุด

// ==UserScript==
// @name         yimuhe
// @namespace    https://greasyfork.org/zh-CN/scripts/38740-yimuhe
// @version      2.8.1
// @description  1.去除javlibrary详情页面中下载url的重定向;高亮yimuhe的下载链接,去除名称中的链接,方便复制;添加 在javbus中查询 链接;添加磁力链
//               2.破坏torrentkitty的脚本变量引用. 原先l8l1X变量是引用window,然后给加定时器,不停地添加页面的mousedown事件,导致鼠标点击任何地方都会跳转到广告页面
//               3.给141jav每个车牌号后面加上复制按钮;添加 在JavLib中查询 链接
//               4.给javdb每个车牌号后面添加 在JavLib中查询 链接, 所有链接都添加可下载条件
//               5.javbus详情页面加上的车牌号后面添加 在JavLib中查询; 删除磁力链中的onclick事件.
//               6.去掉get.datapps.org网页点击链接后弹出广告窗口
//               7.去掉https://www.77file.com 的弹出广告
//               8.给skrbt网站添加 粘贴并搜索 按钮

// @author       You

// @require      https://cdn.bootcdn.net/ajax/libs/jquery/3.6.0/jquery.min.js

// @include      http://*.javlib.com/*
// @include      http*://*.i71t.com/*

// @include      http*:/*.torrentkitty.*/*

// @include      http*://*.141jav.com/*

// @include      http*://javdb003.com/*
// @include      http*://javdb004.com/*

// @include      http*://*.seejav.men/*
// @include      http*://*.javbus.com/*
// @include      http*://*.busfan.shop/*

// @include      http*://get.datapps.org/*
// @include      http*://www.77file.com/down/*

// @include     http*://skrbtqx.top/*

// @run-at       document-end
// @grant        GM_xmlhttpRequest
// @connect      *
// ==/UserScript==

(function () {
    'use strict';

    console.info('========= yimuhe ');

    var jq = $.noConflict();

    var javLibDomain = "i71t";
    var javLibUrl = "https://www." + javLibDomain + ".com";
    let javLibRegx = "(" + javLibDomain + "|javlib|javlibrary)";

    let javdbDomain = "javdb003";
    let javdbUrl = "https://" + javdbDomain + ".com";

    let jav141Domain = "141jav";

    let javbusDomain = "busfan";
    const javabusUrl = "https://www." + javbusDomain + ".shop";

    const datappsDomain = "datapps";
    //const datappsUrl="https://get.datapps.org";

    const file77Domain = "77file";

    const skrbtDomain = "skrbtqx";
    const skrbtUrl = "https://" + skrbtDomain + ".top";

    // javlibrary, xxx所发表的文章 页面
    execute(javLibRegx, function (location) {
        console.info("====yimuhe====去除javlibrary [xxx所发表的文章] 页面中下载url的重定向;高亮yimuhe的下载链接");
        jq.each(jq("a[href^='redirect.php?url']"), function (index, a) {
            //var origin = location.origin;
            //a.href = decodeURIComponent(a.href.replace(origin+"/cn/redirect.php?url=",""));

            var url = getQueryVariable(a, 'url');
            a.href = decodeURIComponent(url);
            if (!a.href.startsWith('https')) {
                a.href = a.href.replace("http", "https");
            }
            a.text = a.text + "    " + a.href + "      ";
            if (a.href.includes("yimuhe")) {
                jq(a).parentsUntil("tr").closest('.t').css('background-color', '#6B6C83');
                a.style = 'font-size:40px;';
            } else {
                a.style = 'font-size:20px;';
            }
        });
    });

    // javlibrary, 详情 页面
    execute(javLibRegx + ".*\?v=.*", function (location) {
        console.info("====yimuhe====javlibrary详情页面中添加 在javbus中查询 链接;添加磁力链");
        let chePai = document.querySelector("#video_id > table > tbody > tr > td.text").innerText;
        let toAppendElement = document.querySelector("#video_id > table > tbody > tr > td.text");
        appendCopyButton(chePai, toAppendElement);

        let trTag = document.querySelector("#video_id > table > tbody > tr");
        let javdbQueryId = "javdbQueryId";
        trTag.innerHTML = [trTag.innerHTML, '<td><a id="', javdbQueryId, '"href="', javabusUrl, '/', chePai, '">在javbus中查询</a></td>'].join('');

        // 删除名称中的链接
        const videoTitleNode = document.querySelector("#video_title > h3 > a");

        if (videoTitleNode) {
            const videoTitle = videoTitleNode.getInnerHTML();
            videoTitleNode.parentNode.innerText = videoTitle;
        }


        //         GM_xmlhttpRequest({
        //             method: "GET",
        //             headers: {"Referer":"https://skrbtvo.top/search?keyword=%E5%93%AA%E5%90%92%E4%B9%8B%E9%AD%94%E7%AB%A5%E9%99%8D%E4%B8%96&sos=relevance&sofs=all&sot=all&soft=all&som=exact&p=1"},
        //             url: "https://skrbtvo.top/search?keyword=%E5%93%AA%E5%90%92%E4%B9%8B%E9%AD%94%E7%AB%A5%E9%99%8D%E4%B8%96",
        //             onerror: function(e) {
        //                 console.log(e);
        //             },
        //             onload: function(response) {
        //                 if (response.status != 200) {
        //                     console.log("失败。。。")
        //                     return;
        //                 }


        //                 let finalUrl = response.finalUrl;
        //                 if (finalUrl.includes('vl_searchbyid.php')){
        //                     console.log("有多个结果或者没有结果")
        //                     //有多个结果或者没有结果

        //                 } else {

        //                 }// end else
        //             } // end onload
        //         });// end GM_xmlhttpRequest
    });
    //javbus
    execute(javbusDomain, (location) => {
        console.info("5.给javbus每个车牌号后面加上复制按钮;添加 在JavLib中查询 链接; 删除磁力链中的onclick事件.");

        var chePai = document.querySelector("body > div.container > div.row.movie > div.col-md-3.info > p:nth-child(1) > span:nth-child(2)").innerText.trim();
        var toAppendElement = document.querySelector("body > div.container > div.row.movie > div.col-md-3.info > p:nth-child(1)");

        appendCopyButton(chePai, toAppendElement);
        appendHrefJavLib(chePai, toAppendElement);

        // 删除磁力链中的onclick事件
        jq("#magnet-table").one("DOMNodeInserted", (e) => {
            jq('td[onclick]').each((index, element) => {
                element.removeAttribute('onclick');
            });
        })
    });


    execute(jav141Domain, function (location) {
        console.info("3.给141jav每个车牌号后面加上复制按钮;添加 在JavLib中查询 链接.");
        document.querySelectorAll('h5.title.is-4.is-spaced > a').forEach(function (element, index) {
            var chePai = element.innerText.trim();

            appendCopyButton(chePai, element.parentElement);
            appendHrefJavLib(chePai, element.parentElement);

            let markAsOwnerButton = document.createElement('button');
            markAsOwnerButton.dataset.type = 2;
            markAsOwnerButton.dataset.chePai = chePai;
            markAsOwnerButton.appendChild(document.createTextNode('设置为已拥有(javlib)'));
            element.parentElement.appendChild(markAsOwnerButton);
            markAsOwnerButton.onclick = function (event) {
                //debugger;
                GM_xmlhttpRequest({
                    method: "GET",
                    //responseType: "json",
                    url: javLibUrl + "/cn/vl_searchbyid.php?keyword=" + event.target.dataset.chePai,
                    onerror: function (e) {
                        console.log(e);
                    },
                    onload: function (response) {
                        if (response.status != 200) {
                            console.log("失败。。。")
                            return;
                        }

                        let finalUrl = response.finalUrl;
                        if (finalUrl.includes('vl_searchbyid.php')) {
                            console.log("有多个结果或者没有结果")
                            //有多个结果或者没有结果

                        } else {
                            // 明细页面
                            let patternAjaxid = /^var[ ]\$ajaxid.*;/m;
                            let result = patternAjaxid.exec(response.responseText);
                            let ajaxid = result[0].split('"')[1];
                            let data = "type=" + event.target.dataset.type + "&targetid=" + ajaxid;
                            //debugger;

                            GM_xmlhttpRequest({
                                method: "POST",
                                responseType: "json",
                                headers: { "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8" },
                                url: javLibUrl + "/ajax/ajax_cv_favoriteadd.php",
                                data: data,
                                onerror: function (e) {
                                    console.log(e);
                                },
                                onload: function (response) {
                                    if (response.status != 200) {
                                        return;
                                    }
                                    let responseJson = JSON.parse(response.responseText);
                                    if (responseJson.ERROR != 1) {
                                        // 失败
                                        console.log("失败。" + response.responseText);
                                    }
                                }
                            });// end GM_xmlhttpRequest
                        }// end else
                    } // end onload
                });// end GM_xmlhttpRequest
            };
        });
    });

    execute(javdbDomain, function (location) {
        console.info("4.给javdb添加 在JavLib中查询 链接.");
        document.querySelectorAll("a.button.is-white.copy-to-clipboard").forEach(function (element, index) {
            var chePai = element.getAttribute('data-clipboard-text');
            appendHrefJavLib(chePai, element.parentElement);
        });

        console.info("javdb 每个查询链接都添加 可下载 条件");
        //document.querySelectorAll('div.tabs.is-boxed a').forEach(function(element,index){
        document.querySelectorAll('a').forEach(function (element, index) {
            console.info(index + element);
            let href = element.href;
            if (href.includes("video_codes")
                || href.includes("directors")
                || href.includes("makers")
                || href.includes("series")
                || href.includes("publishers")
                || href.includes("search")) {
                //element.href = href+"?f=download";
                element.href = appendUrlParam(href, "f=download")
            } else if (href.includes("actors")) {
                //element.href = href+"?t=d";
                element.href = appendUrlParam(href, "t=d")
            } else if (href.includes("tags")) {
                element.href = appendUrlParam(href, "c10=1")
            }
        });

        document.querySelectorAll("div.tabs.is-boxed a").forEach((element, index) => {
            let href = element.href;
            element.href = href.replace('&f=download', '');
        });
    });



    execute(datappsDomain, function (location) {
        console.info("6.去掉get.datapps.org网页点击链接后弹出广告窗口.");
        document.querySelectorAll('a[onclick="setpos();"]').forEach((element, index) => {
            element.removeAttribute("onclick");
        });
    });

    execute(file77Domain, function (location) {
        console.info("7.去掉77file网页点击链接后弹出广告窗口.");
        document.querySelectorAll('input[value="验证下载"]').forEach((element, index) => {
            element.setAttribute("onclick", "check_code();");
        });
    });



    execute("torrentkitty", (location) => {
        console.info("2.破坏torrentkitty的脚本变量引用. 原先l8l1X变量是引用window,然后给加定时器,不停地添加页面的mousedown事件,导致鼠标点击任何地方都会跳转到广告页面.");
        window.l8l1X = 1;
    });

    // skrbt
    execute(skrbtDomain, (location) => {
        const html = '<span>&nbsp;</span><span class="input-group-btn"> <button class="btn btn-danger search-btn" type="button"> <span class="glyphicon glyphicon-search"> 粘贴并搜索</span></button> </span>';
        jq('.input-group-btn').last().after(html);
        const submitButton = jq('button').first();
        const searchInput = jq('input[name="keyword"]')
        jq('button').last().click(() => {
            let clipPromise = navigator.clipboard.readText();
            clipPromise.then((clipText) => {
                if (clipText != null && jq.trim(clipText) != '') {
                    searchInput.val(clipText);
                    submitButton.click();
                }
            });
        });

    });


    //////////////////////////////////////////////////////////////////////////////////////////////
    /////////////////// 公共方法
    /////////////////////////////////////////////////////////////////////////////////////////////
    function execute(regExpString, callback) {
        var href = window.location.href;
        var pattern = new RegExp(regExpString);
        if (pattern.test(href)) {
            callback(window.location);
        } else {
            console.info("输入的参数 %s 与 %s 不匹配", regExpString, href);
        }
    }
    function appendHrefJavLib(chePai, toAppendElement) {
        var openHref = document.createElement('a');
        openHref.href = javLibUrl + "/cn/vl_searchbyid.php?keyword=" + chePai;
        openHref.target = "_blank";
        openHref.innerText = "JavLib中查询";
        toAppendElement.appendChild(openHref);
    }
    function appendCopyButton(chePai, toAppendElement) {
        var copyButton = document.createElement('button');
        copyButton.innerHTML = "复 制";
        copyButton.setAttribute('id', 'copyButton');
        toAppendElement.appendChild(copyButton);
        document.addEventListener('click', (e) => {
            if (e.srcElement.getAttribute('id') === 'copyButton') {
                //console.log(e);
                copyToClipboard(chePai);
            }

        });
        //copyButton.onclick=function(){
        //    copyToClipboard(chePai);
        //};
    }

    function getQueryVariable(anchor, variable) {
        var query = anchor.search.substring(1);
        var vars = query.split("&");
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            if (pair[0] == variable) { return pair[1]; }
        }
        return false;
    }
    function appendUrlParam(url, param) {
        if (url.includes("?")) {
            return url + "&" + param;
        }
        return url + "?" + param;
    }


    function copyToClipboard(text) {
        try {
            navigator.clipboard.writeText(text).then(() => {
                console.log('复制成功')
            });
        } catch {
            var textArea = document.createElement("textarea");
            textArea.style.position = 'fixed';
            textArea.style.top = '0';
            textArea.style.left = '0';
            textArea.style.width = '2em';
            textArea.style.height = '2em';
            textArea.style.padding = '0';
            textArea.style.border = 'none';
            textArea.style.outline = 'none';
            textArea.style.boxShadow = 'none';
            textArea.style.background = 'transparent';
            textArea.value = text;
            document.body.appendChild(textArea);
            textArea.select();

            try {
                var successful = document.execCommand('copy');
                var msg = successful ? '成功复制到剪贴板' : '该浏览器不支持点击复制到剪贴板';
                //alert(msg);
            } catch (err) {
                alert('该浏览器不支持点击复制到剪贴板');
            }

            document.body.removeChild(textArea);
        }
    }
})();