Sleazy Fork is available in English.

Filtrar carteles con palabras en Desmo

Ocultar carteles que tengan ciertas palabras en Desmo

Versión del día 11/1/2021. Echa un vistazo a la versión más reciente.

// ==UserScript==
// @name         Filtrar carteles con palabras en Desmo
// @version      0.10.2
// @description  Ocultar carteles que tengan ciertas palabras en Desmo
// @author       ArtEze
// @match        *://desmotivaciones.es/*
// @grant        none
// @namespace    http://tampermonkey.net/
// ==/UserScript==

var g = {};
window.g = g;

g.tener_css_todos = function(nodo,css){
    return Array.from(nodo.querySelectorAll(css));
};
g.concatenar_arrays = function(a,b){
    return a.concat(b);
};
g.filtrar_por_atributo = function(nodo,atributo,regex){
    return nodo.filter(function(x){
        return x.attributes[atributo] && regex.test(x.attributes[atributo].value);
    });
};

/* Comienzo de análisis de imágenes */

g.obtener_pixeles = function(canvas,contexto){
    var datos_imagen = {};
    datos_imagen = contexto.getImageData(
        0,0,canvas.width,canvas.height
    );
    var bytes = datos_imagen.data;
    return bytes;
};
g.obtener_bytes = function(cartel,imagen){
	// console.log("obtener_bytes",cartel,imagen);
    var canvas = document.createElement("canvas");
    imagen.setAttribute("crossOrigin","");
    canvas.width = imagen.width;
    canvas.height = imagen.height;
    var contexto = canvas.getContext("2d");
    contexto.drawImage(imagen,0,0);
    var datos = g.obtener_pixeles(canvas,contexto);
    //document.body.appendChild(canvas);
    /*
    if(cartel.nodos.canvas==undefined){
        cartel.nodos.canvas = [];
        cartel.nodos.canvas.push(canvas);
    }
    * */
    canvas.remove();
    return datos;
};
g.tiene_colores = function(cartel,imagen){
    // console.log("tiene_colores",cartel,imagen);
    var d = [];
    try{
        d = g.obtener_bytes(cartel,imagen);
    }catch(e){
        try{
            d = g.obtener_bytes(cartel,imagen);
        }catch(e){
        }
    }
    var total_factor_gris = 0;
    var cantidad_factores = 0;
    for(var i=0;i<d.length;i+=4){
        if(
            d[i+0]!=0&&d[i+0]!=255&&
            d[i+1]!=0&&d[i+1]!=255&&
            d[i+2]!=0&&d[i+2]!=255
        ){
            var factor_gris_1 = Math.abs(d[i]-d[i+1]);
            var factor_gris_2 = Math.abs(d[i]-d[i+2]);
            var factor_gris_3 = Math.abs(d[i+1]-d[i+2]);
			var factor_gris = factor_gris_1+factor_gris_2+factor_gris_3;
			total_factor_gris += factor_gris;
			++cantidad_factores;
        }
    }
    return [
        total_factor_gris,
        total_factor_gris/cantidad_factores,
        cantidad_factores
    ];
};

/* Fin de análisis de imágenes */

g.tamaño_original = function(){
    g.carteles = Array.from(document.querySelectorAll(".demot-small"));
    g.carteles.map(function(x){
        x.attributes.class.value=".cartel";
        x.querySelector("a").setAttribute("target","_blank");
        x.querySelector(".img-small").attributes.class.value=".imagen";
    });
};
g.obtener_carteles = function(){
    var demotes = g.tener_css_todos(document,".demot");
    var carteles = g.filtrar_por_atributo(demotes,"id",/d\d+/);
    var es_usuario = false;
    if(carteles.length==0){
        carteles = g.tener_css_todos(document,".small");
        es_usuario = true;
    }
    return [es_usuario,carteles];
};

g.carteles = g.obtener_carteles();
g.es_usuario = g.carteles[0];

// console.log("carteles",g.carteles);

g.json_carteles = g.carteles[1].map(
    !g.es_usuario?function(x){
		// console.log("no es usuario");
        var enlace = x.querySelector("a");
        var imagen = x.querySelector("img");
        var título_nodo = x.querySelector(".demot-title");
        var etiquetas_nodo = x.querySelector(".wrap");
        var etiquetas_nodos = g.tener_css_todos(etiquetas_nodo,"a");
        var nombre_nodo = x.querySelector(".color0,.color1,.color2,.color3,.color4");
        var título_enlace = enlace.href.split("/").slice(-1)[0];
        var devuelve = {
            nodos: {
                cartel: x,
                título: título_nodo,
                etiquetas_nodo: etiquetas_nodo,
                etiquetas_nodos: etiquetas_nodos,
                nombre_nodo: nombre_nodo,
                imagen: imagen
            },
            textos: {
                alternativo: "",
                nombre: nombre_nodo.textContent,
                título: título_nodo.childNodes[0].textContent,
                título_enlace: título_enlace,
                detalles: "",
                etiquetas: etiquetas_nodos.map(function(x){return x.textContent;})
            }
        };
        // console.log("imagen",imagen);
        if(imagen){
            devuelve.textos.tiene_colores = g.tiene_colores(devuelve,imagen);
        }
        return devuelve;
    }:function(x){
        // console.log("es usuario");
        var enlace = x.querySelector("a");
        var imagen = x.querySelector("img");
        var nombre_nodo = document.querySelector(".color0,.color1,.color2,.color3,.color4");
        var título_enlace = enlace.href.split("/").slice(-1)[0];
        var longitud_guión = " - ".length;
        var longitud_enlace = título_enlace.length;
        var índice_descripción = imagen && imagen.alt.indexOf(" - ");
        var índice_mayor = longitud_enlace>índice_descripción?longitud_enlace:índice_descripción;

        var devuelve = {
            nodos: {
                cartel: x,
                enlace: enlace,
                nombre_nodo: nombre_nodo,
                imagen: imagen
            },
            textos: {
                nombre: nombre_nodo.textContent,
                título_enlace: título_enlace,
                índice_descripción: índice_descripción,
                índice_mayor: índice_mayor,
                alternativo: imagen && imagen.alt,
                título: imagen && imagen.alt.slice(0,índice_mayor),
                detalles: imagen && imagen.alt.slice(índice_mayor+longitud_guión),
                etiquetas: []
            }
        };
        // console.log("imagen",imagen);
        if(imagen){
            devuelve.textos.tiene_colores = g.tiene_colores(devuelve,imagen);
        }
        return devuelve;
    }
);

