Greasy Fork

来自缓存

豆瓣电影磁力链

在 https://movie.douban.com/ 中进入电影的详细页时,在电影海报下方自动添加与当前电影匹配的磁力链。

目前为 2018-05-26 提交的版本。查看 最新版本

// ==UserScript==
// @name         豆瓣电影磁力链
// @namespace    http://tampermonkey.net/
// @version      1.18.0526.20
// @description  在 https://movie.douban.com/ 中进入电影的详细页时,在电影海报下方自动添加与当前电影匹配的磁力链。
// @author       anntiza
// @match        https://movie.douban.com/subject/*
// @connect      www.wcs123.com
// @run-at       document-idle
// @grant        GM.xmlHttpRequest
// @grant        GM_setClipboard
// ==/UserScript==

(function () {
    'use strict';

    // 获取电影的标题
    let title = document.querySelector("#content h1 span");
    // 取中文名
    let key = title.innerText.split(" ")[0];

    // 在此节点前插入显示磁力结果的表格
    let info = document.querySelector("#interest_sect_level");
    let data = [];

    // 转换搜索结果
    function parsetext(text) {
        let doc = null;
        try {
            doc = document.implementation.createHTMLDocument("");
            doc.documentElement.innerHTML = text;
            return doc;
        }
        catch (e) {
            //  alert("parse error");
        }
    }

    // 将搜索结果保存到数组中
    function make_data(mags) {
        let d = [];
        mags.forEach(function (item, index) {
            d.push({
                "title": item.querySelector("h3").innerText,
                "url": "http://www.wcs123.com" + item.querySelector("h3>a").href,
                "magnet": item.querySelector("span>a").href,
                "hot": item.querySelector("span:nth-child(5)>b").innerText,
                "description": item.querySelector("span:nth-child(6)>b").innerText
            });
        });
        return d;
    }


    // 创建显示结果的表格
    function create_table(data) {
        let table = document.createElement("table");
        let thead = table.createTHead();
        let tbody = table.createTBody();

        // 使用 douban 原有的表格样式
        table.setAttribute("class", "olt");

        let tr = document.createElement("tr");
        let th1 = document.createElement("th");
        let magnetTitle = document.createElement("strong");
        magnetTitle.innerText = "操作";

        th1.appendChild(magnetTitle);
        th1.setAttribute("style", "border:1px dashed #dddddd; text-align:center; width:50px; padding:5px; color:#007722; font-size:16px; padding:8px;");
        tr.appendChild(th1);
        var th2 = document.createElement("th");
        th2.innerHTML = "热度";
        th2.setAttribute("style", "border:1px dashed #dddddd; text-align:center; width:40px; padding:5px; color:#007722; font-size:16px; padding:8px;");
        tr.appendChild(th2);
        var th3 = document.createElement("th");
        th3.innerHTML = "文件大小";
        th3.setAttribute("style", "border:1px dashed #dddddd; text-align:center; width:70px; padding:5px; color:#007722; font-size:16px; padding:8px;");
        tr.appendChild(th3);
        var th4 = document.createElement("th");
        th4.innerHTML = "文  件  标  题";
        th4.setAttribute("style", "border:1px dashed #dddddd; text-align:center; padding:5px; color:#007722; font-size:16px; padding:8px;");
        tr.appendChild(th4);

        // 添加表头行
        thead.appendChild(tr);
        table.appendChild(thead);

        if (data.length) {
            data.forEach(function (item, index) {
                if (item.title.indexOf(key) != -1) {
                    let tr = document.createElement("tr");
                    let td1 = document.createElement("td");
                    let magnet_img = document.createElement("img");
                    magnet_img.src = "http://www.wcs123.com/static/img/magnet.png";
                    magnet_img.alt = "磁力链接";
                    let copy_magnet = document.createElement("a");
                    td1.appendChild(magnet_img);
                    copy_magnet.href = item.magnet;
                    copy_magnet.innerText = "复制";
                    copy_magnet.title = "单击此处复制磁力链接到剪贴板";
                    copy_magnet.onclick = function(event) {
                        event.target.innerHTML = "成功";
                        GM_setClipboard(event.target.href);
                        setTimeout(function(){
                            event.target.innerHTML = "复制";
                        }, 2000);
                        event.preventDefault(); //阻止跳转
                    };
                    td1.appendChild(copy_magnet);
                    td1.setAttribute("class", "pl");
                    td1.setAttribute("style", "border:1px dashed #dddddd; text-align:center; width:50px; padding:8px;");
                    tr.appendChild(td1);
                    let td2 = document.createElement("td");
                    td2.innerHTML = item.hot;
                    td2.setAttribute("class", "pl");
                    td2.setAttribute("style", "border:1px dashed #dddddd; width:40px; padding:8px;");
                    tr.appendChild(td2);
                    let td3 = document.createElement("td");
                    let open_url = document.createElement("a");
                    open_url.href = item.url;
                    open_url.innerText = item.description;
                    open_url.target = "_blank";
                    open_url.title = "打开磁力链接目标网页";
                    td3.appendChild(open_url);
                    //td3.innerHTML = item.description;
                    td3.setAttribute("class", "pl");
                    td3.setAttribute("style", "border:1px dashed #dddddd; width:70px; padding:8px;");
                    tr.appendChild(td3);
                    let td4 = document.createElement("td");
                    let mov_title = document.createElement("a");
                    mov_title.innerText = item.title
                        .replace(/<(style|script|iframe)[^>]*?>[\s\S]+?<\/\1\s*>/gi, '')
                        .replace(/<[^>]+?>/g, '')
                        .replace(/\s+/g, ' ')
                        .replace(/ /g, ' ')
                        .replace(/>/g, ' ');
                    mov_title.title = item.title;
                    mov_title.href = item.magnet;
                    mov_title.target = "_blank";
                    td4.appendChild(mov_title);
                    td4.setAttribute("class", "pl");
                    td4.setAttribute("style", "border:1px dashed #dddddd; padding:8px;");
                    tr.appendChild(td4);
                    tbody.appendChild(tr);
                }
            });
            table.appendChild(tbody);
        }
        else {
            let tr_error = document.createElement("tr");
            let td_error = document.createElement("td");
            td_error.setAttribute("colspan", "4");
            td_error.setAttribute("style", "border:1px dashed #dddddd;padding:12px; text-align:center; color:#dc3545; font-size:16px; font-weight:bold;");
            td_error.innerText = "当前电影无可用磁力资源!";
            tr_error.appendChild(td_error);
            tbody.appendChild(tr_error);
            table.appendChild(tbody);
        }
        return table;
    }

    GM.xmlHttpRequest({
        method: "GET",
        url: `http://www.wcs123.com/s/${key}-hot-desc-1`,
        // headers: {
        //     "User-Agent": "Mozilla/5.0",    // If not specified, navigator.userAgent will be used.
        //     "Accept": "text/xml"            // If not specified, browser defaults will be used.
        // },
        onload: function (response) {
            // var responseXML = null;
            // Inject responseXML into existing Object (only appropriate for XML content).
            // if (!response.responseXML) {
            //     responseXML = new DOMParser()
            //         .parseFromString(response.responseText, "text/xml");
            // }
            let result = parsetext(response.responseText);
            let mags = result.querySelectorAll("table.table tbody tr td.x-item");

            data = make_data(mags);
            // console.log(data);
            info.parentNode.insertBefore(create_table(data), info);
        }
    });

})();