// ==UserScript==
// @name 豆瓣电影磁力链
// @namespace http://tampermonkey.net/
// @version 3.18.0606.02
// @description 在 https://movie.douban.com/ 中进入电影的详细页时,在电影海报下方自动添加与当前电影匹配的磁力链。
// @author anntiza
// @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.setValue
// @grant GM_getValue
// @grant GM.getValue
// @require https://cdn.jsdelivr.net/npm/vue/dist/vue.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);
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"],
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:45px; color:#007722; font-size:14px; padding:8px;">操作</th>' +
'<th style="border:1px dashed #dddddd; text-align:center; width:45px; color:#007722; font-size:14px; padding:8px;">热度</th>' +
'<th style="border:1px dashed #dddddd; text-align:center; width:70px; color:#007722; font-size:14px; padding:8px;">大小</th>' +
'<th style="border:1px dashed #dddddd; text-align:center; color:#007722; font-size:14px; padding:8px;">' +
'磁力搜索网站:<select><option v-for="item in searchSite" v-bind:value="item" v-on:click="selectMagnetSite(item)"> {{item}} </option></select></th>' +
'</tr>' +
'</thead>' +
'<tbody>' +
'<tr v-if="error"><td colspan="4" style="color:darkred;font-size:16px;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:8px;"><span>复制</span></td>' +
'<td style="border:1px dashed #dddddd; padding:8px;">{{item.hot}}</td>' +
'<td style="border:1px dashed #dddddd; padding:8px;">{{item.size}}</td>' +
'<td style="border:1px dashed #dddddd; padding:8px;">{{item.title}}</td>' +
'</tr></tbody></table>',
mounted:function(){
this.getMovies(key);
console.log("mounted >>> ",this.movies);
},
methods:{
selectMagnetSite:function(item){
this.currentSelect=item;
console.log(item);
this.getMovies(key);
},
getMovies:function(keyword){
console.log("get movies start!");
let currentMagnet=this.magnetSite[this.currentSelect];
console.log("currentMagnet 》》 》 ",currentMagnet);
var self = this;
self.movies =[];
GM.xmlHttpRequest({
method: "GET",
url: currentMagnet.search(key),// `http://xiguacili.net/xigua/${keyword}.html`, //http://xiguacili.net/xigua/${key}.html
onload: function(response) {
// console.log(response.responseText);
let magHtml = parseText(response.responseText);
let mags = magHtml.querySelectorAll(currentMagnet.lists); //magHtml.querySelectorAll("div.row:nth-child(7) div.ffbox");
console.log("数量:",mags.length);
console.log(mags);
if(mags){
self.error =null;
mags.forEach(function (item, index) {
let title = currentMagnet.title(item); //item.querySelector("div.title h3>a").innerText;
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),
// "title": title,
// "url": item.querySelector("div.title h3 a").href,
// "magnet": item.querySelector("div.categorybar span:nth-child(6)>a").href,
// "hot": item.querySelector("div.categorybar span:nth-child(5) > b").innerText,
// "size": item.querySelector("div.categorybar span:nth-child(3) > b").innerText
});
}
});
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...
})();