Greasfork Search with Sleazyfork Results include | 大人的GreasyFork

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

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

  1. // ==UserScript==
  2. // @name Greasfork Search with Sleazyfork Results include | 大人的GreasyFork
  3. // @namespace hoothin
  4. // @version 0.5
  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*://greasyfork.org/*
  8. // @include http*://www.greasyfork.org/*
  9. // @grant GM_xmlhttpRequest
  10. // ==/UserScript==
  11.  
  12. (function() {
  13. 'use strict';
  14. if(document.querySelector('span.sign-in-link')){
  15. if(/scripts\/\d+/.test(location.href)){
  16. if(!document.querySelector("#script-info")){
  17. location.href=location.href.replace(/\/\/([^\.]+\.)?greasyfork\.org/,"//$1sleazyfork\.org");
  18. }
  19. }else if(/(scripts|users)\//.test(location.href)){
  20. GM_xmlhttpRequest({
  21. method: 'GET',
  22. url: location.href.replace(/\/\/([^\.]+\.)?greasyfork\.org/,"//$1sleazyfork\.org"),
  23. onload: function(result) {
  24. var doc = null;
  25. try {
  26. doc = document.implementation.createHTMLDocument('');
  27. doc.documentElement.innerHTML = result.responseText;
  28. }
  29. catch (e) {
  30. console.log('parse error');
  31. }
  32. if (!doc) {
  33. return;
  34. }
  35. var ml = document.querySelector('ol.script-list');
  36. if(!ml){
  37. ml=document.createElement("ol");
  38. ml.setAttribute("class","script-list");
  39. var list=document.querySelector('body>div.width-constraint');
  40. var ps=list.querySelectorAll("p");
  41. for(var p of ps){
  42. list.removeChild(p);
  43. }
  44. list.appendChild(ml);
  45. }
  46. var l = doc.querySelector('ol.script-list');
  47. if (l) {
  48. var scs=l.querySelectorAll("li");
  49. if(scs){
  50. for(var sc of scs){
  51. if(!ml.querySelector("li[data-script-id='"+sc.getAttribute("data-script-id")+"']")){
  52. addScore(sc);
  53. ml.appendChild(sc);
  54. }
  55. }
  56. }
  57. }
  58. },
  59. onerror: function(e) {
  60. console.log(e);
  61. }
  62. });
  63. }
  64. }
  65. function addScore(script){
  66. var separator=script.querySelector('h2>span.name-description-separator');
  67. var description=script.querySelector('h2>span.description');
  68. if(separator)separator.innerHTML="<strong style='color:#e09015'>"+script.getAttribute("data-script-rating-score")+"</strong>"+separator.innerHTML;
  69. if(description)description.innerHTML+="<strong>Ver."+script.getAttribute("data-script-version")+"</strong>";
  70. }
  71. var scripts=document.querySelectorAll('ol.script-list>li');
  72. for(var script of scripts){
  73. addScore(script);
  74. }
  75. })();