// ==UserScript== // @name NexusPHP PT Helper // @namespace https://greasyfork.org/zh-CN/users/163820-ysc3839 // @version 0.1.1 // @description Helper script for NexusPHP based PT sites. // @description:zh-cn 基于 NexusPHP 的 PT 站的辅助脚本 // @author ysc3839 // @match *://hdhome.org/* // @require https://cdn.jsdelivr.net/npm/jquery@3.3 // @grant GM_setClipboard // @downloadURL none // ==/UserScript== (function($) { 'use strict'; function extend(object, method, callback) { const original = object[method]; object[method] = function(...args) { const value = original ? original.apply(this, args) : undefined; callback.apply(this, [value].concat(args)); return value; }; Object.assign(object[method], original); } function override(object, method, newMethod) { const original = object[method]; object[method] = function(...args) { return newMethod.apply(this, [original.bind(this)].concat(args)); }; Object.assign(object[method], original); } $('html > head').append($(``)); if (window.location.pathname === '/details.php') { const b = $('#outer > table > tbody > tr:eq(5)').find('b'); const url = new URL(b.text()); localStorage.setItem('passkey', url.searchParams.get('passkey')); b.replaceWith($('').addClass('altlink_blue').attr('title', b.attr('title')).attr('href', b.text()).text(b.text()).click(function(event) { event.preventDefault(); GM_setClipboard(this.href); if (!$(this).data('copied')) $(this).data('copied', true).parent().prev().append('(已复制)'); })); } else if (window.location.pathname === '/usercp.php') { const url = new URL(window.location); if(!url.searchParams.get('action')) { localStorage.setItem('passkey', $('#outer > table > tbody:eq(1) > tr:eq(3) > td:eq(1)').text()); } } let passkey = localStorage.getItem('passkey'); function getTorrentURL(urltext) { const url = new URL(urltext); const id = url.searchParams.get('id'); return `https://hdhome.org/download.php?id=${id}&passkey=${passkey}`; } override(unsafeWindow, 'getusertorrentlistajax', function(original, userid, type, blockid) { if (original(userid, type, blockid)) { const blockdiv = $('#' + blockid); /*blockdiv.prepend($('').click(function() { }));*/ blockdiv.prepend($('').click(function() { if (!passkey) { alert('No passkey!'); return; } let text = ''; $(this).parent().find('tr.my_selected > td:nth-child(4) > a').each(function() { text += getTorrentURL(this.href) + '\n'; }); GM_setClipboard(text); })); const trlist = blockdiv.find('table > tbody > tr'); trlist.first().prepend('选中链接'); const seltd = $(''); const copytd = seltd.clone(); seltd.append($('').click(function(event) { $(this).parents().eq(1).toggleClass('my_selected'); }).mousedown(function(e) { e.stopPropagation(); })); copytd.append($('').click(function() { if (!passkey) { alert('No passkey!'); return; } GM_setClipboard(getTorrentURL($(this).parent().nextAll().eq(1).children('a').get(0).href)); if (!$(this).data('copied')) $(this).data('copied', true).parent().append('
(已复制)'); })); let mousedown = false; seltd.mousedown(function(event) { event.preventDefault(); mousedown = true; $(this).children().click(); }).mouseenter(function() { if (mousedown) $(this).children().click(); }); $(document).mouseup(function(event) { event.preventDefault(); mousedown = false; }); trlist.not(':first').prepend(copytd).prepend(seltd); } return true; }); })($.noConflict());