您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
自动获取磁链接并自动离线下载
当前为
// ==UserScript== // @name 挊 // @namespace 撸 // @description 自动获取磁链接并自动离线下载 // @include http://www.javdog.com/* // @include http://www.avmask.com/* // @include http://www.javlibrary.com/* // @include http://www.libredmm.com/products/* // @include http://www.dmm.co.jp/digital/videoa/* // @include http://www.minnano-av.com/av* // @include http://www.oisinbosoft.com/dera/* // @include http://www.javbus.co/* // @include http://avdb.la/movie/* // @include http://www.141jav.com/view/* // @include http://av4you.net/work/*.htm // @include http://pan.baidu.com/disk/home // @include http://115.com/?tab=offline&mode=wangpan // @include http://cloud.letv.com/webdisk/home/index // @include https://www.furk.net/users/files/add // @include *.yunpan.360.cn/my/ // @include http://www.btcherry.com/search?keyword=* // @include https://btdigg.org/search* // @include http://www.shousibaocai.com/search/* // @include http://www.shousibaocai.com/list/* // @include http://www.btava.com/search/* // @version 1.15 // @run-at document-end // @grant GM_xmlhttpRequest // @grant GM_setClipboard // @grant GM_setValue // @grant GM_getValue // @grant GM_addStyle // ==/UserScript== var apply_search_site = true; //将脚本应用到搜索页面 var $ = function (selector) { var result = document.querySelectorAll(selector); if (selector[0] == '#') { return result[0]; } else { return result; } }; var $after = function (target, newnode) { target.parentElement.insertBefore(newnode, target.nextElementSibling); }; var $eafter = function (selector, target, func) { var result = document.querySelectorAll(selector); //isdeep 是否克隆子元素 var tmp = null; for (var i = 0; i < result.length; i++) { tmp = target.cloneNode(true); if (result[i].nextElementSibling === null) { result[i].parentElement.appendChild(tmp); } else { result[i].parentElement.insertBefore(tmp, result[i].nextElementSibling); } tmp.setAttribute('data', func(result[i])); } }; var $eappend = function (selector, target, func) { var result = document.querySelectorAll(selector); for (var i = 0; i < result.length; i++) { result[i].appendChild(target.cloneNode(true)); func(result[i]); } }; var xhr = function (url, cb) { GM_xmlhttpRequest({ method: 'GET', url: url, onload: function (result) { console.log('番号搜索', url); cb(result.responseText); }, onerror: function (e) { console.log(e); } }); }; var exist_magnet = function () { var magnet = GM_getValue('magnet'); if (magnet) { GM_setValue('magnet', ''); return magnet; } else { return ''; } }; var insert_js = function (value, func) { var js = document.createElement('script'); js.innerHTML = '(' + func.toString() + ')(\'' + value + '\');'; document.body.appendChild(js); }; var add_style = function (css) { if (css) { GM_addStyle(css); } else { GM_addStyle([ '#magnet-tab table{margin:10px auto;border:1px solid #cad9ea;color:#666;font-size:12px;text-align:center;}', '.magnet-th,.magnet-td{height:30px; border:1px solid #cad9ea;padding:0 1em 0;}', '.magnet-copy{color:#08c;}', '.magnet-download{color: #d22222;margin-right: 4px;border: solid 1px #000;}' ].join('')); } }; var shorten_str = function (str) { return str.length > 30 ? str.slice(0, 30) + '...' : str; }; //------------ var offline_data = { baidu: { url: 'http://pan.baidu.com/disk/home', name: '百度云', }, 115: { name: '115离线', url: 'http://115.com/?tab=offline&mode=wangpan' }, letv: { name: '乐视云', url: 'http://cloud.letv.com/webdisk/home/index' }, 360: { name: '360云', url: 'http://yunpan.360.cn/my/' }, furk: { name: 'Furk', url: 'https://www.furk.net/users/files/add' }, }; var init_offline = function (parent, child) { for (var key in offline_data) { var tmp = child.cloneNode(); tmp.href = offline_data[key].url; tmp.textContent = offline_data[key].name; parent.appendChild(tmp); } return parent; }; var init_search_offline = function (callback) { var link = document.createElement('a'); link.className = 'magnet-download'; link.target = '_blank'; var offline = init_offline(document.createElement('div'), link); offline.className = 'offline-div'; callback(offline); add_style(); reg_event(); }; //------------ var create_table_th = function () { var tr = document.createElement('tr'); var th = document.createElement('th'); th.className = 'magnet-th'; tr.appendChild((function () { var t = th.cloneNode(); var a = document.createElement('a'); a.id = 'switch_engine'; a.href = 'javascript:void(0);'; a.textContent = '标题'; t.appendChild(a); return t; }) ()); var strings = [ '大小', '操作', '离线下载' ]; for (var i = 0; i < strings.length; i++) { var t = th.cloneNode(); t.textContent = strings[i]; tr.appendChild(t); } return tr; }; var create_table_td = function (data) { var tr = document.createElement('tr'); var td = document.createElement('td'); td.className = 'magnet-td'; tr.appendChild((function () { var title = td.cloneNode(); title.setAttribute('title', data.title); title.textContent = shorten_str(data.title); return title; }) ()); tr.appendChild((function () { var size = td.cloneNode(); size.textContent = data.size; return size; }) ()); tr.appendChild((function () { var copy = td.cloneNode(); var link = document.createElement('a'); link.className = 'magnet-copy'; link.textContent = '复制'; link.href = 'magnet:?xt=urn:btih:' + data.hash; copy.appendChild(link); return copy; }) ()); tr.appendChild((function () { var link = document.createElement('a'); link.className = 'magnet-download'; link.target = '_blank'; var offline = init_offline(td.cloneNode(), link); offline.setAttribute('data', 'magnet:?xt=urn:btih:' + data.hash); return offline; }) ()); return tr; }; var create_wrapper = function (data) { var table = document.createElement('table'); table.appendChild(create_table_th()); if (data) { for (var i = 0; i < data.length; i++) { table.appendChild(create_table_td(data[i])); } } else { var p = document.createElement('p'); p.textContent = '没有找到...'; table.appendChild(p); } var wrapper = document.createElement('div'); wrapper.id = 'magnet-tab'; wrapper.appendChild(table); return wrapper; }; //------------ var current_search_index = 1; var search_sites = [ { name:'btava', url:'http://www.btava.com/search/', s:function(kw,cb){ GM_xmlhttpRequest({ method: 'GET', url: this.url+kw, onload: function (result) { var doc = document.implementation.createHTMLDocument(''); doc.documentElement.innerHTML = result.responseText; var data = []; var t = doc.getElementsByClassName('data-list') [0]; if (t) { var elems = t.getElementsByTagName('a'); for (var i = 0; i < elems.length; i++) { data.push({ 'title': elems[i].title, 'hash': elems[i].href.replace(/.*hash\//, ''), 'size': elems[i].nextElementSibling.textContent }); } cb(data); } else { cb(null); } }, onerror: function (e) { console.log(e); } }); } }, { name:'diggbt', url:'http://diggbt.net/', s:function(kw,cb){ GM_xmlhttpRequest({ method: "POST", url: this.url, data: "s="+kw, headers: { "Content-Type": "application/x-www-form-urlencoded" }, onload: function(result) { var doc = document.implementation.createHTMLDocument(''); doc.documentElement.innerHTML = result.responseText; var data = []; var t = doc.getElementsByClassName('list-con') [0]; if (t) { var elems = t.getElementsByClassName('item-title'); for (var i = 0; i < elems.length; i++) { data.push({ 'title': elems[i].getElementsByTagName('a')[0].textContent, 'hash': elems[i].nextElementSibling.getElementsByTagName('a')[0].href, 'size': elems[i].nextElementSibling.getElementsByTagName('b')[1].textContent }); } cb(data); } else { cb(null); } }, onerror: function (e) { console.log(e); } }); } } ]; var gethash = function (index,vid, callback) { add_style(); search_sites[index].s(vid,function(data){ callback(create_wrapper(data)); reg_event(); }); }; var handle_event = function (event) { if (event.target.className == 'magnet-copy') { event.target.innerHTML = '成功'; GM_setClipboard(event.target.href); setTimeout(function () { event.target.innerHTML = '复制'; }, 1000); event.preventDefault(); //阻止跳转 } else if (event.target.className == 'magnet-download') { GM_setValue('magnet', event.target.parentElement.getAttribute('data')); } }; var reg_event = function () { var elem_copy = $('.magnet-copy'); var elem_dl = $('.magnet-download'); for (var i = 0; i < elem_copy.length; i++) { elem_copy[i].addEventListener('click', handle_event, false); } for (var j = 0; j < elem_dl.length; j++) { elem_dl[j].addEventListener('click', handle_event, false); } if($('#switch_engine')){ $('#switch_engine').addEventListener('click', function () { current_search_index = current_search_index == 0?1:0;//两个而已 try{ gethash(current_search_index,main[key].vid(), main[key].proc); } catch(e){} }, false); } }; var main = { //av信息查询 类 avsow: { regexp: /javdog.*movie.*/, vid: function () { return $('.header') [0].nextElementSibling.innerHTML; }, proc: function (wrapper) { var title = document.createElement('h4'); title.innerHTML = '磁链接'; $after($('#movie-share'), wrapper); $after($('#movie-share'), title); } }, avmask: { regexp: /avmask.*movie/, vid: function () { return $('.header') [0].nextElementSibling.innerHTML; }, proc: function (wrapper) { var title = document.createElement('h4'); title.innerHTML = '磁链接'; $after($('#movie-share'), wrapper); $after($('#movie-share'), title); } }, javlibrary: { regexp: /javlibrary.*\?v=.*/, vid: function () { return $('#video_id').getElementsByClassName('text') [0].innerHTML; }, proc: function (wrapper) { $after($('#video_favorite_edit'), wrapper); } }, libredmm: { regexp: /libredmm/, vid: function () { return location.href.match(/products\/(.*)/)[1]; }, proc: function (wrapper) { $after($('.container')[0],wrapper) } }, dmm: { regexp: /dmm\.co\.jp/, vid: function () { var result = location.href.replace(/.*cid=/, '').replace(/\/\??.*/, '').match(/[^h_0-9].*/); if (result[0]) { return result[0].replace('00', ''); } else { return ''; } }, proc: function (wrapper) { $after($('.lh4') [0], wrapper) } }, minnano: { regexp: /minnano-av/, vid: function () { var elems = $('.t11'); var r = ''; for (var i = 0; i < elems.length; i++) { if (elems[i].textContent == '品番') { r = elems[i].nextElementSibling.textContent; break; } } return r; }, proc: function (wrapper) { var tmp = (function () { var a = $('table'); for (var i = 0; i < a.length; i++) { if (a[i].bgColor == '#EEEEEE') { return a[i]; } } }) (); $after(tmp, wrapper); } }, oisinbosoft: { regexp: /oisinbosoft/, vid: function () { var r = location.pathname.replace(/.*\/+/, '').replace('.html', ''); if (r.indexOf('-') == r.lastIndexOf('-')) { return r; } else { return r.replace(/\w*-?/, ''); } }, proc: function (wrapper) { add_style('#magnet-tab table{clear:both;}'); $after($('#detail_info'), wrapper); } }, javbus: { regexp: /javbus/, vid: function () { var result = $('.movie-code'); if (result) { return result[0].textContent; } else { return ''; } }, proc: function (wrapper) { $after($('.movie') [0].parentElement, wrapper); } }, avdb: { regexp: /avdb\.la/, vid: function () { return $('.info') [0].firstElementChild.innerHTML.replace(/<.*>/, '').trim(); }, proc: function (wrapper) { wrapper.className = 'movie'; var tmp = $('#downs'); var title = document.createElement('h4'); title.innerHTML = '磁链接'; $after($('#downs').previousElementSibling, title); $after($('#downs').previousElementSibling, wrapper); } }, jav141: { regexp: /141jav/, vid: function () { return location.href.match(/view\/(.*)\//) [1]; }, proc: function (wrapper) { $after($('.dlbtn') [0].previousElementSibling, wrapper); }, }, av4you: { regexp: /av4you/, vid: function () { return $('.star-detail-name') [0].textContent.trim(); }, proc: function (wrapper) { $after($('.star-detail') [0], wrapper); } }, //网盘下载 类 baidu: { regexp: /pan\.baidu\.com/, proc: function (magnet) { $('.icon-btn-download').click(); setTimeout(function () { $('#_disk_id_24').click(); setTimeout(function () { $('#_disk_id_13').click(); $('#share-offline-link').val(magnet); }, 500); }, 500); } }, 115: { regexp: /115\.com/, proc: function (link) { var readyStareChange = setInterval(function () { if (document.readyState == 'complete') { clearInterval(readyStareChange); setTimeout(function () { Core['OFFL5Plug'].OpenLink(); setTimeout(function () { $('#js_offline_new_add').val(link); }, 0); }, 1000); } }, 200); } }, letv: { regexp: /cloud\.letv\.com/, proc: function (link) { setTimeout(function () { $('#offline-btn').click(); setTimeout(function () { $('#offline_clear_complete').prev().click(); setTimeout(function () { $('#offline-add-link').val(link); }, 500); }, 1000); }, 2000); } }, furk: { regexp: /www\.furk\.net/, proc: function (link) { setTimeout(function () { $('#url').val(link.replace('magnet:?xt=urn:btih:', '')); }, 1500); } }, 360: { regexp: /yunpan\.360\.cn\/my/, proc: function (link) { yunpan.cmdCenter.showOfflineDia(); setTimeout(function () { $('.offdl-btn-create').click(); setTimeout(function () { $('#offdlUrl').val(link) }, 500) }, 1000); } }, //磁链接搜索 类 btcherry: { regexp: /btcherry/, is_search: true, proc: function (div) { $eafter('.r div a', div, function (elem) { //elem 等于 document.querySelectorAll(.r div a)的成员 return elem.href; }); } }, btdigg: { regexp: /btdigg/, is_search: true, proc: function (div) { $eafter('.snippet', div, function (elem) { return elem.parentElement.getElementsByClassName('ttth') [0].firstElementChild.href; }); } }, shousibaocai: { regexp: /shousibaocai/, is_search: true, proc: function (div) { $eafter('.tail', div, function (elem) { return elem.getElementsByTagName('a') [0].href; }); } }, btava: { regexp: /btava/, is_search: true, proc: function (div) { $eafter('.data-list .date', div, function (elem) { return 'magnet:?xt=urn:btih:' + elem.parentElement.getElementsByTagName('a') [0].href.match(/hash\/(.*)/) [1]; }); } } }; for (var key in main) { if (location.href.match(main[key].regexp)) { if (main[key].vid) { gethash(current_search_index, main[key].vid(), main[key].proc); } else if (apply_search_site && main[key].is_search) { init_search_offline(main[key].proc); } else { var magnet = exist_magnet(); if (magnet) { insert_js(magnet, main[key].proc); } } break; } }