// ==UserScript==
// @name 挊
// @namespace 撸
// @description 自动获取磁链接并自动离线下载
// @include http://www.javzoo.com/*
// @include http://www.avmask.com/*
// @include http://www.javlibrary.com/*
// @include http://www.dmm.co.jp/digital/videoa/*
// @include http://pan.baidu.com/disk/home
// @include http://www.libredmm.com/products/*
// @include http://115.com/?tab=offline&mode=wangpan
// @include http://cloud.letv.com/webdisk/home/index
// @include https://www.furk.net/users/files/add
// @version 1.04
// @grant GM_xmlhttpRequest
// @grant GM_setClipboard
// @grant GM_setValue
// @grant GM_getValue
// @grant GM_addStyle
// ==/UserScript==
var av_id = '';
var xhr = function (url, cb) {
GM_xmlhttpRequest({
method: 'GET',
url: url,
onload: function (result) {
cb(result.responseText);
},
onerror: function (e) {
console.log(e);
}
});
};
var exist_magnet = function (callback) {
var magnet = GM_getValue('magnet');
if (magnet) {
GM_setValue('magnet', '');
callback(magnet);
}
};
var insert_js = function (magnet, func) {
var js = document.createElement('script');
js.innerHTML = '(' + func.toString() + ')(\'' + magnet + '\');';
document.body.appendChild(js);
};
var hostmatch = function (url) {
if (location.host == url) {
return true;
}
return false;
};
var add_style = function () {
GM_addStyle('#magnet-table table{margin:10px auto;border:1px solid #cad9ea;color:#666;}.magnet-th,.magnet-td{height:30px; border:1px solid #cad9ea;padding:0 1em 0;}.magnet-copy{color:#08c;}.magnet-download{color:#0003FF;}');
};
var create_wrapper = function (data) {
var html = '';
if (data) {
html = '<tr><th class=\'magnet-th\'>HASH</th><th class=\'magnet-th\'>大小</th><th class=\'magnet-th\'>操作</th><th class=\'magnet-th\'>离线下载</th></tr>';
var str = '<td class=\'magnet-td\'><a class=\'magnet-copy\' href=\'javascript:void(0);\'>复制</a></td><td class=\'magnet-td\'><a class=\'magnet-download\' target=\'_blank\' href=\'http://pan.baidu.com/disk/home\'>百度云</a> | <a class=\'magnet-download\' target=\'_blank\' href=\'http://115.com/?tab=offline&mode=wangpan\'>115离线</a> | <a class=\'magnet-download\' target=\'_blank\' href=\'https://www.furk.net/users/files/add\'>Furk</a></td>';
for (var i = 0; i < data.length; i++) {
html += '<tr hash=\'' + data[i].hash + '\'><td class=\'magnet-td\'>' + data[i].hash + '</td>';
html += '<td class=\'magnet-td\'>' + data[i].size + '</td>';
html += str;
html += '</tr>';
}
}
else {
html = '<tr><th class=\'magnet-th\'>没有搜索结果</th></tr>';
}
var table = document.createElement('table');
table.innerHTML = html;
var wrapper = document.createElement('div');
wrapper.id = 'magnet-table';
wrapper.appendChild(table);
return wrapper;
};
var gethash = function (av_id, callback) {
var search_url = 'http://www.btspread.com/search/';
xhr(search_url + av_id, function (html) {
var doc = document.implementation.createHTMLDocument('');
doc.documentElement.innerHTML = html;
if (search_url == 'http://www.btspread.com/search/') { //搜索引擎切换?
var t = doc.getElementsByTagName('tbody') [0];
if (!t) {
callback(false);
}
else {
var data = [
];
var aElems = t.getElementsByClassName('action');
var bElems = t.getElementsByClassName('files-size');
var tmp;
for (var i = 0; i < aElems.length; i++) {
tmp = aElems[i].firstChild.href;
data.push({
'hash': tmp.substring(tmp.indexOf('hash/') + 5),
'size': bElems[i].textContent
});
}
callback(data);
}
}
});
};
var handle_copy_download = function () {
var elem_copy = document.getElementsByClassName('magnet-copy');
var elem_down = document.getElementsByClassName('magnet-download');
for (var i = 0; i < elem_copy.length; i++) {
elem_copy[i].addEventListener('click', function (event) {
GM_setClipboard('magnet:?xt=urn:btih:' + event.target.parentElement.parentElement.getAttribute('hash'));
}, false);
}
for (var j = 0; j < elem_down.length; j++) {
elem_down[j].addEventListener('click', function (event) {
GM_setValue('magnet', 'magnet:?xt=urn:btih:' + event.target.parentElement.parentElement.getAttribute('hash'));
}, false);
}
};
if (hostmatch('www.javzoo.com') || hostmatch('www.avmask.com')) {
if (location.href.match('movie')) {
av_id = document.getElementsByClassName('header') [0].nextElementSibling.innerHTML;
gethash(av_id, function (data) {
add_style();
var wrapper = create_wrapper(data);
var title = document.createElement('h4');
title.innerHTML = '磁链接';
var tmp = document.getElementById('movie-share');
tmp.parentElement.insertBefore(wrapper, tmp.nextElementSibling);
tmp.parentElement.insertBefore(title, tmp.nextElementSibling);
handle_copy_download();
});
}
}
else if (hostmatch('www.javlibrary.com')) {
if (location.search.match('\\?v=')) {
av_id = document.getElementById('video_id').getElementsByClassName('text') [0].innerHTML;
gethash(av_id, function (data) {
add_style();
var wrapper = create_wrapper(data);
var tmp = document.getElementById('video_favorite_edit');
tmp.parentElement.insertBefore(wrapper, tmp.nextElementSibling);
handle_copy_download();
});
}
}
else if (hostmatch('www.libredmm.com')) {
av_id = location.pathname.substr(10);
gethash(av_id, function (data) {
add_style();
var wrapper = create_wrapper(data);
var tmp = document.getElementsByClassName('container') [0];
tmp.parentElement.insertBefore(wrapper, tmp.nextElementSibling);
handle_copy_download();
});
}
else if (hostmatch('www.dmm.co.jp')) {
var result = location.href.replace(/.*cid=/, '').replace(/\/\??.*/, '').match(/[^h_0-9].*/);
//console.log(result);
if (result[0]) {
av_id = result[0].replace('00', '');
gethash(av_id, function (data) {
add_style();
var wrapper = create_wrapper(data);
var tmp = document.getElementsByClassName('lh4') [0];
tmp.parentElement.insertBefore(wrapper, tmp.previousSibling);
handle_copy_download();
});
}
}
else if (hostmatch('pan.baidu.com')) {
exist_magnet(function (magnet) {
insert_js(magnet, function (magnet) {
$('.icon-btn-download').click();
setTimeout(function () {
$('#_disk_id_24').click();
setTimeout(function () {
$('#_disk_id_12').click();
$('#share-offline-link').val(magnet);
}, 500);
}, 500);
});
});
}
else if (hostmatch('115.com')) {
exist_magnet(function (magnet) {
insert_js(magnet, function (magnet) {
setTimeout(function () {
Core['OFFL5Plug'].OpenLink();
setTimeout(function () {
$('#js_offline_new_add').val(magnet);
}, 0);
}, 1000);
});
});
}
/*else if (hostmatch('cloud.letv.com') {
exist_magnet(function (magnet) {
insert_js(magnet, function (magnet) {
setTimeout(function () {
$('#offline-btn').click();
setTimeout(function () {
$('#offline_clear_complete').prev().click();
setTimeout(function () {
$('#offline-add-link').val(magnet);
}, 500);
}, 1000);
}, 3000);
});
});
}*/
else if (hostmatch('www.furk.net')) {
exist_magnet(function (magnet) {
insert_js(magnet, function (magnet) {
setTimeout(function () {
$('#url').val(magnet.replace('magnet:?xt=urn:btih:', ''));
}, 1500);
});
});
}