您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
豆瓣电影(https://movie.douban.com/)中进入电影的详细页时,在电影海报下方自动添加与当前电影匹配的磁力链。
当前为
// ==UserScript== // @name 豆瓣电影磁力链 // @namespace http://tampermonkey.net/ // @version 3.18.0608.05 // @description 豆瓣电影(https://movie.douban.com/)中进入电影的详细页时,在电影海报下方自动添加与当前电影匹配的磁力链。 // @author Alfonso // @match https://movie.douban.com/subject/* // @connect www.wcs123.com // @connect www.btanf.com // @connect xiguacili.net // @run-at document-idle // @grant GM.xmlHttpRequest // @grant GM.setClipboard // @grant GM.setValue // @grant GM.getValue // @require https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js // ==/UserScript== (function() { 'use strict'; let insertNode = document.querySelector("#interest_sect_level"); let mainNode = document.createElement("div"); let key = document.querySelector("div#content h1 span").innerText.split(" ")[0]; mainNode.setAttribute("id","mainmovie"); mainNode.innerHTML="<movies></movies>"; insertNode.parentNode.insertBefore(mainNode,insertNode); console.log(insertNode); // 将搜索结果转为HTML function parseText(text) { let doc = null; try { doc = document.implementation.createHTMLDocument(""); doc.documentElement.innerHTML = text; return doc; } catch (e) { // alert("parse error"); } } Vue.component('movies',{ data: function () { return { movies: [], error:null, currentSelect:"xiguacili", searchSite:["xiguacili","btanf","wcs123"], couponSelected: '', magnetSite: { xiguacili: { search: (key) => { return `http://xiguacili.net/xigua/${key}.html`; }, lists: "div.row:nth-child(7) div.ffbox", title: (item) => { return item.querySelector("div.title h3>a").innerText; }, url: (item) => { return item.querySelector("div.title h3>a").href; }, magnet: (item) => { return item.querySelector("span>a").href; }, hot: (item) => { return item.querySelector("div.categorybar span:nth-child(5) > b").innerText; }, size: (item) => { return item.querySelector("div.categorybar span:nth-child(3) > b").innerText; } }, wcs123: { search: (key) => { return `http://www.wcs123.com/s/${key}-hot-desc-1`; }, lists: "td.x-item", title: (item) => { return item.querySelector("h3>a").innerText; }, url: (item) => { return "http://www.wcs123.com" + item.querySelector("h3>a").href; }, magnet: (item) => { return item.querySelector("span>a").href; }, hot: (item) => { return item.querySelector("span:nth-child(5)>b").innerText; }, size: (item) => { return item.querySelector("span:nth-child(6)>b").innerText; } }, btanf: { search: (key) => { return `http://www.btanf.com/search/${key}-first-asc-1`; }, lists: "div.search-item", title: (item) => { return item.querySelector("div.item-title>a").innerText; }, url: (item) => { return "http://www.btanf.com" + item.querySelector("div.item-title>a").href; }, magnet: (item) => { return item.querySelector("div:nth-child(3) > a:nth-child(5)").href; }, hot: (item) => { return item.querySelector(" div:nth-child(3) > span:nth-child(2) > b").innerText; }, size: (item) => { return item.querySelector("div:nth-child(3) > span:nth-child(4) > b").innerText; } } }, } }, template: '<table style="width: 100%; padding: 0; margin-bottom: 3px;">' + '<thead>' + '<tr>' + '<th style="border:1px dashed #dddddd; text-align:center; width:40px; color:#007722; font-size:14px; padding:5px;">操作</th>' + '<th style="border:1px dashed #dddddd; text-align:center; width:45px; color:#007722; font-size:14px; padding:5px;">热度</th>' + '<th style="border:1px dashed #dddddd; text-align:center; width:65px; color:#007722; font-size:14px; padding:5px;">大小</th>' + '<th style="border:1px dashed #dddddd; text-align:center; color:#007722; font-size:14px; padding:5px;">' + '磁力搜索网站:<select v-model="couponSelected" @change="selectMagnetSite"><option v-for="item in searchSite" v-bind:value="item"> {{item}} </option></select></th>' + '</tr>' + '</thead>' + '<tbody>' + '<tr v-if="!movies.length && !error"><td colspan="4" style="font-size:14px;text-align:center;padding:8px;"><span>Loading......</span></td></tr>' + '<tr v-if="error"><td colspan="4" style="color:darkred;font-size:14px;text-align:center;padding:8px;"><span>{{error}}</span></td></tr>' + '<tr v-for="item in movies" v-else>' + '<td style="border:1px dashed #dddddd; text-align:center; padding:5px;"><a :href="item.magnet" @click.prevent="copyMagnet" title="单击此处复制磁力链到剪贴板">复制</a></td>' + '<td style="border:1px dashed #dddddd; padding:5px;">{{item.hot}}</td>' + '<td style="border:1px dashed #dddddd; padding:5px;"><a :href="item.url" target="_blank" title="打开搜索结果页">{{item.size}}</a></td>' + '<td style="border:1px dashed #dddddd; padding:5px;"><a :href="item.magnet" target="_blank">{{item.title}}</a></td>' + '</tr></tbody></table>', mounted:function(){ GM.getValue("currentMagnetSite", "xiguacili").then((response)=>{ this.currentSelect=response; this.getMovies(key); }); }, created:function(){ // 读取当前磁力网站名 GM.getValue("currentMagnetSite", "xiguacili").then((response)=>{ this.currentSelect=response; // 设置下拉框的默认项 this.couponSelected =response; }) }, methods:{ selectMagnetSite:function(){ // console.log(this.couponSelected); this.currentSelect=this.couponSelected; GM.setValue("currentMagnetSite", this.couponSelected); this.error =null; this.movies =[]; this.getMovies(key); }, copyMagnet:function(event){ console.log("跳转 >>> "); event.preventDefault(); //阻止跳转 event.target.innerHTML = '<span style="color:#3c763d">成功</span>'; GM.setClipboard(event.target.href); setTimeout(()=>{ event.target.innerHTML = "复制"; }, 3000); }, getMovies:function(keyword){ // console.log("get movies start!"); let currentMagnet=this.magnetSite[this.currentSelect]; console.log("currentMagnet >>> ",currentMagnet); var self = this; GM.xmlHttpRequest({ method: "GET", url: currentMagnet.search(key), onload: function(response) { // console.log(response.responseText); let magHtml = parseText(response.responseText); let mags = magHtml.querySelectorAll(currentMagnet.lists); console.log("数量:",mags.length); // console.log(mags); if(mags){ self.error =null; mags.forEach(function (item, index) { let title = currentMagnet.title(item); console.log("Title -> "+title); if(title.indexOf(key) != -1){ self.movies.push({ "title": title, "url": currentMagnet.url(item), "magnet": currentMagnet.magnet(item), "hot": currentMagnet.hot(item), "size": currentMagnet.size(item), }); } }); // console.log("self.movies >>> .",self.movies); } if(!self.movies.length){ self.error ="当前电影无有效磁力资源,换个磁力搜索网站试试!"; } }, onerror:function(ex){ console.log(`獲取磁力鏈資源異常:${ex}`); self.error ="提供磁力资源的网站异常,请稍后再重试!"; } }); } } }); var app = new Vue({ el: '#mainmovie', }); // Your code here... })();