Greasy Fork is available in English.
在 https://movie.douban.com/ 中进入电影的详细页时,在电影海报下方自动添加与当前电影匹配的磁力链。
当前为
// ==UserScript==
// @name 豆瓣电影磁力链
// @namespace http://tampermonkey.net/
// @version 1.18.0526.19
// @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 = event => {
event.target.innerHTML = "成功";
GM_setClipboard(event.target.href);
setTimeout(() => {
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);
}
});
})();