Introducción

Las herramientas de Convoyrama no solo crean imágenes visuales, sino que también incrustan metadatos estructurados (JSON) dentro de los archivos PNG generados. Esto permite que bots de Discord y otras aplicaciones lean la información directamente desde la imagen sin necesidad de OCR.

¿Cómo funciona?

Los datos se almacenan en un chunk auxiliar de tipo tEXt dentro de la estructura del PNG. Usamos claves específicas (Keywords) para diferenciar el tipo de contenido.

1. Datos de Licencia

Utilizado por el generador de licencias (id.html).

KEYWORD convoyrama-data

Estructura JSON

{
  "name": "Nombre del Usuario",
  "license_number": "UY12345",
  "country": "UY", // Código ISO de 2 letras
  "rank": 5, // Nivel calculado (1-12)
  "is_verified": true, // Validado con API de TruckersMP
  "tmp_join_date": "2020-01-15 14:30:00"
}

2. Datos de Evento

Utilizado por el creador de eventos (event.html).

KEYWORD convoyrama-event-data

Estructura JSON

{
  "eventName": "Gran Convoy Semanal",
  "server": "Simulation 1",
  "meetingTimestamp": 1704067200, // Unix Timestamp
  "departureTimestamp": 1704068100
}

Ejemplo en Node.js

Usa png-chunk-text para leer estos datos:

const extract = require('png-chunks-extract');
const text = require('png-chunk-text');

// Extraer chunks de texto
const textChunks = chunks
    .filter(chunk => chunk.name === 'tEXt')
    .map(chunk => text.decode(chunk.data));

// Buscar nuestra keyword
const eventData = textChunks.find(c => c.keyword === 'convoyrama-event-data');