Sleazy Fork is available in English.

PT Copy Seed Info

复制PT详情页的信息便于转载,简介部分自动转为 BBCode 格式,可以点击标题、副标题、详情部分进行复制,目前支持 HDHome、PTHome、南洋、柠檬、杜比、烧包、BTSchool

  1. // ==UserScript==
  2. // @name PT Copy Seed Info
  3. // @version 0.2
  4. // @description 复制PT详情页的信息便于转载,简介部分自动转为 BBCode 格式,可以点击标题、副标题、详情部分进行复制,目前支持 HDHome、PTHome、南洋、柠檬、杜比、烧包、BTSchool
  5. // @author zhangnew
  6. // @namespace https://zhangnew.com/
  7. // @homepage https://zhangnew.com/
  8. // @match https://www.pthome.net/details.php?id=*
  9. // @match https://pt.btschool.club/details.php?id=*
  10. // @match https://hdhome.org/details.php?id=*
  11. // @match https://nanyangpt.com/details.php?id=*
  12. // @match https://leaguehd.com/details.php?id=*
  13. // @match https://www.hddolby.com/details.php?id=*
  14. // @match https://ptsbao.club/details.php?id=*
  15.  
  16. // @require https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js
  17. // @require https://cdn.jsdelivr.net/npm/toastr@2.1.4/toastr.min.js
  18. // @resource toastr_css https://cdn.jsdelivr.net/npm/toastr@2.1.4/build/toastr.min.css
  19.  
  20. // @grant GM_addStyle
  21. // @grant GM_getResourceText
  22. // @grant GM_notification
  23. // @grant GM_setClipboard
  24. // ==/UserScript==
  25.  
  26. GM_addStyle(GM_getResourceText('toastr_css'));
  27. toastr.options.timeOut = 5000;
  28.  
  29. (function() {
  30. 'use strict';
  31.  
  32. var kdescr_origin = document.getElementById('kdescr');
  33. var kdescr = kdescr_origin.cloneNode(true);
  34. // 去掉声明部分
  35. var sm = kdescr.getElementsByTagName('div')[0];
  36. if(sm && sm.id === 'ad_torrentdetail'){
  37. kdescr.removeChild(sm);
  38. }
  39. if(window.location.host.indexOf('nanyangpt') > -1){
  40. kdescr.removeChild(kdescr.getElementsByTagName('fieldset')[0]);
  41. }
  42. if(window.location.host.indexOf('leaguehd') > -1){
  43. var b = kdescr.getElementsByTagName('b');
  44. kdescr.removeChild(b[b.length-1]);
  45. }
  46. if(window.location.host.indexOf('ptsbao') > -1){
  47. var fieldset = kdescr.getElementsByTagName('fieldset');
  48. kdescr.removeChild(fieldset[fieldset.length-1]);
  49. kdescr.removeChild(fieldset[fieldset.length-1]);
  50. }
  51.  
  52. var BBCode = htmlToBBCode(kdescr.innerHTML);
  53. addCopyFun(kdescr_origin, '简介', BBCode);
  54.  
  55. var title = document.getElementById('top');
  56. var title_content = title.innerHTML.split(' ')[0];
  57. addCopyFun(title, '标题', title_content);
  58.  
  59. var title_2 = document.getElementsByClassName('rowfollow')[1];
  60. if(window.location.host.indexOf('ptsbao') > -1){
  61. title_2 = document.getElementsByClassName('rowfollow')[2];
  62. }
  63. var title_2_content = title_2.innerText;
  64. addCopyFun(title_2, '副标题', title_2_content);
  65.  
  66. toastr.success('PT Copy Seed Info 已激活.');
  67.  
  68. function addCopyFun(el, type, content) {
  69. el.addEventListener('click',(event) => {
  70. //toastr.info(event.target.id);
  71. GM_setClipboard(content);
  72. toastr.success(type + ":复制成功");
  73. });
  74. };
  75.  
  76. function htmlToBBCode(html) {
  77. html = html.replace(/<pre(.*?)>(.*?)<\/pre>/gmi, "[code]$2[/code]");
  78.  
  79. html = html.replace(/<h[1-7](.*?)>(.*?)<\/h[1-7]>/, "\n[h]$2[/h]\n");
  80.  
  81. html = html.replace(/<br(.*?)>/gi, "\n");
  82. html = html.replace(/<textarea(.*?)>(.*?)<\/textarea>/gmi, "\[code]$2\[\/code]");
  83. html = html.replace(/<b>/gi, "[b]");
  84. html = html.replace(/<i>/gi, "[i]");
  85. html = html.replace(/<u>/gi, "[u]");
  86. html = html.replace(/<\/b>/gi, "[/b]");
  87. html = html.replace(/<\/i>/gi, "[/i]");
  88. html = html.replace(/<\/u>/gi, "[/u]");
  89. html = html.replace(/<em>/gi, "[b]");
  90. html = html.replace(/<\/em>/gi, "[/b]");
  91.  
  92. html = html.replace(/<legend>(.*?)<\/legend>/gmi, ""); //删除"引用"两个字
  93. html = html.replace(/<fieldset>/gi, "[quote]"); //处理引用
  94. html = html.replace(/<\/fieldset>/gi, "[/quote]");
  95.  
  96. html = html.replace(/<strong>/gi, "[b]");
  97. html = html.replace(/<\/strong>/gi, "[/b]");
  98. html = html.replace(/<cite>/gi, "[i]");
  99. html = html.replace(/<\/cite>/gi, "[/i]");
  100. html = html.replace(/<font color="(.*?)">(.*?)<\/font>/gmi, "[color=$1]$2[/color]");
  101. html = html.replace(/<font color=(.*?)>(.*?)<\/font>/gmi, "[color=$1]$2[/color]");
  102. html = html.replace(/<link(.*?)>/gi, "");
  103. html = html.replace(/<li(.*?)>(.*?)<\/li>/gi, "[*]$2");
  104. html = html.replace(/<ul(.*?)>/gi, "[list]");
  105. html = html.replace(/<\/ul>/gi, "[/list]");
  106. html = html.replace(/<div>/gi, "\n");
  107. html = html.replace(/<\/div>/gi, "\n");
  108. html = html.replace(/<td(.*?)>/gi, " ");
  109. html = html.replace(/<tr(.*?)>/gi, "\n");
  110.  
  111. html = html.replace(/<img(.*?)src="(.*?)"(.*?)>/gi, "[img]$2[/img]");
  112. html = html.replace(/<a(.*?)href="(.*?)"(.*?)>(.*?)<\/a>/gi, "[url=$2]$4[/url]");
  113.  
  114. html = html.replace(/<head>(.*?)<\/head>/gmi, "");
  115. html = html.replace(/<object>(.*?)<\/object>/gmi, "");
  116. html = html.replace(/<script(.*?)>(.*?)<\/script>/gmi, "");
  117. html = html.replace(/<style(.*?)>(.*?)<\/style>/gmi, "");
  118. html = html.replace(/<title>(.*?)<\/title>/gmi, "");
  119. html = html.replace(/<!--(.*?)-->/gmi, "\n");
  120.  
  121. html = html.replace(/\/\//gi, "/");
  122. html = html.replace(/http:\//gi, "http://");
  123. html = html.replace(/https:\//gi, "https://");
  124.  
  125. html = html.replace(/<(?:[^>'"]*|(['"]).*?\1)*>/gmi, "");
  126. html = html.replace(/\r\r/gi, "");
  127. html = html.replace(/\[img]\//gi, "[img]");
  128. html = html.replace(/\[url=\//gi, "[url=");
  129.  
  130. html = html.replace(/(\S)\n/gi, "$1 ");
  131.  
  132. html = html.replace(/\s&nbsp;/gi, " "); //处理简介里面的 IMDb 链接
  133.  
  134. return html;
  135. };
  136. })();