// ==UserScript== // @name Greasyfork Search with Sleazyfork Results include // @namespace hoothin // @version 0.52 // @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 // @author hoothin // @include http*://greasyfork.org/* // @include http*://www.greasyfork.org/* // @grant GM_xmlhttpRequest // @downloadURL none // ==/UserScript== (function() { 'use strict'; if(document.querySelector('span.sign-in-link')){ if(/scripts\/\d+/.test(location.href)){ if(!document.querySelector("#script-info")){ location.href=location.href.replace(/\/\/([^\.]+\.)?greasyfork\.org/,"//$1sleazyfork\.org"); } }else if(/(scripts|users)\//.test(location.href)){ GM_xmlhttpRequest({ method: 'GET', url: location.href.replace(/\/\/([^\.]+\.)?greasyfork\.org/,"//$1sleazyfork\.org"), onload: function(result) { var doc = null; try { doc = document.implementation.createHTMLDocument(''); doc.documentElement.innerHTML = result.responseText; } catch (e) { console.log('parse error'); } if (!doc) { return; } var l = doc.querySelector('ol.script-list'); if (l) { var ml = document.querySelector('ol.script-list'); if(!ml){ ml=document.createElement("ol"); ml.setAttribute("class","script-list"); var list=document.querySelector('body>div.width-constraint'); var ps=list.querySelectorAll("p"); for(var p of ps){ list.removeChild(p); } list.appendChild(ml); } var scs=l.querySelectorAll("li"); if(scs){ for(var sc of scs){ if(!ml.querySelector("li[data-script-id='"+sc.getAttribute("data-script-id")+"']")){ addScore(sc); ml.appendChild(sc); } } } } }, onerror: function(e) { console.log(e); } }); } } function addScore(script){ var separator=script.querySelector('h2>span.name-description-separator'); var description=script.querySelector('h2>span.description'); if(separator)separator.innerHTML=""+script.getAttribute("data-script-rating-score")+""+separator.innerHTML; if(description)description.innerHTML+="Ver."+script.getAttribute("data-script-version")+""; } var scripts=document.querySelectorAll('ol.script-list>li'); for(var script of scripts){ addScore(script); } })();