Filtrar carteles con palabras en Desmo

Ocultar carteles que tengan ciertas palabras en Desmo

  1. // ==UserScript==
  2. // @name Filtrar carteles con palabras en Desmo
  3. // @version 0.11.8
  4. // @description Ocultar carteles que tengan ciertas palabras en Desmo
  5. // @author ArtEze
  6. // @match *://desmotivaciones.es/*
  7. // @grant none
  8. // @namespace http://tampermonkey.net/
  9. // ==/UserScript==
  10.  
  11. var g = {};
  12. window.g = g;
  13.  
  14. g.tener_css_todos = function(nodo,css){
  15. return Array.from(nodo.querySelectorAll(css));
  16. };
  17. g.concatenar_arrays = function(a,b){
  18. return a.concat(b);
  19. };
  20. g.filtrar_por_atributo = function(nodo,atributo,regex){
  21. return nodo.filter(function(x){
  22. return x.attributes[atributo] && regex.test(x.attributes[atributo].value);
  23. });
  24. };
  25.  
  26. /* Comienzo de análisis de imágenes */
  27.  
  28. g.obtener_pixeles = function(canvas,contexto){
  29. var datos_imagen = {};
  30. datos_imagen = contexto.getImageData(
  31. 0,0,canvas.width,canvas.height
  32. );
  33. var bytes = datos_imagen.data;
  34. return bytes;
  35. };
  36. g.obtener_bytes = function(cartel,imagen){
  37. // console.log("obtener_bytes",cartel,imagen);
  38. var canvas = document.createElement("canvas");
  39. imagen.setAttribute("crossOrigin","");
  40. canvas.width = imagen.width;
  41. canvas.height = imagen.height;
  42. var contexto = canvas.getContext("2d");
  43. contexto.drawImage(imagen,0,0);
  44. var datos = g.obtener_pixeles(canvas,contexto);
  45. //document.body.appendChild(canvas);
  46. /*
  47. if(cartel.nodos.canvas==undefined){
  48. cartel.nodos.canvas = [];
  49. cartel.nodos.canvas.push(canvas);
  50. }
  51. * */
  52. canvas.remove();
  53. return datos;
  54. };
  55. g.tiene_colores = function(cartel,imagen){
  56. var devuelve = [];
  57. g.puede_analizar = false;
  58. // console.log("tiene_colores",cartel,imagen);
  59. var d = [];
  60. try{
  61. g.puede_analizar = false;
  62. d = g.obtener_bytes(cartel,imagen);
  63. var total_factor_gris = 0;
  64. var cantidad_factores = 0;
  65. for(var i=0;i<d.length/Math.pow(7,2);++i){
  66. var j = Math.floor(Math.random()*d.length/4)*4;
  67. if(
  68. d[j+0]!=0&&d[j+0]!=255&&
  69. d[j+1]!=0&&d[j+1]!=255&&
  70. d[j+2]!=0&&d[j+2]!=255
  71. ){
  72. var factor_gris_1 = Math.abs(d[j]-d[j+1]);
  73. var factor_gris_2 = Math.abs(d[j]-d[j+2]);
  74. var factor_gris_3 = Math.abs(d[j+1]-d[j+2]);
  75. var factor_gris = factor_gris_1+factor_gris_2+factor_gris_3;
  76. total_factor_gris += factor_gris;
  77. ++cantidad_factores;
  78. }
  79. }
  80. devuelve = [
  81. total_factor_gris,
  82. total_factor_gris/cantidad_factores,
  83. cantidad_factores
  84. ];
  85. g.puede_analizar = true;
  86. }catch(e){
  87. devuelve = [0,NaN,0];
  88. }
  89. g.puede_analizar = true;
  90. return devuelve;
  91. };
  92.  
  93. /* Fin de análisis de imágenes */
  94.  
  95. g.tamaño_original = function(){
  96. g.carteles = Array.from(document.querySelectorAll(".demot-small"));
  97. g.carteles.map(function(x){
  98. x.attributes.class.value=".cartel";
  99. x.querySelector("a").setAttribute("target","_blank");
  100. x.querySelector(".img-small").attributes.class.value=".imagen";
  101. });
  102. };
  103. g.obtener_carteles = function(){
  104. var demotes = g.tener_css_todos(document,".demot");
  105. var carteles = g.filtrar_por_atributo(demotes,"id",/d\d+/);
  106. var es_usuario = false;
  107. if(carteles.length==0){
  108. carteles = g.tener_css_todos(document,".small");
  109. es_usuario = true;
  110. }
  111. return [es_usuario,carteles];
  112. };
  113.  
  114. g.carteles = g.obtener_carteles();
  115. g.es_usuario = g.carteles[0];
  116.  
  117. // console.log("carteles",g.carteles);
  118.  
  119. g.json_carteles = g.carteles[1].map(
  120. !g.es_usuario?function(x){
  121. // console.log("no es usuario");
  122. var enlace = x.querySelector("a");
  123. var imagen = x.querySelector("img");
  124. var título_nodo = x.querySelector(".demot-title");
  125. var etiquetas_nodo = x.querySelector(".wrap");
  126. var etiquetas_nodos = g.tener_css_todos(etiquetas_nodo,"a");
  127. var nombre_nodo = x.querySelector(".color0,.color1,.color2,.color3,.color4");
  128. var título_enlace = enlace.href.split("/").slice(-1)[0];
  129. var devuelve = {
  130. nodos: {
  131. cartel: x,
  132. título: título_nodo,
  133. etiquetas_nodo: etiquetas_nodo,
  134. etiquetas_nodos: etiquetas_nodos,
  135. nombre_nodo: nombre_nodo,
  136. imagen: imagen
  137. },
  138. textos: {
  139. alternativo: "",
  140. nombre: nombre_nodo.textContent,
  141. título: título_nodo.childNodes[0].textContent,
  142. título_enlace: título_enlace,
  143. detalles: "",
  144. analizado: false,
  145. etiquetas: etiquetas_nodos.map(function(x){return x.textContent;})
  146. }
  147. };
  148. // console.log("imagen",imagen);
  149. if(imagen){
  150. //devuelve.textos.tiene_colores = g.tiene_colores(devuelve,imagen);
  151. }
  152. return devuelve;
  153. }:function(x){
  154. // console.log("es usuario");
  155. var enlace = x.querySelector("a");
  156. var imagen = x.querySelector("img");
  157. var nombre_nodo = document.querySelector(".color0,.color1,.color2,.color3,.color4");
  158. var título_enlace = enlace.href.split("/").slice(-1)[0];
  159. var longitud_guión = " - ".length;
  160. var longitud_enlace = título_enlace.length;
  161. var índice_descripción = imagen && imagen.alt.indexOf(" - ");
  162. var índice_mayor = longitud_enlacendice_descripción?longitud_enlacendice_descripción;
  163.  
  164. var devuelve = {
  165. nodos: {
  166. cartel: x,
  167. enlace: enlace,
  168. nombre_nodo: nombre_nodo,
  169. imagen: imagen
  170. },
  171. textos: {
  172. nombre: nombre_nodo.textContent,
  173. título_enlace: título_enlace,
  174. índice_descripción: índice_descripción,
  175. índice_mayor: índice_mayor,
  176. alternativo: imagen && imagen.alt,
  177. título: imagen && imagen.alt.slice(0ndice_mayor),
  178. detalles: imagen && imagen.alt.slicendice_mayor+longitud_guión),
  179. analizado: false,
  180. etiquetas: []
  181. }
  182. };
  183. // console.log("imagen",imagen);
  184. if(imagen){
  185. //devuelve.textos.tiene_colores = g.tiene_colores(devuelve,imagen);
  186. }
  187. return devuelve;
  188. }
  189. );
  190.  
  191. g.procesar_lista = function(x){
  192. return x.split(/[\x20\x0a]+/g).filter(function(x){return x;});
  193. };
  194.  
  195. g.ocultar_carteles = function(){
  196. g.carteles_filtrados = g.json_carteles.filter(function(x){
  197. var textos = [
  198. x.textos.título,
  199. x.textos.detalles,
  200. x.textos.nombre
  201. ].concat(x.textos.etiquetas);
  202. var objeto_booleano = {
  203. booleano: false
  204. };
  205. g.prueba_regex = function(regex,objeto_booleano,textos){
  206. if(!objeto_booleano.booleano){
  207. for(var i=0;i<textos.length;++i){
  208. var z = textos[i];
  209. var coincide = regex.test(z);
  210. if(coincide){
  211. console.log(regex,z);
  212. objeto_booleano.booleano = true;
  213. i = textos.length;
  214. }
  215. }
  216. }
  217. return objeto_booleano;
  218. };
  219. g.lista_filtros.contiene.map(function(y){
  220. var w = y.replace(/-/g," ");
  221. var regex = new RegExp(w,"i");
  222. g.prueba_regex(regex,objeto_booleano,textos);
  223. });
  224. g.lista_filtros.completas.map(function(y){
  225. var w = y.replace(/-/g," ");
  226. var regex = new RegExp("\\b"+w+"\\b","i");
  227. g.prueba_regex(regex,objeto_booleano,textos);
  228. });
  229. if( x.textos.título && (x.textos.título.toUpperCase()==x.textos.título) ){
  230. objeto_booleano.booleano = true;
  231. }
  232. // console.log("objeto_booleano",objeto_booleano)
  233. return objeto_booleano.booleano;
  234. });
  235. g.carteles_filtrados.map(function(x){
  236. x.nodos.cartel.remove();
  237. // x.nodos.cartel.style.display = "none";
  238. });
  239. var facebook_banner = document.querySelector("#fb-root");
  240. var facebook_2 = document.querySelector("#likebox");
  241. console.log("facebook_banner",facebook_banner);
  242. console.log("facebook_banner 2",facebook_2);
  243. var eliminar_banner_facebook = facebook_banner && facebook_banner.remove();
  244. var eliminar_facebook_2 = facebook_2 && facebook_2.remove();
  245. Array.from(document.querySelectorAll(".demot>div br")).map(function(x){x.remove();});
  246. };
  247.  
  248. g.esperar_análisis = [];
  249. g.analizados = 0;
  250.  
  251. g.intervalo_NaN = setInterval(function(){
  252. var i = 0;
  253. g.json_carteles.map(function(x){
  254. if(x.textos.analizado==false){
  255. if(!g.esperar_análisis.includes(i)){
  256. g.esperar_análisis.push(i);
  257. }
  258. }else{
  259. if(x.nodos.cartel){
  260. x.nodos.cartel.style["background-color"] = "#000000e0";
  261. }
  262. }
  263. ++i;
  264. });
  265. },50);
  266.  
  267. setTimeout(function(){
  268. g.intervalo_análisis = setInterval(function(){
  269. if(g.puede_analizar==undefined){
  270. g.puede_analizar = true;
  271. }
  272. if(g.puede_analizar){
  273. if(g.esperar_análisis.length>0){
  274. g.puede_analizar = false;
  275. var índice_aleatorio = Math.floor(Math.random()*g.esperar_análisis.length);
  276. var y = g.esperar_análisisndice_aleatorio];
  277. var x = g.json_carteles[y];
  278. var color100 = (100+Math.random()*100)%100;
  279. x.nodos.cartel.style["background-color"]="#4020ffe0";
  280. var tiene = g.tiene_colores(x,x.nodos.imagen);
  281. if(!isNaN(tiene[1])){
  282. if(tiene[1]<27){
  283. console.log("borrado",tiene,x.textos.título/*,x.nodos.canvas*/);
  284. x.nodos.cartel.remove();
  285. //document.querySelector("#tag-cloud").appendChild(x.nodos.canvas.slice(-1)[0]);
  286. }else{
  287. console.log("permanece",tiene,x.textos.título/*,x.nodos.canvas*/);
  288. }
  289. x.textos.analizado = true;
  290. ++g.analizados;
  291. g.esperar_análisis = (
  292. g.esperar_análisis.slice(0ndice_aleatorio).concat(
  293. g.esperar_análisis.slicendice_aleatorio+1)
  294. )
  295. );
  296. }else{
  297. x.nodos.cartel.style["background-color"]="#ff"+color100+"20e0";
  298. }
  299. x.textos.tiene_colores = tiene.join(" ");
  300. g.puede_analizar = true;
  301. }else{
  302. if(g.analizados>=g.json_carteles.length){
  303. clearInterval(g.intervalo_NaN);
  304. }
  305. clearInterval(g.intervalo_análisis);
  306. console.log("Análisis completado");
  307. }
  308. }else{
  309. console.log("Cartel ocupado");
  310. }
  311. },900);
  312. },6000);
  313.  
  314. document.body.addEventListener("keyup", function(event){
  315. if (event.key.toLowerCase()=="s"){
  316. event.preventDefault();
  317. document.querySelector("a[rel='next']").click();
  318. }
  319. });
  320.  
  321. g.agregar_botones_páginas = function(){
  322. var páginas = document.querySelector(".page-links");
  323. if(páginas){
  324. páginas.style.height = (30*9) + "px";
  325. var página_actual = +location.href.split("/").slice(-1)[0];
  326. var lista_números = [
  327. 1,2,3,5
  328. , 10,20,30,50
  329. , 100,200,300,500
  330. , 1000,2000,3000,5000
  331. , 10000,20000,30000,50000
  332. ,100000,200000,300000,500000
  333. ].map(function(x){
  334. for(var i=0;i<2;++i){
  335. var y = i==0?x:-x;
  336. var sm = página_actual + y;
  337. if(sm>0){
  338. var a = document.createElement("a");
  339. a.innerHTML = (i==0?"+":"-") + x + " "+ sm;
  340. a.href = "/cola/" + sm;
  341. a.className = "page page3 page-inactive";
  342. páginas.appendChild(a);
  343. }
  344. }
  345. })
  346. }
  347. }
  348.  
  349. g.agregar_botones_opciones = function(){
  350. var div = document.createElement("div");
  351. div.style.position = "fixed";
  352. div.style.top = "100px";
  353. div.style.left = "10px";
  354. var subdiv = document.createElement("div");
  355. var botón = document.createElement("button");
  356. var b = document.createElement("b");
  357. var botones = [
  358. ["block","desplazador","0","x",[
  359. ["click",function(x){
  360. var elementos = Array.from(document.querySelectorAll(".menú"));
  361. var muestra = elementos[0].style.display == "block";
  362. if(muestra){
  363. elementos.map(function(x){
  364. x.style.display = "none";
  365. return x;
  366. })
  367. }else{
  368. elementos.map(function(x){
  369. x.style.display = "block";
  370. return x;
  371. })
  372. }
  373. return x;
  374. }],
  375. ["mouseenter",function(x){
  376. document.querySelector(".desplazador").style.opacity = "1";
  377. var elementos = Array.from(document.querySelectorAll(".menú"));
  378. elementos.map(function(x){
  379. x.style.opacity = "1";
  380. return x;
  381. })
  382. return x;
  383. }],
  384. ["mouseleave",function(x){
  385. document.querySelector(".desplazador").style.opacity = "0";
  386. var elementos = Array.from(document.querySelectorAll(".menú"));
  387. elementos.map(function(x){
  388. x.style.opacity = "0";
  389. return x;
  390. })
  391. return x;
  392. }]
  393. ]],
  394. ["none","menú","1","Hola",[
  395. ["click",function(x){
  396. console.log(x)
  397. }]
  398. ]]
  399. ].map(function(x){
  400. var subdiv = document.createElement("div");
  401. var botón = document.createElement("button");
  402. var b = document.createElement("b");
  403. subdiv.style.display = x[0];
  404. subdiv.classList.add(x[1]);
  405. subdiv.style.opacity = x[2];
  406. b.innerHTML = x[3];
  407. botón.style["color"] = "#ffffffe0";
  408. botón.style["background-color"] = "#007f00e0";
  409. x[4].map(function(x){
  410. subdiv.addEventListener(x[0],x[1])
  411. })
  412. botón.appendChild(b);
  413. subdiv.appendChild(botón);
  414. div.appendChild(subdiv);
  415. });
  416. document.querySelector("body").appendChild(div)
  417. }
  418.  
  419. g.lista_filtros = {
  420. contiene: g.procesar_lista(`
  421. nuevo-año año-nuevo
  422. anonuevo nuevoano navidad nabida
  423. dinero guapo
  424. whisky troll stupid
  425. porn coj sex nalg webo fetich mamad vagin fuck scroto
  426. abortat perv
  427. genocid
  428. bolud pelotud idiota
  429. testícul testicul
  430. suscrib
  431. confía confia
  432. mierd
  433. joto laucha patada
  434. weon weón weona
  435. puta
  436. pho
  437. pokemon monster covid smith smok shin furro
  438. messi fred tenn auron
  439. emerit
  440. facebook poke
  441. novia hija gata
  442. novio hijo gato
  443. caga cumea trolea tortura
  444. cago cumeo troleo torturo
  445. nazi
  446. `), completas: g.procesar_lista(`
  447. coca-cola paco-y-yo feliz-vanidad pana-miguel punto-g me-corrí
  448. mario-bros
  449. cocacola
  450. amo amor desamor
  451. ligar machista
  452. cordura
  453. dinero dinerito
  454. moco mocos mocoso
  455. nochebuena
  456. cumpleanos cumpleaños
  457. distanciado distanciamiento punzada pandemia coronavirus
  458. matar funar
  459. autismo
  460. loli hentai onichan
  461. uwu nya nyu unu
  462. simp
  463. maricon maricón
  464. chupalo forro
  465. culiao tonto
  466. mamon mamón
  467. wtf
  468. watafac watafak watefac watefak guatafac guatafak
  469. watafoc watafok watefoc watefok guatafoc guatafok
  470. wotafac wotafak wotefac wotefak guotafac guotafak
  471. wotafoc wotafok wotefoc wotefok guotafoc guotafok
  472. wtefak wtefok
  473. follar folle follé follador
  474. beso besos besar besando
  475. celo celos
  476. abrazo abrazos
  477. rey reina reino
  478. teta tetas tetón tetona
  479. cum polla verga pene dildo
  480. caca culo orto ass
  481. pedo pedofilo pedófilo
  482. cachondo
  483. ano chingas
  484. grasoso
  485. gay gays gey geys gei geis
  486. pajas capaja tangas pajero pijas joto ostias china chinos pete
  487. paja capajas tanga pajeros pija jotos ostia chinas chino petes
  488. puta putas pucha puchas
  489. puto putos pucho puchos
  490. tonta tontas parida paridas chinga marica mariconas chota coña coñas
  491. tonto tontos parido paridos chingo marico maricones choto coño coños
  492. asco asquea asqueao
  493. chori choripan choripán
  494. alcohol licor
  495. ingles inglés lovelive starwars
  496. night moon
  497. fire sun
  498. rich under cake park guitar hi cringe fock chocolat how what kinder
  499. music death glad light but white foot
  500. among universe bimbo naruto vegetto fortnite zelda dragonball
  501. sonic puercoespin
  502. spidiman blastoise volvasor
  503. disney mickey mike clarence
  504. jake freddie brad luigi anne soros ben dalas cabrera harry vladimir lil
  505. cerati dross goku
  506. isabella perry
  507. fernan fernanfloo
  508. messi mesi
  509. sovietico soviético militares
  510. carajo carajos
  511. pipí puber
  512. cristo jesus jesús jesucristo dios vaticano
  513. resurreccion resurrección
  514. amen amén
  515. bad god good
  516. satan satán
  517. larreta willyrex yoshi rubius
  518. lacra
  519. 20\\d{2}
  520. `)
  521. };
  522.  
  523. g.ocultar_carteles();
  524. g.tamaño_original();
  525. g.agregar_botones_páginas();
  526. g.agregar_botones_opciones();