Media Pipeline
Aplicación de anime — catálogo, biblioteca y automatización
Es una plataforma de catálogo multimedia que construí y opero sobre mi propia infraestructura. Lo interesante no es el catálogo —de eso hay muchos— sino el flujo automático que mantiene la biblioteca al día: descubre títulos nuevos, gestiona las descargas, asocia cada carpeta del disco con su entrada del catálogo y deja en manos de una persona solo aquello que no puede decidir con evidencia. Backend en ASP.NET Core sobre PostgreSQL; panel de operaciones y sitio público en Next.js.
Akashani · aplicación en producción
La aplicación en números
títulos en el catálogo
143.638
carpetas verificadas
3.679
episodios descargados
38.610
Cifras consultadas desde la API pública de Akashani y actualizadas cada 3 segundos mientras esta página está visible.
Estos son los números actuales de Akashani, la aplicación de anime en producción. Las cifras se consultan desde su API pública y se actualizan cada 3 segundos mientras esta página está visible.
Arquitectura
El backend es un monolito modular: ocho módulos de dominio, cada uno con sus controladores, servicios y DTOs, sobre un único PostgreSQL con EF Core. Dieciocho trabajos en segundo plano cubren la sincronización de metadatos contra APIs externas, el escaneo de disco, la cola de descargas, la traducción de descripciones y el respaldo diario de la base. El progreso llega al panel en tiempo real por SignalR. Evité la capa de repositorios salvo donde las consultas lo justificaban: una sola excepción, no una regla.
Un catálogo que se mantiene al día
La aplicación sincroniza títulos, metadatos y relaciones desde AniList, y actualiza los episodios y sus fechas de emisión con datos de Jikan. Los procesos programados detectan cambios y nuevos episodios para que el catálogo y la biblioteca no dependan de una actualización manual constante.
Descargas automáticas de episodios
El sistema detecta episodios que faltan en las carpetas asociadas y los agrega a una cola persistente. Los workers prueban las fuentes disponibles, registran el progreso y los errores, y pueden pausar o reintentar el trabajo sin perder el estado de la cola.
Matching entre carpetas y anime
Al escanear el disco, el pipeline analiza nombres y señales de cada carpeta —título, temporada, formato y episodios—, busca candidatos en el catálogo y evalúa la evidencia para asociarla con el anime correcto. Las coincidencias claras se resuelven automáticamente; los casos ambiguos o en conflicto quedan en una cola de revisión para que una persona confirme o corrija la asociación.
Una estructura de carpetas conectada con la biblioteca
Cada asociación enlaza una carpeta real del almacenamiento con su entrada del catálogo. El escaneo de episodios mantiene al día qué archivos existen, cuántos episodios hay y si la serie está completa; esa información alimenta la disponibilidad que ve la aplicación y se reconcilia después de cada cambio de asociación.
Traducciones al español
Un proceso en segundo plano traduce sinopsis y títulos de episodios al español. Las traducciones se guardan aparte del contenido original, así la interfaz puede mostrar el texto localizado sin reemplazar los metadatos de origen.
Conversión de formatos antiguos para el navegador
Los archivos heredados que el navegador no puede reproducir se convierten en segundo plano a MP4 compatible. Antes de sustituir el original, el sistema valida el archivo convertido y su duración; si la conversión falla o se interrumpe, conserva el original para evitar perder el episodio.
Una consola para operar la biblioteca
El panel administrativo reúne la cola y el historial de descargas, el matching de carpetas, la revisión de asociaciones, las traducciones, las conversiones y el estado de los procesos automáticos. Así se puede supervisar y corregir el ciclo completo desde un mismo lugar.