// ==UserScript== // @name 豆瓣电影磁力链 // @namespace http://tampermonkey.net/ // @version 1.18.0527.23 // @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 // @downloadURL none // ==/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.trim(), "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; 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); //console.log(result); if(!result.querySelectorAll("table.table tbody tr td.x-item")){ let errorInfo = document.createElement("p"); errorInfo.setAttribute("style","padding:12px; text-align:center; color:#37a; font-size:14px; font-weight:bold;"); errorInfo.innerText ="磁力链资源服务器异常,目前无法获取有效资源,请稍后刷新页面重试"; info.parentNode.insertBefore(errorInfo, info); } else{ 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); }} }); })();