Wednesday, November 9, 2022

Meneame en la Terminal (LINUX) - (Spanish)

En mi último proyecto en C he querido reunir todo lo que he aprendido con las interfaces gráficas de texto y darle uso conectándome a la API de meneame. Soy usuario de meneame desde sus inicios y éste es mi guiño personal por estar ahí durante todos estos años. 
Por ahora es una DEMO de lo que podría llegar a ser. El programa descarga las 100 noticias que aparecen en portada haciendo un CURL request a "https://meneame.net/api/list.php?status=published". 

Luego parsea la información recibida y la muestra en un programa con una interfaz de texto retro. 
No es mi mejor código, pero está hecho con mucho cariño :) 
Código en:

La explicación de todos los módulos a continuación: 

(Aumentando en orden de abstracción hasta llegar a main.c
________________

NIVEL 0: (BASE) 
- rterm.c : Con las secuencias de escape ANSI para dar color a nuestro output en la terminal 
- tm.c : Crea un timer de milisegundos para animaciones 
- fileop.c: Un módulo que ayuda para operaciones con archivos 
_______________

NIVEL 1: (DEPENDENCIAS) 
- download.c : Depende de libcurl. Hacemos la llamada a la API de meneame y guardamos su contenido en un fichero 
- parse.c : Parsea el contenido del fichero y lo volcamos a una array. Quitamos las secuencias de unicode y parsear acentps del español 
_______________

NIVEL 2: (ABSTACCIONES NIVEL BAJO) 
- keyb.c : Crea una pequeña abstracción del teclado para leer las teclas con secuencia de escape \e en Linux 
- scbuf.c (1) : Crea una capa intermedia entre el display y el terminal a modo de doble buffer de pantalla - listbox.c (2) : Crea una lista con un selector con scroll horizontal 
_______________

NIVEL 3: (ABSTACCIONES NIVEL ALTO) 
- ui.c : Diferentes herramientas como textbox y ventana para la interfaz de usuario 
- global.h y about.h : mensajes de texto y variables globales 
_______________

main.c: Programa principal