Semana del 11 al 17 de mayo de 2026
Resumen: Una semana de ingeniería intensa: los mapas meteorológicos del modelo ICON-EU dejan de generarse en la nube y pasan a producirse en casa, el pipeline de previsiones de cuatro días queda reparado de arriba abajo, y el streaming deja de depender de que la API de YouTube esté de humor.
🗺️ Los mapas de ICON-EU ya viven en casa
Hasta esta semana, los mapas de temperatura, viento y nubosidad sobre España se generaban en Google Cloud Run: la máquina pedía los datos, los procesaba en contenedores y devolvía los vídeos al bucket. Funcionaba, pero era un eslabón frágil y caro. La migración que llevaba semanas en el ROADMAP ya está hecha.
Ahora el ordenador de casa descarga directamente los análisis y predicciones del modelo ICON-EU (Icosahedral Nonhydrostatic, el modelo de alta resolución del servicio meteorológico alemán DWD, a unos 6,5 km de malla), genera los tres mapas localmente y los deja listos en la carpeta de espera para el post-proceso. El Task Scheduler lanza el pipeline a las 6:00 y a las 18:00 hora local, coincidiendo con las pasadas de las 00 Z y las 12 Z. Las carpetas de GCS que ya no hacen falta se han limpiado, y sync_gcloud.ps1 se ha ajustado para ignorar esas rutas y no volver a descargar lo que ya no existe.
🎯 El pipeline de previsión D+2..D+5 reparado
El pipeline que genera los vídeos de previsión para los próximos cuatro días (muestreo → render → video_previ) llevaba un tiempo roto o a medias. Esta semana ha recibido la atención que merecía y ya encadena bien todos los pasos.
Los arreglos principales han sido: que muestreo.py elija siempre el recorte más reciente disponible (antes cogía el más antiguo por un error de ordenación) y que sepa usar datos ICON-EU cuando CAMS (Copernicus Atmosphere Monitoring Service) no está disponible. También se ha corregido la descarga de CAMS para pedir datos cada 3 horas, que es la resolución real del servicio. En cuanto al aspecto visual, los periodos del día ahora se representan con iconos animados (sol, lluvia, tormenta, nubes) y el fondo del mapa usa el relieve sombreado de ESRI en lugar de un fondo liso, lo que da mucho más contexto geográfico a la previsión. Todo el pipeline se ha probado de punta a punta y los cuatro vídeos de previsión se generan correctamente.
📺 El streaming sin dramas de cuota
El reinicio automático del streaming tuvo un par de sustos esta semana. El script de organización de directos en playlists mensuales de YouTube consumía demasiadas unidades de la cuota diaria de la API (10.000 unidades en total), dejando sin margen suficiente al reinicio de las 00:01. El resultado fue que el directo estuvo varias horas sin reiniciarse hasta que la cuota se resetea a las ~09:00. El límite del organizador de playlists se ha reducido y el script de reinicio ahora detecta el error de cuota agotada, lo notifica por HERMES (el canal de alertas por Telegram) y no se cae.
Además, al cerrar cada emisión el script ahora añade automáticamente la fecha al título del vídeo archivado (por ejemplo, «| 15 de mayo de 2026»), lo que mejora el SEO del archivo y facilita encontrar directos concretos. Y si el vídeo supera las 11 horas —señal de que el reinicio falló en algún momento— llega un aviso para ir a YouTube Studio a recortarlo antes de que pierda métricas.
Por otro lado, he creado un script (organizar_directos_playlists.py) para agrupar los casi 1.000 directos acumulados en playlists mensuales. La primera ejecución ya ha organizado abril y agosto de 2025 y abril de 2026; como la API tiene cuota diaria limitada, quedan unas cinco o seis ejecuciones para completar los 17 meses pendientes.
🛡️ El watchdog por fin sin puntos ciegos
El watchdog (el proceso que vigila que el resto de scripts estén vivos y los reinicia si se caen) tenía tres bugs que llevaban tiempo escondidos. El más visible: la ruta del script de alertas de la AEMET era incorrecta, así que nunca se reiniciaba si fallaba. El más sutil: el estado de los temporizadores de cooldown se perdía cada vez que el propio watchdog se reiniciaba, lo que podía provocar reinicios en cascada. El tercero: algunos errores de red conocidos (desconexión remota, respuestas JSON vacías de la AEMET por las tardes) no estaban reconocidos como errores transitorios, así que el watchdog los enviaba a consultar a Qwen innecesariamente. Los tres corregidos y el estado de cooldown ahora persiste en un fichero JSON.
🧪 Lo que ha quedado en el tintero
- eccodes en el entorno cams_api: el pipeline ICON-EU funciona en el entorno
ecmwf_env, pero falta instalar eccodes+cfgrib encams_apipara poder activarlo también allí. El comando está anotado; es pendiente para la próxima semana. - Estadísticas de YouTube desde Cowork: el script
youtube_stats.pynecesita OAuth interactivo y el sandbox Linux no puede acceder aoauth2.googleapis.com. La solución pasa por moverlo al Task Scheduler de Windows como el resto de scripts con OAuth. Pendiente de implementar.
📆 Próxima entrada: semana del 18 al 24 de mayo de 2026.