大人的Greasy Fork

访问匿名不可用内容时跳转至sleazyfork,未登录状态下尝试在sleazyfork查找内容后合并至greasyfork | Merge sleazyfork results into greasyfork when the script is no longer anonymously available

2016-10-09 يوللانغان نەشرى. ئەڭ يېڭى نەشرىنى كۆرۈش.

  1. // ==UserScript==
  2. // @name 大人的Greasy Fork
  3. // @namespace hoothin
  4. // @version 0.3
  5. // @description 访问匿名不可用内容时跳转至sleazyfork,未登录状态下尝试在sleazyfork查找内容后合并至greasyfork | Merge sleazyfork results into greasyfork when the script is no longer anonymously available
  6. // @author hoothin
  7. // @match http*://greatest.deepsurf.us/*
  8. // @match http*://www.greatest.deepsurf.us/*
  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. var scriptList=/scripts\./.test(location.href)?"browse-script-list":"user-script-list";
  21. GM_xmlhttpRequest({
  22. method: 'GET',
  23. url: location.href.replace(/\/\/([^\.]+\.)?greasyfork\.org/,"//$1sleazyfork\.org"),
  24. onload: function(result) {
  25. var doc = null;
  26. try {
  27. doc = document.implementation.createHTMLDocument('');
  28. doc.documentElement.innerHTML = result.responseText;
  29. }
  30. catch (e) {
  31. console.log('parse error');
  32. }
  33. if (!doc) {
  34. return;
  35. }
  36. var ml = document.querySelector('#'+scriptList);
  37. if(!ml){
  38. ml=document.createElement("ol");
  39. ml.setAttribute("id",scriptList);
  40. ml.setAttribute("class","script-list");
  41. var list=document.querySelector('body>div.width-constraint');
  42. var ps=list.querySelectorAll("p");
  43. for(var p of ps){
  44. list.removeChild(p);
  45. }
  46. list.appendChild(ml);
  47. }
  48. var l = doc.querySelector('#'+scriptList);
  49. if (l) {
  50. var scs=l.querySelectorAll("li");
  51. if(scs){
  52. for(var sc of scs){
  53. if(!ml.querySelector("li[data-script-id='"+sc.getAttribute("data-script-id")+"']")){
  54. ml.appendChild(sc);
  55. }
  56. }
  57. }
  58. }
  59. },
  60. onerror: function(e) {
  61. console.log(e);
  62. }
  63. });
  64. }
  65. }
  66. })();