# Monitor de Sistema Avanzado (Python/Tkinter)

Aplicación de escritorio multiplataforma para el monitoreo en tiempo
real de recursos del sistema (CPU, Memoria, Red, Disco), complementada
con funciones avanzadas como administración de procesos, alarmas
programables, web scraping y utilidades adicionales (Juego, Música,
Notas, Backup).

Desarrollada en **Python 3.x** usando **tkinter**, junto con librerías
especializadas como **psutil** y **matplotlib**.

------------------------------------------------------------------------

## Enlace al Video Explicativo

https://drive.google.com/file/d/1mqQ41Z2r3j3VkGJUgI2dmPMIH5i2lHNq/view?usp=sharing

------------------------------------------------------------------------


## ✨ Características Destacadas

-   **Gráficos en Tiempo Real:** CPU (total y cores), memoria, disco y
    red.
-   **Gestión de Procesos:** Vista detallada, con opción de finalización
    segura en segundo plano.
-   **Alarmas Inteligentes:** Por hora o por umbrales de recursos (ej.
    alerta por CPU \> 90%).
-   **Web Scraping Integrado:** Extracción por selectores CSS usando
    *requests* + *BeautifulSoup*.
-   **Utilidades Extra:**
    -   Reproductor de audio (pygame)
    -   Bloc de Notas
    -   Juego "Carrera de Camellos"
    -   Sistema de Backup automático

------------------------------------------------------------------------

## 🖼️ Captura de Pantalla

![alt text](image.png)

------------------------------------------------------------------------

## ⚙️ Instalación y Requisitos

### 1. Requisitos del Sistema

-   Python **3.8+**
-   Git
-   Compatible con **Windows**, **macOS** y **Linux**

### 2. Clonar el Repositorio

``` bash
git clone https://git.ieslamar.org/luka/ProyectoPHP
```

### 3. Instalar Dependencias

``` bash
pip install psutil matplotlib numpy pygame requests beautifulsoup4
```

**Librería \| Propósito** - `psutil` -- Métricas del sistema (CPU, RAM,
Procesos...) - `matplotlib` + `numpy` -- Renderizado de gráficos en
tiempo real - `pygame` -- Música y sonidos de alarma - `requests` +
`bs4` -- Web Scraping por selectores CSS

### 4. Ejecutar la Aplicación

``` bash
python proyecto.py
```

------------------------------------------------------------------------

## 📁 Estructura del Proyecto

### `proyecto.py`

-   Punto de entrada de la aplicación.
-   Inicializa la ventana (`tk.Tk()`) y construye la UI mediante
    `ui_layout.crear_ui_completa(root)`.

------------------------------------------------------------------------

### `config.py`

Incluye: - Rutas importantes\
- Buffers de datos\
- Flags de control\
- Widgets compartidos

------------------------------------------------------------------------

### `ui_layout.py`

Construye: - Menú superior\
- Panel lateral\
- Área de gráficos\
- Pestañas funcionales

------------------------------------------------------------------------

### `monitor_manager.py`

  Función                        Descripción
  ------------------------------ ------------------------------------
  `actualizar_resumen_lateral`   Datos generales + recursos rápidos
  `actualizar_datos_graficos`    Obtiene métricas desde psutil
  `actualizar_graficos`          Renderiza de nuevo los gráficos
  `guardar_registro_csv`         Escribe métricas en archivo CSV
  `mostrar_procesos`             Lista los procesos activos
  `terminar_proceso`             Finaliza procesos de forma segura

------------------------------------------------------------------------

### `system_utils.py`

Incluye:

#### Registro

-   `log_event`\
-   `bytes_a_human_readable`

#### Alarmas

-   `cargar_alarmas` / `guardar_alarmas`
-   `comprobar_alarmas`

#### Web Scraping

-   `iniciar_scraping`
-   `scraping_logica_web`

#### Música

-   `reproducir_mp3`
-   `detener_mp3`
-   `ajustar_volumen_mp3`

#### Extras

-   Juego "Carrera de Camellos"
-   Bloc de Notas
-   Sistema de Backup (`backup_script.sh`)