Sleazy Fork is available in English.

RandomSexyPicParser

Random Sexy Pictures Parser

Από την 30/12/2021. Δείτε την τελευταία έκδοση.

  1. // ==UserScript==
  2. // @name RandomSexyPicParser
  3. // @name:zh-CN 软瑟盘
  4. // @name:zh-TW 軟瑟盤
  5. // @name:ja RandomSexyPicParser
  6. // @namespace hoothin
  7. // @version 1.3.12
  8. // @description Random Sexy Pictures Parser
  9. // @description:zh-CN 随机色图
  10. // @description:zh-TW 隨機色圖
  11. // @description:ja Random Sexy Pictures Parser
  12. // @author hoothin
  13. // @include https://api.lolicon.app/setu/v2*
  14. // @include https://api.nyan.xyz/httpapi/sexphoto*
  15. // @include https://huanmengii.xyz/ZY/aCOS/cos*
  16. // @include https://api.uomg.com/api/rand.img3*
  17. // @include https://api.vvhan.com/api/tao*
  18. // @include https://www.hlapi.cn/api/mjx*
  19. // @include https://3650000.xyz/api/?*
  20. // @include https://*
  21. // @include http://*
  22. // @icon data:image/jpg;base64,/9j/4AAQSkZJRgABAQEBLAEsAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAgACADASIAAhEBAxEB/8QAGAAAAwEBAAAAAAAAAAAAAAAABgcICQX/xAAsEAABAwMEAQIFBQEAAAAAAAABAgMEBQYRAAcSITEIQRMUIjJRIyRCYYHB/8QAFgEBAQEAAAAAAAAAAAAAAAAABgQF/8QAIxEAAgEDBAEFAAAAAAAAAAAAAQMCABESBCFBUQUVMWHB8P/aAAwDAQACEQMRAD8AHNrPQdFYZlXBX6fJuRqns/NhptIUmSodhCG0nsdeCcqOAPOnVLvK3r227YVFjy6OEpLaWavEMKU2cY4utn7eseMjAHeq7vuaxtDs/VnaRSG6nIp9MffjwnMhD7jTKlpQsgZ7KcfnWQFv+sO6d0txKOxcFuw7ibqUpDUmPT4vwnWStQT+ksKJPHOfqB6Hf50Qd4vUOjlKWUj3x8Dik6PIJhO2Nojr7qo6fGtG1YUVNSrcJMl7PAzpjcZtPXkKUQCP+6CNz7Ttq+rdmP1iOKnDhq5iTBd5OMjoFbS0+evbvIGmfbm2dgVrcmq29W4MauJSwWYqpzaHUK4r+ocVAgE9eOzpmVnYaj2zt4qZQ4saOWnlhuBGYRHa+AnyPhoAGcknx3qD05qEiUY2MeR+vWgNeljTAm4l3T6vCDG3k2YffoFQfDdRhplQ5UNYK1j7hxPvyHX+6yhqm3tV2XuqrV2mJpLkpt1TiXFMltb5UMlOBnifOR1351f3owrEmgekbb52mKXVG2qU0ostjms9q5cO++8jGkp6lrQtLca6H7lp8gUCsrBcqESYSxyUPKig/wAseT76ZLcJQBB3omV4zsfapo2gq993nuhR6vUGl01EV/5pNOhO/uJCgfpSpRGG289n+vfV/wBs3LMNoNxn1olzo6HEvSgrkyHVrJWEqx2lOeIPvjU02Kzbe3VBkvPzIkl+SOSni5kke3+f1jXN3i9Vsdi2GqDakOUoBHFElCShAI8qB/GfbUmoeFrMb7mrFJLGAgbCv//Z
  23. // @grant GM_addStyle
  24. // @grant GM_setValue
  25. // @grant GM_getValue
  26. // @grant GM_deleteValue
  27. // @grant GM_xmlhttpRequest
  28. // @grant GM_registerMenuCommand
  29. // @run-at document-idle
  30. // @license MIT
  31. // ==/UserScript==
  32.  
  33.  
  34. (function() {
  35. 'use strict';
  36. var setuConfig={
  37. "api.lolicon.app":{
  38. name:"Lolicon ACG SexyPic",
  39. url:"https://api.lolicon.app/setu/v2?r18=1&num=5",
  40. luckyUrl:["https://api.lolicon.app/setu/v2?r18=0&num=5",
  41. "https://api.lolicon.app/setu/v2?r18=1&num=5",
  42. "https://api.lolicon.app/setu/v2?r18=2&num=5"],
  43. run:()=>{
  44. var searchNum=getSearchParam("num");
  45. var leftNum=searchNum;
  46. if(jsonData != "Forbidden"){
  47. let datas=jsonData.data;
  48. datas.forEach(function(data){
  49. leftNum--;
  50. let img=createImg(data.urls?data.urls.original:data.url);
  51. img.title=data.title+" - "+data.author;
  52. });
  53. }else{
  54. location.href=curConfig.url;
  55. }
  56. processByTime(leftNum,loadNum=>{
  57. GM_xmlhttpRequest({
  58. method: 'GET',
  59. url: curConfig.url.replace("num=5","num="+loadNum),
  60. timeout:15000,
  61. onload: function(result) {
  62. let datas=JSON.parse(result.responseText).data;
  63. datas.forEach(function(data){
  64. let img=createImg(data.urls?data.urls.original:data.url);
  65. img.title=data.title+" - "+data.author;
  66. });
  67. }
  68. });
  69. },5,1000);
  70. },
  71. getSearch:(param)=>{
  72. return `v2?r18=${param.r18}&num=${param.num}`;
  73. },
  74. initSearch:()=>{
  75. var searchNum=getSearchParam("num");
  76. var searchR18=getSearchParam("r18");
  77. numInput.value=searchNum;
  78. r18Check.checked=searchR18==1||searchR18==2;
  79. sfwCheck.checked=searchR18==0||searchR18==2;
  80. }
  81. },
  82. "api.nyan.xyz":{
  83. name:"Nyan ACG SexyPic",
  84. url:"https://api.nyan.xyz/httpapi/sexphoto/?r18=true&num=5",
  85. luckyUrl:["https://api.nyan.xyz/httpapi/sexphoto/?r18=true&num=5",
  86. "https://api.nyan.xyz/httpapi/sexphoto/?r18=false&num=5"],
  87. run:()=>{
  88. var searchNum=getSearchParam("num");
  89. var leftNum=searchNum;
  90. var urls=jsonData.data.url;
  91. if(!urls instanceof Array){
  92. urls=[urls];
  93. }
  94. urls.forEach(function(data){
  95. leftNum--;
  96. createImg(data);
  97. });
  98. processByTime(leftNum,loadNum=>{
  99. GM_xmlhttpRequest({
  100. method: 'GET',
  101. url: curConfig.url.replace("num=5","num="+loadNum),
  102. timeout:15000,
  103. onload: function(result) {
  104. urls=JSON.parse(result.responseText).data.url;
  105. urls.forEach(function(data){
  106. createImg(data);
  107. });
  108. }
  109. });
  110. },5,1000);
  111. },
  112. getSearch:(param)=>{
  113. return `?r18=${param.r18==1?"true":"false"}&num=${param.num}`;
  114. },
  115. initSearch:()=>{
  116. var searchNum=getSearchParam("num");
  117. var searchR18=getSearchParam("r18");
  118. numInput.value=searchNum;
  119. r18Check.checked=searchR18=="true";
  120. sfwCheck.checked=searchR18=="false";
  121. }
  122. },
  123. "buyersShow":{
  124. name:"Taobao Buyers Show",
  125. urls:["https://api.uomg.com/api/rand.img3?format=json&num=15",
  126. "https://api.vvhan.com/api/tao?type=json&num=15",
  127. "https://www.hlapi.cn/api/mjx1?type=json&num=15"],
  128. run:()=>{
  129. r18Check.style.display=sfwCheck.style.display=r18CheckLabel.style.display=sfwCheckLabel.style.display="none";
  130. var searchNum=getSearchParam("num");
  131. processByTime(searchNum,loadNum=>{
  132. for(let i=0;i<loadNum;i++){
  133. createImg(location.href.replace(/1?\?.*/,"?")+"r="+Math.random());
  134. }
  135. },5,1000);
  136. },
  137. getSearch:(param)=>{
  138. return location.href.replace(/\d+$/,"")+param.num;
  139. },
  140. initSearch:()=>{
  141. var searchNum=getSearchParam("num");
  142. numInput.value=searchNum;
  143. }
  144. },
  145. "huanmengii.xyz":{
  146. name:"Cosplay Show",
  147. url:"https://huanmengii.xyz/ZY/aCOS/cos/?type=json&num=15",
  148. run:()=>{
  149. r18Check.style.display=sfwCheck.style.display=r18CheckLabel.style.display=sfwCheckLabel.style.display="none";
  150. var searchNum=getSearchParam("num");
  151. processByTime(searchNum,loadNum=>{
  152. for(let i=0;i<loadNum;i++){
  153. GM_xmlhttpRequest({
  154. method: 'GET',
  155. url: curConfig.url+"&"+Math.random(),
  156. timeout:15000,
  157. onload: function(result) {
  158. var curUrl=JSON.parse(result.responseText).pic;
  159. createImg(curUrl);
  160. }
  161. });
  162. }
  163. },5,1000);
  164. },
  165. getSearch:(param)=>{
  166. return "?type=json&num="+param.num;
  167. },
  168. initSearch:()=>{
  169. var searchNum=getSearchParam("num");
  170. numInput.value=searchNum;
  171. }
  172. },
  173. "3650000.xyz":{
  174. name:"3650000",
  175. url:"https://3650000.xyz/api/?type=json&mode=7&num=15",
  176. luckyUrl:["https://3650000.xyz/api/?type=json&num=15",
  177. "https://3650000.xyz/api/?type=json&mode=1&num=15",
  178. "https://3650000.xyz/api/?type=json&mode=2&num=15",
  179. "https://3650000.xyz/api/?type=json&mode=3&num=15",
  180. "https://3650000.xyz/api/?type=json&mode=66&num=15",
  181. "https://3650000.xyz/api/?type=json&mode=5&num=15",
  182. "https://3650000.xyz/api/?type=json&mode=7&num=15",
  183. "https://3650000.xyz/api/?type=json&mode=8&num=15",
  184. "https://3650000.xyz/api/?type=json&mode=9&num=15"],
  185. run:()=>{
  186. r18Check.style.display=sfwCheck.style.display=r18CheckLabel.style.display=sfwCheckLabel.style.display="none";
  187. var searchNum=getSearchParam("num");
  188. var searchMode=getSearchParam("mode");
  189. processByTime(searchNum,loadNum=>{
  190. for(let i=0;i<loadNum;i++){
  191. GM_xmlhttpRequest({
  192. method: 'GET',
  193. url: `${curConfig.url}&mode=${searchMode}&${Math.random()}`,
  194. timeout:15000,
  195. onload: function(result) {
  196. var curUrl=JSON.parse(result.responseText).url;
  197. createImg(curUrl);
  198. }
  199. });
  200. }
  201. },5,1000);
  202. },
  203. getSearch:(param)=>{
  204. return location.pathname+`?type=json&mode=${param.mode}&num=${param.num}`;
  205. },
  206. initSearch:()=>{
  207. var searchNum=getSearchParam("num");
  208. var searchMode=getSearchParam("mode");
  209. var modeObj=[
  210. ["Public",""],
  211. ["Weibo","1"],
  212. ["Instagram","2"],
  213. ["Cosplay","3"],
  214. ["Nsfw","66"],
  215. ["Mtcos","5"],
  216. ["Legs","7"],
  217. ["MoreCoser","8"],
  218. ["Tuwan","9"]
  219. ];
  220. modeObj.forEach(item=>{
  221. var option=document.createElement("option");
  222. option.value=item[1];
  223. option.innerHTML=item[0];
  224. if(item[1]==searchMode){
  225. option.selected=true;
  226. }
  227. modeSelect.appendChild(option);
  228. });
  229. modeSelect.style.display="inline";
  230. numInput.value=searchNum;
  231. }
  232. },
  233. "api.uomg.com":"buyersShow",
  234. "api.vvhan.com":"buyersShow",
  235. "www.hlapi.cn":"buyersShow",
  236. "api.ghser.com":"buyersShow"
  237. };
  238. GM_registerMenuCommand("I'm feeling lucky", ()=>{
  239. var luckyUrls=[],targetUrl;
  240. for(var i in setuConfig){
  241. let sc=setuConfig[i];
  242. if(sc.luckyUrl){
  243. luckyUrls=luckyUrls.concat(sc.luckyUrl);
  244. }else if(sc.urls){
  245. luckyUrls=luckyUrls.concat(sc.urls);
  246. }else if(sc.url){
  247. luckyUrls.push(sc.url);
  248. }
  249. }
  250. var randomIndex=Math.floor(Math.random()*luckyUrls.length);
  251. targetUrl=luckyUrls[randomIndex];
  252. location.href=targetUrl;
  253. });
  254. var curConfig=setuConfig[document.domain],jsonData,hasFloatImg=false,grabed=false,oClient;
  255. if(!curConfig){
  256. GM_registerMenuCommand("Parse current api", customSet);
  257. var customRule=GM_getValue("RSPrules_"+document.domain);
  258. if(customRule){
  259. curConfig={run:()=>{
  260. var searchNum=getSearchParam("num");
  261. var leftNum=searchNum;
  262. r18Check.style.display=sfwCheck.style.display=r18CheckLabel.style.display=sfwCheckLabel.style.display="none";
  263. let parsePics=(data)=>{
  264. let picUrls=[],urlReg=/(https?|ftp|file):\/\/[\-A-Za-z0-9\+&@#/%?=~_\|!:,\.;]+[\-A-Za-z0-9\+&@#/%=~_\|]/g;
  265. if(typeof data == "string"){
  266. picUrls=data.match(urlReg);
  267. }else{
  268. let checkJson=obj=>{
  269. for(let i in obj){
  270. if(typeof obj[i] == "string"){
  271. let pics=obj[i].match(urlReg);
  272. if(pics)picUrls=picUrls.concat(pics);
  273. }else checkJson(obj[i]);
  274. }
  275. };
  276. checkJson(data);
  277. }
  278. if(picUrls){
  279. picUrls.forEach(url=>{
  280. leftNum--;
  281. createImg(unescape(url));
  282. });
  283. }
  284. }
  285. parsePics(jsonData);
  286. processByTime(leftNum,loadNum=>{
  287. GM_xmlhttpRequest({
  288. method: 'GET',
  289. url: location.href.replace(/num=\d+/,"num="+loadNum),
  290. timeout:15000,
  291. onload: function(result) {
  292. var parseData;
  293. try{
  294. parseData=JSON.parse(result.responseText);
  295. }catch(e){
  296. parseData=result.responseText;
  297. }
  298. parsePics(parseData);
  299. }
  300. });
  301. },5,1000);
  302. },
  303. getSearch:(param)=>{
  304. var href=location.href;
  305. if(/\bnum=/.test(href)){
  306. href=href.replace(/\bnum=\d+/,"num="+param.num);
  307. }else{
  308. href+=(href.indexOf("?")==-1?"?":"&")+"num="+param.num;
  309. }
  310. return href;
  311. },
  312. initSearch:()=>{
  313. var searchNum=getSearchParam("num");
  314. numInput.value=searchNum;
  315. }};
  316. }else return;
  317. }else if(!curConfig.run){
  318. curConfig=setuConfig[curConfig];
  319. }
  320. document.title=curConfig.name?curConfig.name:"Random Sexy Pictures";
  321. try{
  322. var firstText = "";
  323. for (var i = 0; i < document.body.childNodes.length; i++) {
  324. var curNode = document.body.childNodes[i];
  325. if (curNode.nodeType == 1 || curNode.nodeName == "PRE") {
  326. firstText = curNode.nodeValue || curNode.innerText;
  327. break;
  328. }
  329. }
  330. jsonData=JSON.parse(firstText);
  331. }catch(e){
  332. console.log(e);
  333. jsonData = firstText;
  334. }
  335. document.body.innerHTML="";
  336. var imgCon=document.createElement("div");
  337. var btns=document.createElement("div");
  338. var numInput=document.createElement("input");
  339. var r18Check=document.createElement("input");
  340. var r18CheckLabel=document.createElement("label");
  341. var sfwCheck=document.createElement("input");
  342. var sfwCheckLabel=document.createElement("label");
  343. var modeSelect=document.createElement("select");
  344. var submit=document.createElement("button");
  345. var referrerMeta=document.createElement("meta");
  346. var viewportMeta=document.createElement("meta");
  347. var overMask=document.createElement("div");
  348. var homepage=document.createElement("a");
  349. for(var name in setuConfig){
  350. var config=setuConfig[name];
  351. if(!config.name)continue;
  352. var siteA=document.createElement("a");
  353. var url=config.url;
  354. if(config.urls){
  355. var randomIndex=Math.floor(Math.random()*config.urls.length);
  356. url=config.urls[randomIndex];
  357. config.url=url;
  358. }
  359. siteA.href=url;
  360. siteA.innerHTML=config.name;
  361. btns.appendChild(siteA);
  362. }
  363. btns.appendChild(numInput);
  364. btns.appendChild(r18Check);
  365. btns.appendChild(r18CheckLabel);
  366. btns.appendChild(sfwCheck);
  367. btns.appendChild(sfwCheckLabel);
  368. btns.appendChild(modeSelect);
  369. btns.appendChild(submit);
  370. btns.appendChild(homepage);
  371. overMask.className="over-mask";
  372. imgCon.appendChild(overMask);
  373. referrerMeta.name="referrer";
  374. referrerMeta.content="never";
  375. document.head.appendChild(referrerMeta);
  376. viewportMeta.name="viewport";
  377. viewportMeta.content="width=device-width, initial-scale=1";
  378. document.head.appendChild(viewportMeta);
  379.  
  380. curConfig.run();
  381. if(curConfig.initSearch)curConfig.initSearch();
  382.  
  383. function sleep(fn,param,time) {
  384. return new Promise((resolve) => {
  385. setTimeout(() => resolve(fn(param)), time)
  386. })
  387. }
  388. async function processByTime(num,fn,limit,time) {
  389. while(num>0){
  390. var loadNum=limit;
  391. if(num<limit)loadNum=num;
  392. num-=loadNum;
  393. await sleep(fn,loadNum,time);
  394. }
  395. }
  396.  
  397. overMask.onclick=e=>{
  398. if(hasFloatImg){
  399. restoreImg(hasFloatImg);
  400. }
  401. };
  402.  
  403. function mousedownHandler(e){
  404. let img=e.target;
  405. img.addEventListener("mouseup",mouseupHandler);
  406. img.addEventListener("mousemove",mousemoveHandler);
  407. img.style.cursor="grabbing";
  408. oClient={
  409. x:window.scrollX+e.clientX,
  410. y:window.scrollY+e.clientY,
  411. };
  412. e.stopPropagation();
  413. e.preventDefault();
  414. e.returnValue=false;
  415. }
  416. function mousemoveHandler(e){
  417. let img=e.target;
  418. grabed=true;
  419. window.scrollTo(oClient.x-e.clientX, oClient.y-e.clientY);
  420. }
  421. function mouseupHandler(e){
  422. let img=e.target;
  423. img.removeEventListener("mouseup",mouseupHandler);
  424. img.removeEventListener("mousemove",mousemoveHandler);
  425. img.style.cursor="grab";
  426. }
  427. function grabHandler(img,add){
  428. if(add){
  429. img.addEventListener("mousedown",mousedownHandler);
  430. }else{
  431. img.removeEventListener("mousedown",mousedownHandler);
  432. }
  433. }
  434.  
  435. function restoreImg(img){
  436. hasFloatImg=false;
  437. img.style.zIndex=0;
  438. img.style.bottom="";
  439. img.style.width="100%";
  440. img.style.position="";
  441. img.style.margin="";
  442. document.body.style.overflow="";
  443. imgCon.style.maxHeight="";
  444. imgCon.style.maxWidth="";
  445. overMask.style.display="none";
  446. overMask.style.opacity=0;
  447. img.className="list-show";
  448. grabHandler(img,false);
  449. img.style.cursor="";
  450. img.scrollIntoView();
  451. }
  452.  
  453. function createImg(url){
  454. let img=document.createElement("img");
  455. img.onerror=e=>{
  456. img.style.display="none";
  457. };
  458. img.src=url;
  459. img.className="list-show";
  460. img.style.width="100%";
  461. img.onclick=()=>{
  462. if(grabed){
  463. grabed=false;
  464. return;
  465. }
  466. window.scrollTo(0,0);
  467. if(img.style.zIndex==2){
  468. restoreImg(img);
  469. }else if(img.style.zIndex==1){
  470. img.style.bottom="";
  471. img.style.width="";
  472. img.style.maxWidth="";
  473. img.style.maxHeight="";
  474. img.style.zIndex=2;
  475. img.style.cursor="grab";
  476. grabHandler(img,true);
  477. document.body.style.overflow="";
  478. imgCon.style.maxWidth="100vw";
  479. imgCon.style.maxHeight="100vh";
  480. }else{
  481. if(hasFloatImg)return;
  482. hasFloatImg=img;
  483. document.body.style.overflow="hidden";
  484. img.style.bottom=0;
  485. if(img.naturalWidth>document.documentElement.clientWidth || img.naturalHeight>document.documentElement.clientHeight){
  486. img.style.zIndex=1;
  487. img.style.maxWidth="99%";
  488. img.style.maxHeight="99%";
  489. }else{
  490. img.style.zIndex=2;
  491. img.style.maxWidth="";
  492. img.style.maxHeight="";
  493. }
  494. img.style.width="";
  495. img.style.position="absolute";
  496. img.style.margin="auto";
  497. overMask.style.display="block";
  498. img.className="";
  499. setTimeout(()=>{
  500. overMask.style.opacity=1;
  501. }, 0);
  502. }
  503. };
  504. imgCon.appendChild(img);
  505. return img;
  506. }
  507.  
  508. function getSearchParam(name){
  509. let reg = new RegExp("(&|^)" + name + "=([^&]*)(&|$)", "i");
  510. let r = window.location.search.substr(1).match(reg);
  511. if (r != null) {
  512. return decodeURIComponent(r[2]);
  513. };
  514. return "";
  515. }
  516.  
  517. function submitParam(){
  518. var num=numInput.value,mode;
  519. if(modeSelect.options.length>0){
  520. mode=modeSelect.options[modeSelect.selectedIndex].value;
  521. }
  522. var r18=2;
  523. if(sfwCheck.checked && !r18Check.checked){
  524. r18=0;
  525. }else if(!sfwCheck.checked && r18Check.checked){
  526. r18=1;
  527. }
  528. if(numInput.value != ""){
  529. location.href=curConfig.getSearch({"r18":r18, "num":num, "mode":mode});
  530. }else{
  531. location.reload();
  532. }
  533. }
  534.  
  535. function customSet(){
  536. if(window.confirm("Parse current api?")){
  537. GM_setValue("RSPrules_"+document.domain, true);
  538. }else{
  539. GM_deleteValue("RSPrules_"+document.domain)
  540. }
  541. location.reload();
  542. }
  543.  
  544. GM_addStyle(`
  545. @media screen and (min-width: 1024px) {
  546. .img-con{
  547. column-count: 5;
  548. -moz-column-count: 5;
  549. -webkit-column-count: 5;
  550. }
  551. .img-con>img{
  552. min-height: 250px;
  553. }
  554. }
  555. @media screen and (max-width: 1024px) {
  556. .img-con{
  557. column-count: 2;
  558. -moz-column-count: 2;
  559. -webkit-column-count: 2;
  560. }
  561. .img-con>img{
  562. min-height: 50px;
  563. }
  564. }
  565. body{
  566. background: black;
  567. }
  568. .btns>select{
  569. display: none;
  570. height: 29px;
  571. border-radius: 3px 0 0 3px;
  572. -moz-border-radius: 3px 0 0 3px;
  573. -webkit-border-radius: 3px 0 0 3px;
  574. -ms-border-radius: 3px 0 0 3px;
  575. -o-border-radius: 3px 0 0 3px;
  576. border: none;
  577. color: #cacaca;
  578. background-color: #363636;
  579. font-size: 14px;
  580. outline: 0;
  581. padding: 2px 5px;
  582. vertical-align: top;
  583. }
  584. .over-mask{
  585. display: none;
  586. opacity: 0;
  587. width: 100%;
  588. height: 100%;
  589. background-color: #000000e6;
  590. position: fixed;
  591. z-index: 1;
  592. top: 0;
  593. left: 0;
  594. transition: opacity .3s ease-in-out;
  595. -moz-transition: opacity .3s ease-in-out;
  596. -o-transition: opacity .3s ease-in-out;
  597. -webkit-transition: opacity .3s ease-in-out;
  598. }
  599. .list-show:hover,.list-show.hover{
  600. opacity: 1;
  601. }
  602. .list-show{
  603. opacity: 0.6;
  604. transition: opacity .3s ease-in-out;
  605. -moz-transition: opacity .3s ease-in-out;
  606. -webkit-transition: opacity .3s ease-in-out;
  607. }
  608. .img-con{
  609. overflow-x: hidden;
  610. overflow: auto;
  611. width: 100%;
  612. display: block;
  613. }
  614. .img-con>img{
  615. -webkit-column-break-inside: avoid;
  616. break-inside: avoid;
  617. float: left;
  618. margin-bottom: 15px;
  619. margin-right: 15px;
  620. overflow: hidden;
  621. position: relative;
  622. top: 0;
  623. left: 0;
  624. right: 0;
  625. background: url(data:image/png;base64,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) no-repeat center center;
  626. }
  627. .btns{
  628. padding: 10px 0;
  629. text-align: center;
  630. line-height: 30px;
  631. position: fixed;
  632. z-index: 1;
  633. width: 100%;
  634. top: 0;
  635. left: 0;
  636. background: #000000de;
  637. -webkit-transition:transform .5s ease-out;
  638. -o-transition:transform .5s ease-out;
  639. transition:transform .5s ease-out;
  640. }
  641. .btns.hide{
  642. -webkit-transform:translateY(-100px);
  643. -ms-transform:translateY(-100px);
  644. -o-transform:translateY(-100px);
  645. transform:translateY(-100px);
  646. }
  647. .btns>a{
  648. padding: 5px;
  649. background: #f8981e;
  650. color: black;
  651. border-radius: 5px;
  652. font-weight: bold;
  653. text-decoration: none;
  654. margin: 1px;
  655. }
  656. .btns>a:hover{
  657. background: #ffa31a;
  658. }
  659. .btns>label{
  660. background: #f8981e;
  661. color: black;
  662. border-radius: 5px;
  663. font-weight: bold;
  664. text-decoration: none;
  665. padding: 3px;
  666. }
  667. .btns>input[type=checkbox]{
  668. width:20px;
  669. height:20px;
  670. vertical-align: top;
  671. }
  672. .btns>input[type=number]{
  673. width: 48px;
  674. height: 25px;
  675. border-radius: 3px 0 0 3px;
  676. -moz-border-radius: 3px 0 0 3px;
  677. -webkit-border-radius: 3px 0 0 3px;
  678. -ms-border-radius: 3px 0 0 3px;
  679. -o-border-radius: 3px 0 0 3px;
  680. border: none;
  681. color: #cacaca;
  682. background-color: #363636;
  683. display: inline-block;
  684. font-size: 14px;
  685. outline: 0;
  686. padding: 2px 5px;
  687. vertical-align: top;
  688. margin: 0 5px;
  689. }
  690. .btns>button:hover{
  691. transform: scale3d(1.1, 1.1, 1.1);
  692. }
  693. .btns>button{
  694. cursor: pointer;
  695. background: #0075ff;
  696. color: white;
  697. border-radius: 5px;
  698. font-weight: bold;
  699. text-decoration: none;
  700. padding: 8px 5px 5px 5px;
  701. margin: 0px 10px 0 10px;
  702. border: 0;
  703. transition: transform .3s ease 0s;
  704. transform: scale3d(1, 1, 1);
  705. }`);
  706.  
  707. btns.className="btns";
  708. document.body.appendChild(btns);
  709. homepage.innerHTML="Homepage";
  710. homepage.href="https://sleazyfork.org/en/users/8227-hoothin";
  711. homepage.target="_blank";
  712. numInput.type="number";
  713. numInput.title=numInput.placeholder="Num of sexy pictures";
  714. r18Check.type="checkbox";
  715. r18Check.id="r18Check";
  716. r18CheckLabel.innerHTML="R18 ";
  717. r18CheckLabel.htmlFor="r18Check";
  718. sfwCheck.type="checkbox";
  719. sfwCheck.id="sfwCheck";
  720. sfwCheckLabel.innerHTML="SFW ";
  721. sfwCheckLabel.htmlFor="sfwCheck";
  722. submit.innerHTML="Refresh";
  723. submit.onclick=submitParam;
  724. document.onkeyup = function(e) {
  725. var event = e || window.event;
  726. var key = event.which || event.keyCode || event.charCode;
  727. if (key == 13) {
  728. submitParam();
  729. }
  730. };
  731.  
  732. imgCon.className="img-con";
  733. document.body.appendChild(imgCon);
  734. imgCon.style.paddingTop=parseInt(window.getComputedStyle(btns).height.replace("px",""))+20+"px";
  735. document.body.addEventListener("touchstart",e=>{
  736. var lastHover=document.querySelector(".list-show.hover");
  737. if(lastHover)lastHover.classList.remove("hover");
  738. if(e.target.className=="list-show"){
  739. e.target.classList.add("hover");
  740. }
  741. });
  742.  
  743. var newPos,lastPos=0;
  744. window.addEventListener('scroll', function(e) {
  745. newPos=window.scrollY;
  746. if (newPos > lastPos) {
  747. btns.classList.add("hide");
  748. } else {
  749. btns.classList.remove("hide");
  750. }
  751. lastPos=newPos;
  752. });
  753. })();