Merge adult results of sleazyfork into greasyfork when the script is no longer anonymously available, add rating score and version for scripts then
Size
27.5 KB
Version
1.6.6
Created
Oct 27, 2025
Updated
about 1 month ago
1// ==UserScript==
2// @name Greasyfork Search with Sleazyfork Results include
3// @name:zh-CN 大人的Greasyfork
4// @name:zh-TW 大人的Greasyfork
5// @name:ja 大人のGreasyfork
6// @namespace hoothin
7// @version 1.6.6
8// @description Merge adult results of sleazyfork into greasyfork when the script is no longer anonymously available, add rating score and version for scripts then
9// @description:zh-CN 在Greasyfork的搜索结果中添加Sleazyfork上的成人脚本,增加评分与版本号,并在访问匿名不可用脚本时跳转至Sleazyfork
10// @description:zh-TW 在Greasyfork的搜索結果中添加Sleazyfork上的成人腳本,增加評分與版本號,並在訪問匿名不可用腳本時跳轉至Sleazyfork
11// @description:ja 脚本付けるSleazyfork上の成人脚本検索結果からGreasyfork、脚本付ける採点とバージョン番号を訪問匿名利用できない脚本にジャンプからSleazyfork
12// @author hoothin
13// @match http*://greasyfork.org/*
14// @match http*://www.greasyfork.org/*
15// @match http*://sleazyfork.org/*
16// @match http*://www.sleazyfork.org/*
17// @grant GM_xmlhttpRequest
18// @grant GM_setValue
19// @grant GM_getValue
20// @grant GM_registerMenuCommand
21// @grant GM_notification
22// @grant GM.xmlHttpRequest
23// @grant GM.setValue
24// @grant GM.getValue
25// @grant GM.registerMenuCommand
26// @grant GM.notification
27// @connect greasyfork.org
28// @connect sleazyfork.org
29// @contributionURL https://www.buymeacoffee.com/hoothin
30// @contributionAmount 1
31// @downloadURL https://update.greasyfork.org/scripts/23840/Greasyfork%20Search%20with%20Sleazyfork%20Results%20include.user.js
32// @updateURL https://update.greasyfork.org/scripts/23840/Greasyfork%20Search%20with%20Sleazyfork%20Results%20include.meta.js
33// ==/UserScript==
34
35(function() {
36 'use strict';
37 var _GM_xmlhttpRequest,_GM_registerMenuCommand,_GM_notification;
38 if(typeof GM_xmlhttpRequest!='undefined'){
39 _GM_xmlhttpRequest=GM_xmlhttpRequest;
40 }else if(typeof GM!='undefined' && typeof GM.xmlHttpRequest!='undefined'){
41 _GM_xmlhttpRequest=GM.xmlHttpRequest;
42 }
43 if(typeof GM_registerMenuCommand!='undefined'){
44 _GM_registerMenuCommand=GM_registerMenuCommand;
45 }else if(typeof GM!='undefined' && typeof GM.registerMenuCommand!='undefined'){
46 _GM_registerMenuCommand=GM.registerMenuCommand;
47 }
48 if(typeof GM_notification!='undefined'){
49 _GM_notification=GM_notification;
50 }else if(typeof GM!='undefined' && typeof GM.notification!='undefined'){
51 _GM_notification=GM.notification;
52 }
53
54 if(typeof _GM_xmlhttpRequest=='undefined')_GM_xmlhttpRequest=(f)=>{};
55 if(typeof _GM_registerMenuCommand=='undefined')_GM_registerMenuCommand=(s,f)=>{};
56 if(typeof _GM_notification=='undefined')_GM_notification=(s)=>{};
57 var storage={
58 supportGM: typeof GM_getValue=='function' && typeof GM_getValue('a','b')!='undefined',
59 supportGMPromise: typeof GM!='undefined' && typeof GM.getValue=='function' && typeof GM.getValue('a','b')!='undefined',
60 mxAppStorage:(function(){
61 try{
62 return window.external.mxGetRuntime().storage;
63 }catch(e){
64 };
65 })(),
66 operaUJSStorage:(function(){
67 try{
68 return window.opera.scriptStorage;
69 }catch(e){
70 };
71 })(),
72 setItem:function(key,value){
73 if(this.operaUJSStorage){
74 this.operaUJSStorage.setItem(key,value);
75 }else if(this.mxAppStorage){
76 this.mxAppStorage.setConfig(key,value);
77 }else if(this.supportGM){
78 GM_setValue(key,value);
79 }else if(this.supportGMPromise){
80 GM.setValue(key,value);
81 }else if(window.localStorage){
82 window.localStorage.setItem(key,value);
83 };
84 },
85 getItem:function(key,cb){
86 var value;
87 if(this.operaUJSStorage){
88 value=this.operaUJSStorage.getItem(key);
89 }else if(this.mxAppStorage){
90 value=this.mxAppStorage.getConfig(key);
91 }else if(this.supportGM){
92 value=GM_getValue(key);
93 }else if(this.supportGMPromise){
94 value=GM.getValue(key).then(v=>{cb(v)});
95 return;
96 }else if(window.localStorage){
97 value=window.localStorage.getItem(key);
98 };
99 cb(value);
100 },
101 };
102 if(document.querySelector('span.sign-in-link')){
103 var otherSite=/greasyfork\.org/.test(location.hostname)?"sleazyfork":"greasyfork";
104 if(/scripts\/\d+/.test(location.href)){
105 if(!document.querySelector("#script-info") && (otherSite == "greasyfork" || document.querySelector("div.width-constraint>section>p>a").href.indexOf("sign_in")!=-1)){
106 location.href=location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org");
107 }
108 }else if(/\/(scripts|users)(\/|.*(\?|&)q=|.*[\?&]set=)/.test(location.href)){
109 _GM_xmlhttpRequest({
110 method: 'GET',
111 url: location.href.replace(/\/\/([^\.]+\.)?(greasyfork|sleazyfork)\.org/,"//$1"+otherSite+"\.org"),
112 onload: function(result) {
113 var doc = null;
114 try {
115 doc = document.implementation.createHTMLDocument('');
116 doc.documentElement.innerHTML = result.responseText;
117 }
118 catch (e) {
119 console.log('parse error');
120 }
121 if (!doc) {
122 return;
123 }
124 var l = doc.querySelector('ol.script-list');
125 if (l) {
126 var ml = document.querySelector('ol.script-list');
127 if(!ml){
128 ml=document.createElement("ol");
129 ml.setAttribute("class","script-list");
130 var list=document.querySelector('.sidebarred-main-content');
131 var ps=list.querySelectorAll("p");
132 for(let i=0;i<ps.length;i++){
133 let p=ps[i];
134 list.removeChild(p);
135 }
136 list.appendChild(ml);
137 }
138 var scs=l.querySelectorAll("li");
139 if(scs){
140 for(let i=0;i<scs.length;i++){
141 let sc=scs[i];
142 if(!ml.querySelector("li[data-script-id='"+sc.dataset.scriptId+"']")){
143 //addScore(sc);
144 ml.appendChild(sc);
145 }
146 }
147 }
148 }
149 },
150 onerror: function(e) {
151 console.log(e);
152 }
153 });
154 }
155 }
156
157 var bullshit,bullshit_o=`vip.*(视频|視頻)|网课|刷课|(mooc|考试|学习).*(答题|挂机)|(网盘|網盤|云盘).*(vip|直链)|优惠劵|優惠券|AntiGame|split|Agar|\\.io(\\b|:|\\/|\\.|$)|ExtencionRipXChetoMalo|AposBot|DFxLite|ZTx-Lite|AposFeedingBot|AposLoader|Blah Blah|Orc Clan Script|Astro\\s*Empires|^\\s*Attack|^\\s*Battle|BiteFight|Blood\\s*Wars|Bots|Bots4|Brawler|\\bBvS\\b|Business\\s*Tycoon|Castle\\s*Age|City\\s*Ville|Comunio|Conquer\\s*Club|CosmoPulse|Dark\\s*Orbit|Dead\\s*Frontier|\\bDOA\\b|DotD|Dossergame|Dragons\\s*of\\s*Atlantis|Dugout|\\bDS[a-z]+\\n|Empire\\s*Board|eRep(ublik)?|Epic.*War|ExoPlanet|Falcon Tools|Feuerwache|Farming|FarmVille|Fightinfo|Frontier\\s*Ville|Ghost\\s*Trapper|Gladiatus|Goalline|Gondal|Grepolis|Hobopolis|\\bhwm(\\b|_)|Ikariam|\\bIT2\\b|Jellyneo|Kapi\\s*Hospital|Kings\\s*Age|Kingdoms?\\s*of|knastv(ö|oe)gel|Knight\\s*Fight|\\b(Power)?KoC(Atta?ck)?\\b|\\bKOL\\b|Kongregate|Last\\s*Emperor|Legends?\\s*of|Light\\s*Rising|Lockerz|\\bLoU\\b|Mafia\\s*(Wars|Mofo)|Menelgame|Mob\\s*Wars|Mouse\\s*Hunt|Molehill\\s*Empire|NeoQuest|MyFreeFarm|Neopets|Nemexia|\\bOGame\\b|Ogar(io)?|Pardus|Pennergame|Pigskin\\s*Empire|PlayerScripts|Popmundo|Po?we?r\\s*(Bot|Tools)|PsicoTSI|Ravenwood|Schulterglatze|slitheriogameplay|SpaceWars|\\bSW_[a-z]+\\n|\\bSnP\\b|The\\s*Crims|The\\s*West|Travian|Treasure\\s*Isl(and|e)|Tribal\\s*Wars|TW.?PRO|Vampire\\s*Wars|War\\s*of\\s*Ninja|West\\s*Wars|\\bWoD\\b|World\\s*of\\s*Dungeons|wtf\\s*battles|Wurzelimperium`;
158 var sortDiv=document.querySelector("#script-list-sort"),refreshIcon=document.createElement("span"),inUserPage=document.querySelector("#user-script-list")!=null,goodRating,okRating,badRating,totalInstalls,dailyInstalls;
159 refreshIcon.innerHTML=`<svg class="icon" style="width: 1em;height: 1em;vertical-align: middle;fill: currentColor;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2274"><path d="M981.314663 554.296783a681.276879 681.276879 0 0 1-46.986468 152.746388q-105.706098 230.734238-360.983096 242.19829a593.06288 593.06288 0 0 1-228.689008-33.853939v-1.022615l-31.808709 79.979258a55.759429 55.759429 0 0 1-20.506122 22.551352 40.043451 40.043451 0 0 1-21.04434 5.382184 51.076928 51.076928 0 0 1-19.483507-5.382184 95.210839 95.210839 0 0 1-13.347817-7.158305 52.314831 52.314831 0 0 1-5.382184-4.628679L71.671707 731.908862a57.427906 57.427906 0 0 1-7.158305-21.528737 46.932646 46.932646 0 0 1 1.022615-17.438277 35.952991 35.952991 0 0 1 7.158305-13.347816 74.435608 74.435608 0 0 1 10.279972-10.279972 60.495751 60.495751 0 0 1 11.248765-7.373593 50.431066 50.431066 0 0 1 8.18092-3.606063 6.189512 6.189512 0 0 0 3.067845-1.776121l281.003839-74.866183a91.497132 91.497132 0 0 1 35.899168-2.583448 122.337047 122.337047 0 0 1 22.174599 6.404799 21.528737 21.528737 0 0 1 12.325202 12.325202 76.157907 76.157907 0 0 1 4.628679 14.854829 47.63233 47.63233 0 0 1 0 14.370431 55.167388 55.167388 0 0 1-2.04523 10.764369 10.764368 10.764368 0 0 0-1.022615 3.606063l-32.831324 79.979258a677.50935 677.50935 0 0 0 164.264262 39.505232q77.395809 7.696523 131.809692-3.606063a358.507291 358.507291 0 0 0 101.023598-36.921784 381.27393 381.27393 0 0 0 73.951211-50.753997 352.64071 352.64071 0 0 0 48.708767-55.382676 410.391547 410.391547 0 0 0 26.910921-41.550462c3.767529-7.481236 6.673908-13.616926 8.719139-18.460892zM40.885614 449.667121a685.69027 685.69027 0 0 1 63.563595-176.427998q118.0313-212.273346 374.330913-207.160271a571.803252 571.803252 0 0 1 207.160271 39.989629l33.853939-78.956643A75.619688 75.619688 0 0 1 735.187378 9.189165a37.67529 37.67529 0 0 1 15.393047-8.234742 42.303968 42.303968 0 0 1 14.854829-0.538219 47.578509 47.578509 0 0 1 13.347817 3.606064 102.907362 102.907362 0 0 1 11.302586 6.13569 49.569917 49.569917 0 0 1 6.673909 4.628678l3.067845 3.067845 154.84544 276.913379a81.970666 81.970666 0 0 1 6.13569 22.712817 46.986468 46.986468 0 0 1-1.022615 17.438277 32.293105 32.293105 0 0 1-7.696523 13.347817 69.322533 69.322533 0 0 1-10.764369 9.741753 92.142994 92.142994 0 0 1-11.302587 6.673909l-8.18092 4.09046a7.104483 7.104483 0 0 1-3.067845 1.022615l-283.049068 67.546412a112.003254 112.003254 0 0 1-46.125319-1.022615c-11.571696-3.390776-19.160576-8.019454-22.551352-13.832214a41.173709 41.173709 0 0 1-5.382184-21.04434 97.256069 97.256069 0 0 1 1.291724-17.438277 24.381295 24.381295 0 0 1 3.067845-8.234742L600.632773 296.81309a663.730958 663.730958 0 0 0-164.102797-43.057474q-77.987849-9.203535-131.809692 0a348.227319 348.227319 0 0 0-101.292707 33.853938 368.571976 368.571976 0 0 0-75.350579 49.246986 383.31916 383.31916 0 0 0-50.269601 54.360061 408.507783 408.507783 0 0 0-28.740863 41.012244A113.025869 113.025869 0 0 0 40.885614 449.667121z m0 0" fill="#ffffff" p-id="2275"></path></svg>`;
160 if(inUserPage){
161 var ratingSpan=document.createElement("span");
162 goodRating=document.createElement("span");
163 okRating=document.createElement("span");
164 badRating=document.createElement("span");
165 totalInstalls=document.createElement("span");
166 dailyInstalls=document.createElement("span");
167 goodRating.className="good-rating-count";
168 okRating.className="ok-rating-count";
169 badRating.className="bad-rating-count";
170 totalInstalls.className="good-rating-count";
171 dailyInstalls.className="good-rating-count";
172 ratingSpan.appendChild(goodRating);
173 ratingSpan.appendChild(okRating);
174 ratingSpan.appendChild(badRating);
175 document.querySelector("#script-list-sort ul>li:nth-child(1)").appendChild(dailyInstalls);
176 document.querySelector("#script-list-sort ul>li:nth-child(2)").appendChild(totalInstalls);
177 document.querySelector("#script-list-sort ul>li:nth-child(3)").appendChild(ratingSpan);
178 ratingSpan.style.display=totalInstalls.style.display=dailyInstalls.style.display="none";
179 goodRating.innerHTML=okRating.innerHTML=badRating.innerHTML=totalInstalls.innerHTML=dailyInstalls.innerHTML="0";
180 }
181 storage.getItem("GeasyforkBullshit",v=>{
182 bullshit=v;
183 if(!bullshit)bullshit=bullshit_o;
184 if(/greasyfork\.org\/.*\/scripts\/23840[^\/]*$/.test(location.href)){
185 var p=document.createElement("p"),_bullshit;
186 p.style.width="99%";
187 p.innerHTML="<b>Filter RegExp</b><button id='ok' style='margin-left: 20px;'>Save</button><button id='reset' style='margin-left: 20px;'>Reset</button>";
188 var okBtn=p.querySelector("#ok");
189 var resetBtn=p.querySelector("#reset");
190 var filterTextarea=document.createElement("pre");
191 var prettifyScript=document.createElement("script");
192 prettifyScript.src="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.js?skin=sons-of-obsidian";
193 document.head.appendChild(prettifyScript);
194 var prettifyStyle=document.createElement("link");
195 prettifyStyle.rel="stylesheet";
196 prettifyStyle.href="https://cdnjs.cloudflare.com/ajax/libs/prettify/r298/prettify.min.css";
197 document.head.appendChild(prettifyStyle);
198 filterTextarea.contentEditable="true";
199 filterTextarea.className="prettyprint lang-js";
200 filterTextarea.style.whiteSpace="pre-wrap";
201 filterTextarea.style.overflowWrap="break-word";
202 filterTextarea.style.width="100%";
203 filterTextarea.innerHTML=bullshit;
204 var additionalInfo=document.querySelector("#additional-info");
205 p.appendChild(filterTextarea);
206 additionalInfo.insertBefore(p,additionalInfo.firstChild);
207 prettifyScript.onload=()=>{PR.prettyPrint();};
208 okBtn.onclick=()=>{
209 _bullshit=filterTextarea.innerText;
210 storage.setItem("GeasyforkBullshit", _bullshit);
211 alert("Saved");
212 //_GM_notification("Saved");
213 };
214 resetBtn.onclick=()=>{
215 storage.setItem("GeasyforkBullshit", bullshit_o);
216 alert("Reset over");
217 location.reload();
218 //_GM_notification("Reset over");
219 };
220 }
221 initFilter();
222 });
223
224 function addScore(script){
225 var separator=script.querySelector('h2>span.name-description-separator');
226 var description=script.querySelector('h2>span.description');
227 if(separator){
228 var score=document.createElement("strong");
229 score.style.color="#e09015";
230 score.innerHTML=script.dataset.scriptRatingScore;
231 separator.parentNode.insertBefore(score,separator);
232 }
233 if(description){
234 count(script);
235 var scriptHref=script.querySelector('h2>a').href;
236 let version=script.dataset.scriptVersion;
237 let format=script.dataset.scriptLanguage;
238 let cssAtag=script.dataset.scriptLanguage=="js"?"":`<a class="install-link" data-install-format="css" data-ping-url href="${scriptHref.replace(/\.org\/.*\/scripts\//,".org/scripts/")}/code/script.user.css">Install as user style</a>`;
239 description.innerHTML+=`<strong>Ver.${version}</strong>
240 <div id="install-area" class="list-install-area">
241 <a class="install-link" data-install-format="js" data-ping-url href="${scriptHref.replace(/\.org\/.*\/scripts\//,".org/scripts/")}/code/script.user.js">Install</a><a style="cursor:pointer;" class="install-help-link refresh-info" title="Check status" rel="nofollow"></a>
242 ${cssAtag}
243 </div><div id="installation-instructions-modal-js" aria-hidden="true"><p class="installation-instructions-modal-content-bypass"><a href="#"></a></p></div><div id="installation-instructions-modal-css" aria-hidden="true"><p class="installation-instructions-modal-content-bypass"><a href="#"></a></p></div>`;
244 var installArea=description.querySelector("#install-area");
245 let installLink=installArea.querySelector(".install-link");
246 let checkInfo=installArea.querySelector(".install-help-link");
247 script.onmouseenter=e=>{
248 checkInfo.appendChild(refreshIcon);
249 };
250 script.onmouseleave=e=>{
251 if(refreshIcon && refreshIcon.parentNode)refreshIcon.parentNode.removeChild(refreshIcon);
252 };
253 checkInfo.onclick=()=>{
254 _GM_xmlhttpRequest({
255 method: 'GET',
256 url: scriptHref.replace(/(.*)-.*/,"$1.json"),
257 onload: function(result) {
258 var data = null;
259 try {
260 data = JSON.parse(result.responseText);
261 }
262 catch (e) {
263 console.log('parse error');
264 }
265 if(data){
266 let setInfo=info=>{
267 if(info.installed){
268 if(parseFloat(info.version) < parseFloat(version)){
269 installLink.innerHTML="Update to version "+version;
270 }else if(parseFloat(info.version) > parseFloat(version)){
271 installLink.innerHTML="Downgrade to version "+version;
272 }else{
273 installLink.innerHTML="Reinstall version "+version;
274 }
275
276 if(!info.enabled){
277 installLink.style.backgroundColor="#6a6a6a";
278 }else{
279 installLink.style.backgroundColor="";
280 }
281 }else{
282 installLink.innerHTML="Install version "+version;
283 }
284 };
285 if(window.external.Tampermonkey){
286 window.external.Tampermonkey.isInstalled(data.name, data.namespace, e=>{
287 setInfo(e);
288 });
289 }else if(window.external.Violentmonkey){
290 window.external.Violentmonkey.isInstalled(data.name, data.namespace).then(e=>{
291 setInfo(e);
292 });
293 }
294 }
295 }
296 });
297 };
298 if(!window.external.Tampermonkey && !window.external.Violentmonkey){
299 checkInfo.style.display="none";
300 }
301 }
302 }
303
304 function count(script){
305 var dailySpan=script.querySelector("dd.script-list-daily-installs>span");
306 if(!dailySpan)return;
307 var goodCount=parseInt(script.querySelector("dd.script-list-ratings>span>.good-rating-count").innerHTML.replace(/[^\d]/g,""));
308 var okCount=parseInt(script.querySelector("dd.script-list-ratings>span>.ok-rating-count").innerHTML.replace(/[^\d]/g,""));
309 var badCount=parseInt(script.querySelector("dd.script-list-ratings>span>.bad-rating-count").innerHTML.replace(/[^\d]/g,""));
310 if(badCount && badCount>2 && badCount>goodCount){
311 let scriptLink=script.querySelector('.script-link');
312 if(scriptLink){
313 var warn=document.createTextNode("⚠");
314 scriptLink.style.textDecoration="line-through";
315 scriptLink.style.color="#67000080";
316 scriptLink.title="May be dangerous!";
317 scriptLink.parentNode.insertBefore(warn,scriptLink);
318 }
319 }
320
321 if(!inUserPage)return;
322 var dailyCount=parseInt(dailySpan.innerHTML.replace(/[^\d\.\-]/g,""));
323 var totalCount=parseInt(script.querySelector("dd.script-list-total-installs>span").innerHTML.replace(/[^\d]/g,""));
324 goodRating.innerHTML=parseInt(goodRating.innerHTML)+goodCount;
325 okRating.innerHTML=parseInt(okRating.innerHTML)+okCount;
326 badRating.innerHTML=parseInt(badRating.innerHTML)+badCount;
327 totalInstalls.innerHTML=parseInt(totalInstalls.innerHTML)+totalCount;
328 dailyInstalls.innerHTML=parseInt(dailyInstalls.innerHTML)+dailyCount;
329 ratingSpan.style.display=totalInstalls.style.display=dailyInstalls.style.display="";
330 }
331
332 _GM_registerMenuCommand("Configure the Filter", ()=>{
333 location.href="https://greasyfork.org/scripts/23840#additional-info";
334 /*var _bullshit=window.prompt("Configure the Filter", bullshit);
335 if(_bullshit == ""){
336 bullshit=bullshit_o;
337 storage.setItem("GeasyforkBullshit", bullshit);
338 location.reload();
339 }else if(_bullshit != null){
340 bullshit=_bullshit;
341 storage.setItem("GeasyforkBullshit", bullshit);
342 location.reload();
343 }*/
344 });
345
346 function initFilter(){
347 var enableFilter;
348 if(sortDiv){
349 storage.getItem("disableFilter",v=>{
350 enableFilter=!v;
351 var switchFilter=document.createElement("div");
352 var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
353 var observer = new MutationObserver(function(records){
354 records.map(function(record) {
355 for(var i=0;i<record.addedNodes.length;i++){
356 var curNode=record.addedNodes[i];
357 if(curNode.className=="script-list"){
358 var scripts=curNode.querySelectorAll('li');
359 for(let i=0;i<scripts.length;i++){
360 let script=scripts[i];
361 addScore(script);
362 }
363 if(enableFilter)filter(curNode);
364 }else if(curNode.tagName=="LI"){
365 addScore(curNode);
366 if(enableFilter)filter(curNode);
367 }
368 }
369 });
370 });
371 var option = {
372 'childList': true
373 };
374 observer.observe(document.querySelector("body>.width-constraint .sidebarred-main-content"), option);
375 var scriptList=document.querySelector("#browse-script-list,#user-script-list,ol.script-list");
376 if(scriptList)observer.observe(scriptList, option);
377 var scripts=document.querySelectorAll('ol.script-list>li');
378 for(let i=0;i<scripts.length;i++){
379 let script=scripts[i];
380 addScore(script);
381 }
382 //Modify from GreasyFork Bullshit Filter,Thanks to darkred
383 var style = document.createElement('style');
384 style.textContent = `
385 li.filtered {
386 display: none !important;
387 }
388 .list-option{
389 position: relative;
390 }
391 #script-list-sort li>span{
392 position: absolute;
393 top: 4px;
394 right: 2px;
395 pointer-events: none;
396 font-weight: 500;
397 }
398 #script-list-sort li>span:lang(ar), #script-list-sort li>span:lang(he), #script-list-sort li>span:lang(ug){
399 right: unset;
400 left: 2px;
401 }
402 #script-list-sort li>span>span{
403 margin: 0 0 0 2px;
404 }
405 .script-list>li .list-install-area{
406 display: none;
407 float: right;
408 position: relative;
409 }
410 .script-list>li:hover .list-install-area {
411 display: block;
412 }
413 @-webkit-keyframes spin {
414 from {
415 -webkit-transform: rotate(0deg);
416 }
417 to {
418 -webkit-transform: rotate(360deg);
419 }
420 }
421 @keyframes spin {
422 from {
423 transform: rotate(0deg);
424 }
425 to {
426 transform: rotate(360deg);
427 }
428 }
429 .refresh-info:hover>span {
430 display: block;
431 -webkit-animation: spin 1s linear 1s 5 alternate;
432 animation: spin 1s linear infinite;
433 }`;
434 style.type = 'text/css';
435 document.querySelector('head').appendChild(style);
436 var bullshitReg=new RegExp(bullshit,"i");
437 var filterName="Enable Filter",filteredNum=0;
438 var filter=function(t){
439 [].forEach.call(t.querySelectorAll('article>h2'), function(item) {
440 if(bullshitReg.test(item.innerText.replace("\n"," "))){
441 item.parentNode.parentNode.classList.add('filtered');
442 filteredNum++;
443 }
444 });
445 };
446 if(enableFilter)filter(document);
447 switchFilter.innerHTML='<input type="checkBox" name="switchFilter" id="switchFilter"/><label for="switchFilter">'+filterName+(filteredNum?' ('+filteredNum+' filtered)':'')+'</label>';
448 var switchFilterCheckbox=switchFilter.querySelector('#switchFilter');
449 var switchFilterLabel=switchFilterCheckbox.nextSibling;
450 switchFilterCheckbox.checked=enableFilter;
451 switchFilterCheckbox.onclick=function(){
452 if(enableFilter){
453 [].forEach.call(document.querySelectorAll('li.filtered'), function(item) {
454 item.classList.remove('filtered');
455 });
456 switchFilterLabel.innerHTML=filterName;
457 }else{
458 filteredNum=0;
459 filter(document);
460 switchFilterLabel.innerHTML=filterName+' ('+filteredNum+' filtered)';
461 }
462 storage.setItem("disableFilter",enableFilter);
463 enableFilter=!enableFilter;
464 };
465 sortDiv.insertBefore(switchFilter,sortDiv.firstChild);
466 });
467 }
468 }
469})();