Filtrar carteles con palabras en Desmo

Ocultar carteles que tengan ciertas palabras en Desmo

Verzia zo dňa 09.01.2021. Pozri najnovšiu verziu.

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

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

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

window.json_carteles = window.carteles[1].map(
    !window.es_usuario?function(x){
		var enlace = x.querySelector("a");
        var título_nodo = x.querySelector(".demot-title");
        var etiquetas_nodo = x.querySelector(".wrap");
        var etiquetas_nodos = window.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];
        return {
            nodos: {
                cartel: x,
                título: título_nodo,
                etiquetas_nodo: etiquetas_nodo,
                etiquetas_nodos: etiquetas_nodos,
                nombre_nodo: nombre_nodo
            },
            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;})
            }
        };
    }:function(x){
        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.alt.indexOf(" - ");
        var índice_mayor = longitud_enlace>índice_descripción?longitud_enlace:índice_descripción;
        return {
            nodos: {
                cartel: x,
                enlace: enlace,
                imagen: imagen,
                nombre_nodo: nombre_nodo
            },
            textos: {
                alternativo: imagen.alt,
                nombre: nombre_nodo.textContent,
                título_enlace: título_enlace,
                índice_descripción: índice_descripción,
                índice_mayor: índice_mayor,
                título: imagen.alt.slice(0,índice_mayor),
                detalles: imagen.alt.slice(índice_mayor+longitud_guión),
                etiquetas: [],
            }
        };
    }
);

window.procesar_lista = function(x){
	return x.split(/\s{2,}|,|\n/g).filter(function(x){return x;});
};

window.ocultar_carteles = function(){
	window.carteles_filtrados = window.json_carteles.filter(function(x){
		var textos = [
            x.textos.título
            ,x.textos.detalles
            ,x.textos.nombre
        ].concat(x.textos.etiquetas);
		var booleano = false;
		window.lista_filtros.contiene.map(function(y){
			var regex = new RegExp(y,"i");
			textos.map(function(z){
				booleano = regex.test(z)?true:booleano;
			});
		});
		window.lista_filtros.completas.map(function(y){
			var regex = new RegExp("\\b"+y+"\\b","i");
			textos.map(function(z){
				booleano = regex.test(z)?true:booleano;
			});
		});
		booleano = x.textos.título.toUpperCase()==x.textos.título?true:booleano;
		return booleano;
	});

	window.carteles_filtrados.map(function(x){
		x.nodos.cartel.remove();
	});
}

window.lista_filtros = {
    contiene: window.procesar_lista(`
nuevo año,año nuevo,anonuevo,nuevoano,navidad
dinero,guapo
whisky,troll,stupid
porn,coj,sex,nalg,webo,fetich,mamad
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
messi
emerit
facebook,poke
novia,hija,gata
novio,hijo,gato
caga,cumea,trolea,tortura
cago,cumeo,troleo,torturo
nazi
    `),
    completas: window.procesar_lista(`
amo,amor,desamor
dinero,dinerito
moco,mocos,mocoso
nochebuena
paco y yo,feliz vanidad
distanciamiento,punzada
matar,autismo
loli
uwu,nya,onichan
maricon,maricón
culiao,tonto
mamon,mamón
follador
beso,besos,celo,celos,abrazo,abrazos
rey,reina,reino
teta,tetas,tetón,tetona
cum,polla,verga,pene
culo,caca,orto,pedo
ano,chingas
gay,gays,gey,geys
paja,tangas,pajero,pijas,joto,ostias,china,chinos
pajas,tanga,pajeros,pija,jotos,ostia,chinas,chino
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
cocacola,coca cola
lovelive,starwars
fire,rich,under,cake,park,guitar,hi,cringe,fock,chocolat,how,night,what,kinder
among,universe,bimbo,naruto,vegetto,sonic,fortnite,mickey,zelda
jake,freddie,brad,luigi,anne,soros,ben,dalas
messi,mesi
sovietico,soviético
carajo,carajos
pipí,puber
cristo,jesus,jesús,jesucristo,dios
resurreccion,resurrección
amen,amén
bad,god,good
satan,satán
larreta,willyrex,yoshi,rubius
lacra
20\\d{2}
    `)
};

window.ocultar_carteles();
window.tamaño_original();