大人的Greasyfork

在sleazyfork查找成人脚本内容后合并至greasyfork,访问匿名不可用脚本时跳转至sleazyfork,并添加评分与版本号

目前为 2016-10-28 提交的版本。查看 最新版本

  1. // ==UserScript==
  2. // @name Greasyfork Search with Sleazyfork Results include
  3. // @name:zh-CN 大人的Greasyfork
  4. // @name:zh-TW 大人的Greasyfork
  5. // @namespace hoothin
  6. // @version 0.56
  7. // @description Merge adult results of sleazyfork into greasyfork when the script is no longer anonymously available, add rating score and version for scripts then
  8. // @description:zh-CN 在sleazyfork查找成人脚本内容后合并至greasyfork,访问匿名不可用脚本时跳转至sleazyfork,并添加评分与版本号
  9. // @description:zh-TW 在sleazyfork查找成人脚本內容後合並至greasyfork,訪問匿名不可用脚本時跳轉至sleazyfork,並添加評分與版本號
  10. // @author hoothin
  11. // @include http*://greasyfork.org/*
  12. // @include http*://www.greasyfork.org/*
  13. // @include http*://sleazyfork.org/*
  14. // @include http*://www.sleazyfork.org/*
  15. // @grant GM_xmlhttpRequest
  16. // @connect greasyfork.org
  17. // @connect sleazyfork.org
  18. // ==/UserScript==
  19.  
  20. (function() {
  21. 'use strict';
  22. if(document.querySelector('span.sign-in-link')){
  23. var otherSite=/\/\/([^\.]+\.)?greasyfork\.org/.test(location.href)?"sleazyfork":"greasyfork";
  24. if(/scripts\/\d+/.test(location.href)){
  25. if(!document.querySelector("#script-info")){
  26. var p404=document.querySelector("div.width-constraint>p");
  27. if(p404 && p404.innerHTML.indexOf("404")!=-1)return;
  28. location.href=location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org");
  29. }
  30. }else if(/\/(scripts|users)\//.test(location.href)){
  31. GM_xmlhttpRequest({
  32. method: 'GET',
  33. url: location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org"),
  34. onload: function(result) {
  35. var doc = null;
  36. try {
  37. doc = document.implementation.createHTMLDocument('');
  38. doc.documentElement.innerHTML = result.responseText;
  39. }
  40. catch (e) {
  41. console.log('parse error');
  42. }
  43. if (!doc) {
  44. return;
  45. }
  46. var l = doc.querySelector('ol.script-list');
  47. if (l) {
  48. var ml = document.querySelector('ol.script-list');
  49. if(!ml){
  50. ml=document.createElement("ol");
  51. ml.setAttribute("class","script-list");
  52. var list=document.querySelector('body>div.width-constraint');
  53. var ps=list.querySelectorAll("p");
  54. for(var p of ps){
  55. list.removeChild(p);
  56. }
  57. list.appendChild(ml);
  58. }
  59. var scs=l.querySelectorAll("li");
  60. if(scs){
  61. for(var sc of scs){
  62. if(!ml.querySelector("li[data-script-id='"+sc.getAttribute("data-script-id")+"']")){
  63. addScore(sc);
  64. ml.appendChild(sc);
  65. }
  66. }
  67. }
  68. }
  69. },
  70. onerror: function(e) {
  71. console.log(e);
  72. }
  73. });
  74. }
  75. }
  76. function addScore(script){
  77. var separator=script.querySelector('h2>span.name-description-separator');
  78. var description=script.querySelector('h2>span.description');
  79. if(separator)separator.innerHTML="<strong style='color:#e09015'>"+script.getAttribute("data-script-rating-score")+"</strong>"+separator.innerHTML;
  80. if(description)description.innerHTML+="<strong>Ver."+script.getAttribute("data-script-version")+"</strong>";
  81. }
  82. var scripts=document.querySelectorAll('ol.script-list>li');
  83. for(var script of scripts){
  84. addScore(script);
  85. }
  86. })();