Unificando la información de eventos de una comunidad: vigotech.json

Unificando la información de eventos de una comunidad: vigotech.json

VigoTech Alliance la comunidad que aglutina a los grupos de tecnología de Vigo y su área de influencia, tiene entre uno de sus objetivos coordinar y divulgar las fechas de los eventos de cada uno de los grupos miembros.

En el momento de escribir esta entrada tiene 18 grupos miembros, que funcionan de forma autónoma a la hora de organizar meetups, eventos, charlas, etc, lo que hace que a la hora de mantener la información de los eventos actualizada de forma manual sea una tarea complicada.

Teniendo en cuanta que la mayoría de los grupos usan plataformas para crear y publicitar sus eventos (mayoritariamente Meetup) surgió la idea de automatizar la recogida de información de los eventos y servirla en lugar único para que pudiese ser consultada de forma sencilla por cualquiera, y ya puestos, ¿por qué excluir a las máquinas de esto?

De aquí nació la idea de crear un archivo (vigotech.json) colgado en el servidor de la web, que sirviese como fuente de información de VigoTech, de sus miembros, sus eventos, sus videos, etc.

Pero por hacerlo un poco mejor se dotó a dicho fichero de un esquema (JSON Schema) que permitiese validarlo.

Resumiendo la estructura, partimos de un nodo raíz que es el propio meta grupo VigoTech y que tiene como propiedades cosas como, el logo, los links a web y redes sociales y sus propios eventos (si, eventos que son de todo el meta grupo y no de un grupo concreto) y lo más importante los miembros.

Los miembros son también objectos cuyas propiedades son similares a la anterior, añadiendo los videos.

"aindustriosa": {
  "name": "A Industriosa",
  "logo": "https://vigotech.org/images/aindustriosa.png",
  "links": {
    "web": "https://aindustriosa.org/",
    "twitter": "https://twitter.com/aindustriosa",
    "meetup": "https://www.meetup.com/es-ES/AIndustriosa/",
    "youtube": "https://www.youtube.com/channel/UC9DPKfcLiNd7SEU-QLlIG7A"
  },
  "events": [
    {
      "type": "meetup",
      "meetupid": "AIndustriosa"
    }
  ],
  "videos": [
    {
      "type": "youtube",
      "channel_id": "UC9DPKfcLiNd7SEU-QLlIG7A"
    }
  ]
},

Como podéis observar en los eventos y videos, no se indican realmente los eventos, sino la o las fuentes de donde extraer los eventos. En el ejemplo vemos que solo tenemos una fuente de eventos de tipo “meetup” y que el “meetupid” es “AIndustriosa”, lo mismo para los videos.

Esta sistema nos permite flexibilidad de ir añadiendo “fuentes” de eventos, como realmente hemos hecho.

De lo abstracto a lo real

Si bien, esta definición resuelve en parte el problema planteado de unificar la información, pero lo que realmente queremos es obtener los eventos de cada grupo y sus videos, no solo el sitio de donde obtenerlos.

Para ello solo tendríamos que crear un script o app en cualquier lenguaje que se encargue de procesar vigotech.json para obtener esa información.

Pues bien, eso ya está hecho: Metagroup schema tools , una herramienta escrita en JS (y también disponible como paquete NPM) que se encarga de validar y procesar vigotech.json para generar un nuevo json con toda la información ya “mascada”, generando algo como lo que hace la web de vigotech: vigotech-generated.json

La herramienta actualmente admite como fuentes de eventos: Meetup, Eventbrite y otro json, como en este ejemplo)

La principal ventaja de esta infraestructura es que una vez que tenemos un centro de información podemos usarla de mucha formas, en los ejemplos he mencionado la web de VigoTech, pero tenemos otra herramienta vigotech-event-bot que es un sencillo bot que se encarga de publicar en twitter los eventos y que obtiene toda la información a partir del vigotech.json

Por ejemplo actualmente sé está desarrollando un nuevo bot desarrollado en PHP que publica los eventos en Twitter, Slack y Telegram. La posibilidades son casi infinitas.

Pensad el esfuerzo que supondría mantener un calendario común, una web actualizada al minuto, las publicaciones en redes sociales, si tuviese que hacerse de forma manual. Sería un esfuerzo titánico.

Para cerrar el post solo dar las gracias a VigoTech por lo que supone para Vigo y Galicia en cuanto difusión de la tecnología y por permitirme ser miembro y participar de forma activa en esta comunidad.