Greasyfork Search with Sleazyfork Results include

访问匿名不可用内容时跳转至sleazyfork,未登录状态下尝试在sleazyfork查找内容后合并至greasyfork,并添加评分与版本号 | Merge sleazyfork results into greasyfork when the script is no longer anonymously available,add rating score and version for scripts then

As of 2016-10-12. See the latest version.

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