47 lines
2.9 KiB
Markdown
47 lines
2.9 KiB
Markdown
# Plan: Automatización Flujo Zoom a YouTube
|
|
|
|
> **Grupo de Trabajo:** DIGIs (Digitalización y Contenidos)
|
|
|
|
**Código:** P2603.01
|
|
**Fecha:** 31 de marzo de 2026
|
|
**Autor:** Sistema ADN
|
|
**Versión:** 1.0
|
|
**Estado:** 📝 PLANIFICADO
|
|
|
|
## 📋 Resumen Ejecutivo
|
|
|
|
El objetivo es automatizar un proceso repetitivo que actualmente requiere un alto esfuerzo manual y tiempo de espera ("toil"): descargar grabaciones de aulas y posgrados de Zoom a partir de enlaces en una Google Sheet, procesarlas localmente, subirlas en modo oculto al canal interno de YouTube, y finalmente notificar o retornar los enlaces a la planilla para los destinatarios.
|
|
|
|
Al automatizar este flujo utilizando el ecosistema ADN (CLI de herramientas Ruby), la intervención manual se reducirá idealmente a la ejecución de un solo comando (`zoom:sync` o similar).
|
|
|
|
## 🎯 Objetivo
|
|
|
|
Desarrollar una herramienta nativa ADN que englobe estas etapas clave:
|
|
1. Conectarse a Google Sheets para leer nuevas filas pendientes (sin `ID-YTB`).
|
|
2. Gestionar la descarga robusta (`wget`/`curl` con sanitización estricta de espacios y nombres) al entorno delimitado `temp/`.
|
|
3. Interconectar con la **YouTube Data API v3** para subir los videos directamente, dejándolos No Listados ("Unlisted").
|
|
4. Devolver las URLs post-subida a la planilla y despachar las notificaciones necesarias.
|
|
|
|
## 📅 Fases de Implementación Orientativas
|
|
|
|
### ⏳ FASE 1: Integración Source (Google Sheets & Descarga)
|
|
- **1.1:** Habilitar Google Sheets API. Guardar la credencial de Service Account cifrada usando `candados`.
|
|
- **1.2:** Crear módulo Ruby (`adn/tools/cli/digis.rb`) para extraer columnas *IDReu*, *urlDOWN*, y *TIT*.
|
|
- **1.3:** Descargar archivos de manera concurrente al directorio de trabajo optimizando transferencia y sanitizando las salidas de los nombres de archivos.
|
|
|
|
### ⏳ FASE 2: Extracción local (si aplica según webhook)
|
|
- **2.1:** Detectar dinámicamente si Zoom retorna un `mp4` o requiere un unpack/descompresión (en el caso de recursos vinculados a chat txt y grabaciones juntas).
|
|
|
|
### ⏳ FASE 3: Upload a YouTube
|
|
- **3.1:** Habilitar y configurar YouTube Data API v3 usando OAuth2 en la cuenta destino.
|
|
- **3.2:** Mecanismo de subida asíncrona mediante Ruby, empujando chunks grandes de video con protección contra cortes, nombrando el archivo según `TIT` y ajustando la privacidad.
|
|
|
|
### ⏳ FASE 4: Notificación final y actualización
|
|
- **4.1:** Almacenar de retorno el enlace definitivo en la columna `ID-YTB` de la planilla.
|
|
- **4.2:** Desarrollar rutina para generar correos preformateados o alertas para los organizadores, confirmándoles los enlaces limpios.
|
|
|
|
## 🛠 Requisitos para Ecosistema ADN
|
|
- Integración en `./adn/tools/run digis zoom:sync`
|
|
- Todo el manejo temporal de GBs debe apuntar a la carpeta limpia `temp/` pero preferiblemente limpiar al concluir (`cleanup ensure`).
|
|
- Los tokens API irán guardados de forma imperativa dentro de la bóveda de **Candados**.
|