g.procesar_lista = function(x){
    return x.split(/[\x20\x0a]+/g).filter(function(x){return x;});
};

g.ocultar_carteles = function(){
    g.carteles_filtrados = g.json_carteles.filter(function(x){
        var textos = [
            x.textos.título,
            x.textos.detalles,
            x.textos.nombre
        ].concat(x.textos.etiquetas);
        var objeto_booleano = {
			booleano: false
		};
        g.prueba_regex = function(regex,objeto_booleano,textos){
			if(!objeto_booleano.booleano){
				for(var i=0;i<textos.length;++i){
					var z = textos[i];
					var coincide = regex.test(z);
					if(coincide){
						console.log(regex,z);
						objeto_booleano.booleano = true;
						i = textos.length;
					}
				}
			}
			return objeto_booleano;
		};
        g.lista_filtros.contiene.map(function(y){
            var w = y.replace(/-/g," ");
            var regex = new RegExp(w,"i");
            g.prueba_regex(regex,objeto_booleano,textos);
        });
        g.lista_filtros.completas.map(function(y){
            var w = y.replace(/-/g," ");
            var regex = new RegExp("\\b"+w+"\\b","i");
            g.prueba_regex(regex,objeto_booleano,textos);
        });
        if( x.textos.título && (x.textos.título.toUpperCase()==x.textos.título) ){
			objeto_booleano.booleano = true;
		}
		// console.log("objeto_booleano",objeto_booleano)
        return objeto_booleano.booleano;
    });
    g.carteles_filtrados.map(function(x){
        x.nodos.cartel.remove();
        // x.nodos.cartel.style.display = "none";
    });
    var facebook_banner = document.querySelector("#fb-root");
    console.log("facebook_banner",facebook_banner);
    var eliminar_banner_facebook = facebook_banner && facebook_banner.remove();
    setTimeout(function(){
        var carteles = [];
        g.json_carteles.map(function(x){
            var tiene = g.tiene_colores(x,x.nodos.imagen);
            carteles.push([tiene,x]);
            if(tiene[1]<9){
                console.log("borrado",tiene,x/*,x.nodos.canvas*/);
                x.nodos.cartel.remove();
                //document.querySelector("#tag-cloud").appendChild(x.nodos.canvas.slice(-1)[0]);
            }
            x.nodos.cartel.style["background-color"]="#000000e0"
            return tiene;
        });
        console.log(carteles);
    },5000);
};

g.lista_filtros = {
    contiene: g.procesar_lista(`
nuevo-año año-nuevo
anonuevo nuevoano navidad
dinero guapo
whisky troll stupid
porn coj sex nalg webo fetich mamad vagin
abortat perv
bolud pelotud idiota
testícul testicul
suscrib
confía confia
mierd
joto laucha patada
weon weón weona
pokemon monster covid smith smok shin furro
messi,fred
emerit
facebook poke
novia hija gata
novio hijo gato
caga cumea trolea tortura
cago cumeo troleo torturo
nazi
`), completas: g.procesar_lista(`
coca-cola paco-y-yo feliz-vanidad pana-miguel punto-g
cocacola
amo amor desamor
dinero dinerito
moco mocos mocoso
nochebuena
cumpleanos cumpleaños
distanciamiento punzada pandemia
matar autismo
loli hentai
uwu nya onichan nyu
simp
maricon maricón
culiao tonto
mamon mamón
follador
beso besos besar besando
celo celos
abrazo abrazos
rey reina reino
teta tetas tetón tetona
cum polla verga pene dildo
culo caca orto pedo pedofilo pedófilo
cachondo
ano chingas
gay gays gey geys
pajas capaja tangas pajero pijas joto ostias china chinos pete
paja capajas tanga pajeros pija jotos ostia chinas chino petes
puta putas pucha puchas
puto putos pucho puchos
tonta tontas parida paridas chinga marica mariconas chota
tonto tontos parido paridos chingo marico maricones choto
asco asquea asqueao
chori choripan choripán
alcohol licor
ingles inglés lovelive starwars
night moon
fire sun
rich under cake park guitar hi cringe fock chocolat how what kinder
music death glad light
among universe bimbo naruto vegetto sonic fortnite zelda dragonball
spidiman
mickey mike disney
jake freddie brad luigi anne soros ben dalas cabrera harry vladimir
isabella perry
fernan fernanfloo
messi mesi
sovietico soviético militares
carajo carajos
pipí puber
cristo jesus jesús jesucristo dios vaticano
resurreccion resurrección
amen amén
bad god good
satan satán
larreta willyrex yoshi rubius
lacra
20\\d{2}
    `)
};
g.ocultar_carteles();
g.tamaño_original();