Esta entrada ha estado macerando en el disco duro durante un buen tiempo. Cubre un tema que no me gusta y que me convierte, a mis tiernos ojos, en algo que tampoco me gusta: un censurador. La excusa, nosotros contra ellos.
Ellos son, esta vez, las empresas. Centrémonos en una empresa periodística. Transparente en casi todos sus aspectos. Con buen contenido, casi siempre. Esos “casis” aparecen por todas partes, en todos los aspectos de nuestras vidas. Pero esta empresa concreta se metió en un jardín: hazte socio y no verás publicidad. Casi. En su afán por conseguir contenido han perdido el control sobre lo que publican. O esa es la impresión que dan.
Uno es cinéfago desde jovencito. Y, por extensión, seriéfago. En el susodicho medio apareció una columna sobre series y, allá fuí de cabeza. Apareció, además, justo después de que una de las mejores columnas diarias sobre el tema desapareciese tras una pasarela de pago (otra empresa, pero esta no oculta que lo es). Y lo que me encontré fue un gran anuncio de Movistar. No en la cabecera, que también, si no en el contenido. Columnas pilladas por los pelos para poder anunciar el día de emisión de series y programas que apenas tienen que ver con el tema de la misma.
Rebobinemos un poco más en el tiempo. La promesa de los periódicos del futuro: configura tu propia portada. Sigue siendo una promesa y lo seguirá siendo por los siglos de los siglos. Hablamos de empresas que quieren capturar ojos. No hay manera de que la portada que aparece en nuestros lectores (del tamaño, forma o sabor que sean) varíe de lo que la empresa decide. Excepto eliminando el contenido que no queremos ver.
Sumemos el cabreo por la publicidad con la idea de poder espigar la información del ruido y sale FilterOut, uno de esos side-projects que rondan la mollera hasta que un largo fin de semana permite llevarlos a cabo. Una extensión de Google Chrome para, directamente, borrar de nuestro navegador el contenido que no queremos ver por la razón que sea. En este caso un anuncio camuflado como columna de opinión, pero se puede aplicar a todo tipo de contenido estructurado: por ejemplo, eliminar de los resultados de una página de empleo los anuncios publicados por determinadas cárnicas.
La clave para que FilterOut funcione es precísamente esa: el contenido estructurado. A medio camino entre la web semántica –donde el contenido viene etiquetado para consumo de los ordenadores– y la necesidad de aplicar estilos para que aquello quede mono, cada página utiliza determinados marcadores para identificar las partes del contenido.
Por ejemplo, es habitual en los periódicos online, usar la clase “byline” para indicar quien firma un artículo. Herencia del periodismo de papel. En otras páginas la relación entre la clase y el contenido es inexistente. En cierto portal de empleo, por ejemplo, utilizan la clase “ellipsis” para marcar a la empresa que publica un anuncio. Pero, al final, cada parte de una entrada puede ser identificada con un selector. Incidentalmente, mientras empezaba a darle vueltas a la extensión, el medio estaba cambiando su diseño. A pesar de que nunca respondieron a preguntas directas sobre los publirreportajes si que fueron corrigiendo los errores en sus clases, casualmente, al tiempo que los iba publicando en mi cuenta de Twitter.
Volviendo al tema… ¿Qué es eso de un selector? En dos palabras, la forma que tienen los navegadores de identificar uno o más elementos en función de su identificador, el tipo de elemento, la clase o clases que se aplican o una combinación de todo lo anterior.
Por ejemplo, “span .signature” identifica a todos los elementos de tipo “span” que tienen la clase “signature” y pasando “.byline a” como parámetro al método adecuado del navegador devuelve los enlaces dentro de elementos, del tipo que sean, con la clase “byline”. El selector “#content .section .bottom ul li .test3” identifica a la línea con la clase “test 3” en la lista situada dentro de un elemento con clase “bottom” dentro de un elemento con clase “section” dentro del elemento con identificador “content”. Este último ejemplo es complejo y claramente necesitado de un refactoring, pero queda claro lo que se puede hacer con esto de los selectores: seleccionar el contenido concreto que queremos dentro de una web.
Usando selectores es fácil diseñar un sistema que identifique, por ejemplo, a todos los autores que publican en un periódico o a las cárnicas que se dedican a recolectar currículums. E identificar, además, cuál es el elemento que “envuelve” el artículo o la oferta. Con estos dos elementos –que en el contexto de la extensión son el Target y el Container respectivamente– identificados es simple escribir un poco de código que permita, primero identificar los Targets y, después, eliminar los Containers que incluyan los Targets que no queremos mostrar. De hecho, la parte que hace todo el trabajo duro no son más de veinticinco líneas de código divididas en dos métodos.
El resultado es una extensión que, tras un poco de investigación en la estructura de la página a filtrar usando las Herramientas para desarrolladores del navegador, permite ocultar el contenido que no me interesa ver. El código completo está disponible en github, libre para ser usado, abusado, modificado… En Google Chrome se pueden instalar extensiones “no empaquetadas”, seleccionando el directorio donde se encuentra el código de la misma en nuestro disco.
En una futurible segunda parte explicaré el proceso de crear una extensión de Google Chrome y lo divertido de tener que trabajar con una instancia distinta del depurador en cada parte de la misma.