您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
这个脚本已经失效了,不要再安装,现在找不到稳定的BT源。而且在线播放也更加方便。
// ==UserScript== // @name DouBan // @namespace http://tampermonkey.net/ // @version 4.20.191007.1 // @description 这个脚本已经失效了,不要再安装,现在找不到稳定的BT源。而且在线播放也更加方便。 // @author laohoo // @match https://movie.douban.com/subject/* // @connect www.zhongzilou.com // @connect bt.ituoniao.com.cn // @run-at document-idle // @grant GM.xmlHttpRequest // ==/UserScript== /************************** 一些说明 ***************************** * 头部元数据 说明: * // ==UserScript== 脚本的头部开始 * // @name 脚本名称,可省略 * // @namespace 名字空间,这个一般写自己网站的域名,也可以是其他任意内容 * // @version 脚本的版本号,上传到脚本网站后,通过比较版本号来升级脚本 * // @description 脚本描述,一般简要地描述该脚本的功能 * // @author 作者 * // @match 脚本的适用网址,可以使用通配符,每个网址占一行 * // @include 与 // @match 功能等价的另一种写法 * // @exclude 脚本的排除网址,该网络不执行脚本,可以使用通配符,每个网址占一行 * // @connect 使用 GM.xmlHttpRequest 进行数据传输的 目标网站,缺少时第一次调用该功能会有是否允许连接的选项,每个网站写一行 * // @run-at 在什么时候开始执行脚本,"document_idle"表示在"document_end"与触发window.onload事件之间的某个时间 * // @grant 用于声明在脚本中使用到的 GreaseMonkey API,例如:GM.xmlHttpRequest * // ==/UserScript== 脚本的头部结束 * ************************** 分隔线 ***************************** * 脚本大概思路介绍 : * 1、从豆瓣电影中获取 电影的中文名字 * 2、从磁力链搜索网络获取 该电影的搜索结果页 * 3、提取搜索结果中的相关信息,如电影标题、文件大小、磁力链等 * 4、在电影海报下方插入表格,显示电影的相关信息 ************************** 分隔线 ***************************** * 自动执行函数(立即调用函数):用匿名函数作为一个“容器”, * “容器”内部可以访问外部的变量,而外部环境不能访问“容器”内部的变量, * 内部定义的变量不会和外部的变量发生冲突,典型写法如下: * (function() { * * // 此处添加代码 * * })(); * ************************** 说明结束 *****************************/ (function() { // JavaScript 严格模式 'use strict'; // 获取电影的中文名字 // 获取电影的标题节点,document.querySelector() 选择器,只返回第一个匹配的节点 let title = document.querySelector("#content h1 span"); if(title){ // 用空格进行分割为数组,取下标[0]的部分(电影中文名 ) let key = title.innerText.split(" ")[0]; console.log("电影名称:", key); // 最后要将电影的磁力结果添加到网页中,以下为该位置的选择器 var info = document.querySelector("#interest_sect_level"); // 自定义 parsetext 函数,用于获取的网页转换为 HTML文档以便后继处理 function parsetext(text) { var doc = null; try { // 创建一个 HTML 文档对象 doc = document.implementation.createHTMLDocument(""); // 将要专业的内容添加为文档对象的HTML doc.documentElement.innerHTML = text; return doc; } catch (e) { alert("parse error"); } } let magurl = `http://bt.ituoniao.com.cn/api/search?source=种子搜&keyword=${key}&page=1&sort=time`; // GM.xmlHttpRequest 为跨网页传输内容时使用 GreaseMonkey 提供的API,功能类似于JQuery的AJAX,GM为 GreaseMonkey 的缩写 // 要在头部添加 // @grant GM_xmlhttpRequest 的说明 GM.xmlHttpRequest({ // 传送数据的 HTTP 方法 method: "GET", // 传送数据的目标网址,此处由 磁力搜索网站与 电影名称 组成 // url: "https://www.zhongzilou.com/list/"+key+"/1", url: magurl, // onload 用于载入结果,response 为自己定义的变量名,其内容为接收到的数据 onload: function(response){ // console.log("磁力查找结果:",response.responseText); var data=[]; let result =JSON.parse(response.responseText); console.log("磁力查找结果:",result); console.log(result.message); console.log(result.data.results); result.data.results.forEach(function(item){ console.log(item); data.push({ "title":item.name, "url":item.detailUrl, "magnet": item.magnet, // hot:电影热度数据 "hot": item.hot, // description:其他信息 "description":item.formatSize }); }); // 调用自定义的函数处理网页,以便后继操作,response.responseText 是从目标网址接收到的网页 // let ms = parsetext(response.responseText.message); // 使用 document.querySelectorAll() 选择器获取每个电影的节点,返回所有匹配的节点,结果为数组,这个方法与 JQuery 的 $() 相同 // let megs = ms.querySelectorAll("div.panel-body.table-responsive.table-condensed table"); // console.log(megs); // // 定义数组用于保存电影信息 // // 用于保存过滤后匹配的电影数量,大于0 为有可用信息 let msCount = 0; // // 遍历所有的电影信息节点 // megs.forEach(function(item,index){ // console.log("电影信息",index); // data.push({ // // title:电影标题;innerText 表示节点的文本内容 // "title": item.querySelector("tbody tr td div.text-left h4 a").innerText, // // url:搜索结果的详细页连接;href 表示 节点的 超链接 属性 // "url": item.querySelector("tbody tr td div.text-left h4 a").href, // // magnet:电影磁力链 // "magnet": item.querySelector("tbody tr td.ls-magnet a").href, // // hot:电影热度数据 // "hot": item.querySelector(" tbody tr td:nth-child(3) strong").innerText, // // description:其他信息 // "description": item.querySelector("tbody tr:nth-child(2) td:nth-child(2) strong").innerText, // }); // }); console.log("从搜索网站提取的电影:",data); /************************************* 添加表格到网中的思路 ********************* * 创建一个表格 * 给表格添加一个表头 thead * 给表格添加一个主体 tbody * * 创建一个表格行,创建若干个单元格,并添加表格行中 * * 将添加好单元格及内容的行添加到 thead 或 tbody 中 * * 将 thead 和 tbody 添加到表格中 * * 将表格添加网页中 ********************************************************************************/ // 创建显示信息的表格 var table = document.createElement("table"); // 给表格添加一个 thead var thead = table.createTHead(); // 给表格添加一个 tbody var tbody = table.createTBody(); // 创建一个表格行 var tr = document.createElement("tr"); // 创建一个表头行单元格 th1 var th1=document.createElement("th"); // 使用 setAttribute() 方法给单元格添加 style 属性(样式),只在表头行指定前三个单元格宽度,最后一个单元格没有width(宽度)属性 th1.setAttribute("style","border:1px dashed #dddddd; text-align:center; width:50px; color:#007722; font-size:14px; padding:5px;"); // 给单元格添加内部 HTML 内容 th1.innerHTML = "磁力链"; // 给表头行添加一个 单元格 th1 tr.appendChild(th1); // 创建一个表头行单元格 th2 var th2=document.createElement("th"); // 使用 setAttribute() 方法给单元格添加 style 属性(样式) th2.setAttribute("style","border:1px dashed #dddddd; text-align:center; width:40px; color:#007722; font-size:14px; padding:5px;"); // 给单元格添加内部 HTML 内容 th2.innerHTML = "热度"; // 单元格对齐方式 th2.align="center"; // 给表头行添加一个 单元格 th2 tr.appendChild(th2); // 创建一个表头行单元格 th3 var th3=document.createElement("th"); // 使用 setAttribute() 方法给单元格添加 style 属性(样式) th3.setAttribute("style","border:1px dashed #dddddd; text-align:center; width:80px; color:#007722; font-size:14px; padding:5px;"); // 给单元格添加内部 HTML 内容 th3.innerHTML = "文件大小"; th3.align="center"; // 给表头行添加一个 单元格 th3 tr.appendChild(th3); // 创建一个表头行单元格 th4 var th4=document.createElement("th"); // 使用 setAttribute() 方法给单元格添加 style 属性(样式),最后一个单元格不指定宽度,占用剩余宽度 th4.setAttribute("style","border:1px dashed #dddddd; text-align:center; color:#007722; font-size:14px; padding:5px;"); // 给单元格添加内部 HTML 内容 th4.innerHTML = "标题"; th4.align="center"; // 给表头行添加一个 单元格 th4 tr.appendChild(th4); // 表头行的对齐方式 tr.align="center"; // 将上面的表格行添加到表头 thead.appendChild(tr); // 如果电影信息不为0 if(data.length){ // 遍历所在电影信息,每行生成一个表格行 data.forEach(function(item,index){ // 对电影标题进行比较,只显示包含有完整电影名称的结果,indexOf(key)用于查找是包含小括号中的关键字。没有的时候是 -1 if(item.title.indexOf(key) != -1){ msCount ++; var tr = document.createElement("tr"); var td1 = document.createElement("td"); // 使用 setAttribute() 方法给单元格添加 style 属性(样式),具体内容单元格不指定宽度,其宽度与表头行相同(下面所有单元格相同) td1.setAttribute("style","border:1px dashed #dddddd; text-align:center; color:#007722; font-size:14px; padding:5px;"); // 创建一个超链接元素 var a = document.createElement("a"); a.href = item.magnet; a.innerText = "磁力链"; td1.appendChild(a); tr.appendChild(td1); var td2 = document.createElement("td"); td2.setAttribute("style","border:1px dashed #dddddd; text-align:center; color:#007722; font-size:14px; padding:5px;"); td2.innerHTML = item.hot; tr.appendChild(td2); var td3 = document.createElement("td"); td3.setAttribute("style","border:1px dashed #dddddd; text-align:center; color:#007722; font-size:14px; padding:5px;"); td3.innerHTML = item.description; tr.appendChild(td3); var td4 = document.createElement("td"); td4.setAttribute("style","border:1px dashed #dddddd; text-align:left; color:#007722; font-size:14px; padding:5px;"); //td4.innerHTML = item.title; var p = document.createElement("sapn"); p.innerText = item.title.slice(0,55); p.title = item.title; // p.href = item.url; console.log(item.url); td4.appendChild(p); console.log(item.title.length); tr.appendChild(td4); // 添加一行到表格的主体 tbody tbody.appendChild(tr); console.log(item); } }); // 当没有匹配的电影资源时,生成一个合并单元格显示 错误提示信息 if(msCount===0){ // 创建一个表格行 var trerror = document.createElement("tr"); // 创建一个单元格 var tderror = document.createElement("td"); // 设置单元格的 colspan 属性合并单元格k tderror.setAttribute("colspan","4"); // 设置单元格内 信息显示的样式属性 tderror.setAttribute("style","border:1px dashed #dddddd; text-align:left; text-align:center; color:#d9896a; font-size:14px; padding:5px;"); // 单元格内显示 的文字 tderror.innerText ="电影 "+key+" 找不到可用磁力资源!"; // 添加单元格到表格行 trerror.appendChild(tderror); // 添加表格行到表格主体 tbody tbody.appendChild(trerror); } // 将表头行添加到表格 table.appendChild(thead); // 将表格主体添加到表格 table.appendChild(tbody); // 设置表格线宽度 table.border="1"; // 设置表格的 style 属性 table.setAttribute("style","width: 100%; padding: 0; margin-bottom: 3px;"); // 将表格添加到 网页中。 info.parentNode.insertBefore(table,info); } } // end forEach }); // end GM.xmlHttpRequest }else{ console.info("载入信息错误!"); } })();