|
| 1 | + |
| 2 | + |
| 3 | +````markdown |
1 | 4 | <p align="center"> |
2 | 5 | <img src="https://github.com/danitxu79/visagevault/raw/master/visagevault.png" alt="Logo de VisageVault"> |
3 | 6 | </p> |
4 | 7 |
|
| 8 | +# 📸 VisageVault |
5 | 9 |
|
6 | | ------ |
7 | | - |
8 | | -# VisageVault - Gestor de Fotografías Inteligente |
9 | | - |
10 | | -[](https://www.google.com/search?q=https://github.com/danitxu79/VisageVault) |
11 | | -[](https://www.google.com/search?q=LICENSE) |
| 10 | +**VisageVault** es un gestor de fotografías y vídeos inteligente, local y privado. Organiza tu colección multimedia por fechas automáticamente y utiliza reconocimiento facial avanzado para agrupar a las personas, permitiéndote etiquetar y encontrar recuerdos rápidamente. |
12 | 11 |
|
13 | | -VisageVault es una aplicación de escritorio para macOS, Windows y Linux, diseñada para organizar y explorar grandes colecciones de fotos **y vídeos**. Su característica principal es el **reconocimiento facial** (en fotos), que permite escanear, agrupar y etiquetar personas automáticamente en tu biblioteca. |
| 12 | +--- |
14 | 13 |
|
15 | | -## ✨ Características Principales |
| 14 | +## ✨ Novedades de la Versión 1.4 |
16 | 15 |
|
17 | | - * **Escaneo de Directorios:** Analiza recursivamente tu carpeta de medios para encontrar todas las imágenes (`.jpg`, `.png`, etc.) **y vídeos** (`.mp4`, `.mkv`, `.mov`, etc.). |
18 | | - * **Organización por Fecha:** Agrupa automáticamente las fotos y vídeos por Año y Mes, leyendo los metadatos EXIF o la fecha de archivo. |
19 | | - * **Soporte de Vídeo Dedicado:** Una pestaña separada para navegar por tus vídeos, con generación de miniaturas (usando OpenCV) y reproducción mediante doble clic (abre el reproductor predeterminado del sistema). |
20 | | - * **Soporte RAW:** **Visualización y reconocimiento facial en formatos RAW comunes (.NEF, .CR2, etc.)**. |
21 | | - * **Detección de Caras (en Fotos):** Utiliza `face_recognition` para escanear cada foto y detectar todas las caras presentes. |
22 | | - * **Agrupamiento (Clustering):** Compara todas las caras "Desconocidas" y las agrupa (usando `sklearn.cluster.DBSCAN`) para sugerir personas que son la misma. |
23 | | - * **Etiquetado Sencillo:** Una interfaz dedicada para revisar las caras agrupadas y asignarles un nombre. |
24 | | - * **Navegación por Persona:** Una vez etiquetadas, puedes ver todas las fotos en las que aparece una persona específica. |
25 | | - * **Gestión de Metadatos:** Permite editar la fecha (Año/Mes) de las fotos si los metadatos son incorrectos, **guardando el cambio permanentemente en el archivo (EXIF/Fecha de Archivo)**. |
26 | | - * **Gestión de Archivos:** **Menú contextual para Ocultar/Restaurar archivos de la vista o Eliminarlos permanentemente del disco.** |
27 | | - * **Selección Mejorada:** **Soporte de selección de rango (Shift + Clic) y por arrastre (cuadro de selección).** |
28 | | - * **Caché de Miniaturas:** Genera y almacena miniaturas para fotos y vídeos para una carga y navegación ultra rápidas.** |
| 16 | +Esta versión se centra en el rendimiento, la comodidad y la edición rápida: |
29 | 17 |
|
30 | | ------ |
| 18 | +* **🔄 Auto-Refresco (Watchdog):** La aplicación detecta automáticamente si añades, borras o modificas fotos en tu carpeta mientras está abierta y actualiza la galería al instante sin reiniciar. |
| 19 | +* **👁️ Corrección de Ojos Rojos:** Nueva herramienta en el menú contextual (clic derecho) para detectar y corregir ojos rojos en tus fotos automáticamente. |
| 20 | +* **⚡ Rendimiento en Personas:** Implementado un sistema de **caché de caras en disco**. La primera vez detecta las caras, pero las siguientes veces la carga de la pestaña "Personas" es instantánea, incluso con archivos RAW pesados. |
| 21 | +* **Soporte RAW Avanzado:** Visualización, carga de miniaturas y reconocimiento facial en archivos RAW comunes (.NEF, .CR2, .ARW, etc.) gracias a `rawpy`. |
| 22 | +* **Gestión de Metadatos Persistente:** Opción de **Cambiar Fecha (Mover)** que guarda el cambio en el archivo físico (EXIF para JPG, fecha de modificación para Vídeos/RAW). |
| 23 | +* **Gestión de Visibilidad:** Opción para **Ocultar/Restaurar** archivos de la vista principal y **Eliminar** archivos físicamente del disco. |
| 24 | +* **Selección Robusta:** Selección de rango con **Shift + Clic**, selección múltiple con **Ctrl + Clic**, y selección por arrastre. |
31 | 25 |
|
32 | | -## 🛠️ Requisitos |
| 26 | +--- |
33 | 27 |
|
34 | | -Para ejecutar VisageVault desde el código fuente, necesitarás Python 3.11+ y varias dependencias del sistema. |
| 28 | +## 📜 Licencia |
35 | 29 |
|
36 | | -### 1\. Dependencias del Sistema |
| 30 | +Este proyecto se ofrece bajo un modelo de **Doble Licencia (Dual License)**: |
37 | 31 |
|
38 | | -Las librerías de Python necesitan compilar código C++ y acceder a códecs de vídeo. |
| 32 | +1. **LGPLv3:** Ideal para proyectos de código abierto. Si usas esta biblioteca (especialmente si la modificas), debes cumplir con las obligaciones de la LGPLv3. |
| 33 | +2. **Comercial (Privativa):** Si los términos de la LGPLv3 no se ajustan a tus necesidades (por ejemplo, para software propietario de código cerrado), por favor contacta al autor para adquirir una licencia comercial. |
39 | 34 |
|
40 | | - * **En Debian/Ubuntu:** |
41 | | - ```bash |
42 | | - sudo apt install build-essential cmake libopenblas-dev liblapack-dev ffmpeg |
43 | | - ``` |
44 | | - * **En Arch/Manjaro:** |
45 | | - ```bash |
46 | | - sudo pacman -S base-devel cmake openblas lapack ffmpeg |
47 | | - ``` |
48 | | - * **En Fedora:** |
49 | | - ```bash |
50 | | - sudo dnf groupinstall "Development Tools" |
51 | | - sudo dnf install cmake openblas-devel lapack-devel ffmpeg |
52 | | - ``` |
| 35 | +Para más detalles, consulta el archivo `LICENSE` o la cabecera de `visagevault.py`. |
53 | 36 |
|
54 | | -### 2\. Dependencias de Python |
| 37 | +--- |
55 | 38 |
|
56 | | -Todos los paquetes de Python necesarios están listados en `requirements.txt`. Los principales son: |
| 39 | +## 🛠️ Requisitos del Sistema |
57 | 40 |
|
58 | | - * `PySide6` (Para la interfaz gráfica Qt 6) |
59 | | - * `face_recognition` (Para la detección de caras) |
60 | | - * `scikit-learn` (Para el clustering de caras) |
61 | | - * `Pillow` (Para el manejo de imágenes) |
62 | | - * `piexif` **(Para leer y escribir metadatos EXIF, ahora usado para la persistencia)** |
63 | | - * `rawpy` **(Nuevo - Para el soporte de archivos RAW)** |
64 | | - * `opencv-python-headless` (¡Nuevo\! Para la generación de miniaturas de vídeo)** |
| 41 | +Para ejecutar VisageVault, necesitas **Python 3.11 o superior**. |
65 | 42 |
|
66 | | ------ |
| 43 | +### Dependencias de Sistema (Compilación) |
| 44 | +La librería `face_recognition` y `rawpy` requieren herramientas de compilación de C++ instaladas: |
| 45 | +* **Windows:** Visual Studio con "Desarrollo para el escritorio con C++". |
| 46 | +* **Linux:** `cmake`, `gcc`, `libarchive-tools` (para empaquetado). |
| 47 | + ```bash |
| 48 | + sudo apt install build-essential cmake libopenblas-dev liblapack-dev ffmpeg libarchive-tools |
| 49 | +```` |
67 | 50 |
|
68 | | -## 🚀 Instalación (desde código fuente) |
| 51 | + * **Mac:** Xcode command line tools. |
69 | 52 |
|
70 | | -1. **Clona el repositorio:** |
| 53 | +### Librerías Python |
71 | 54 |
|
72 | | - ```bash |
73 | | - git clone [https://github.com/danitxu79/VisageVault.git](https://github.com/danitxu79/VisageVault.git) |
74 | | - cd VisageVault |
75 | | - ``` |
| 55 | +Asegúrate de que tu `requirements.txt` esté actualizado. Las dependencias clave son: |
76 | 56 |
|
77 | | -2. **Instala las Dependencias del Sistema:** |
| 57 | + * `PySide6` (Interfaz gráfica) |
| 58 | + * `face_recognition` (IA Facial) |
| 59 | + * `scikit-learn` (Clustering de caras) |
| 60 | + * `watchdog` **(Nuevo - Monitorización de archivos)** |
| 61 | + * `rawpy` (Soporte RAW) |
| 62 | + * `opencv-python-headless` (Miniaturas de vídeo y Ojos Rojos) |
| 63 | + * `piexif` (Escritura EXIF) |
| 64 | + * `numpy`, `Pillow` |
78 | 65 |
|
79 | | - * Asegúrate de haber instalado las herramientas de compilación (`cmake`, `ffmpeg`, etc.) mencionadas en la sección "Requisitos". |
| 66 | +## 🚀 Instalación |
80 | 67 |
|
81 | | -3. **Crea un entorno virtual:** |
| 68 | +1. **Clonar el repositorio:** |
82 | 69 |
|
83 | 70 | ```bash |
84 | | - python3 -m venv venv |
85 | | - source venv/bin/activate |
| 71 | + git clone [https://github.com/danitxu79/visagevault.git](https://github.com/danitxu79/visagevault.git) |
| 72 | + cd visagevault |
86 | 73 | ``` |
87 | 74 |
|
88 | | -4. **Instala los requisitos de Python:** |
89 | | - |
90 | | - * (Este paso puede tardar varios minutos, ya que compilará `dlib` y `numpy`). |
| 75 | +2. **Instalar dependencias:** |
| 76 | + Se recomienda usar un entorno virtual (`venv`). |
91 | 77 |
|
92 | 78 | ```bash |
93 | 79 | pip install -r requirements.txt |
94 | 80 | ``` |
95 | 81 |
|
96 | | ------ |
| 82 | +3. **Ejecutar la aplicación:** |
97 | 83 |
|
98 | | -## 🏃 Ejecución |
99 | | - |
100 | | -Una vez que todo esté instalado, puedes ejecutar la aplicación: |
101 | | - |
102 | | -```bash |
103 | | -# Activa el entorno virtual (si no lo has hecho) |
104 | | -source venv/bin/activate |
105 | | -
|
106 | | -# Inicia la aplicación |
107 | | -python visagevault.py |
108 | | -```` |
109 | | -
|
110 | | -La primera vez que la ejecutes, te pedirá que selecciones el directorio raíz que contiene tus fotos y vídeos. |
| 84 | + ```bash |
| 85 | + python visagevault.py |
| 86 | + ``` |
111 | 87 |
|
112 | 88 | ----- |
113 | 89 |
|
114 | | -## 📦 Compilación (AppImage para Linux) |
| 90 | +## 📖 Guía de Uso Rápida |
115 | 91 |
|
116 | | -Este repositorio incluye un script `compila.sh` que automatiza la creación de una AppImage autocontenida usando **PyInstaller** y **linuxdeploy**. |
| 92 | +### Navegación y Vistas |
117 | 93 |
|
118 | | -Este script maneja los pasos complejos de empaquetado, incluyendo las importaciones ocultas (`--hidden-import`) de `numpy`, `sklearn` y `scipy`. |
| 94 | + * **Árbol de Fechas:** Las secciones de **Años/Meses** muestran solo archivos visibles. La sección **Ocultas** muestra los archivos que has archivado y permite Restaurarlos o Eliminarlos. |
| 95 | + * **Auto-Refresco:** Si copias fotos nuevas a tu carpeta vigilada, aparecerán automáticamente en la aplicación tras unos segundos. |
119 | 96 |
|
120 | | -### Requisitos para la Compilación |
| 97 | +### Menú Contextual (Clic Derecho) |
121 | 98 |
|
122 | | -Además de los requisitos de ejecución, para compilar la AppImage necesitarás: |
| 99 | +Selecciona uno o varios elementos y haz clic derecho para acceder a las opciones: |
123 | 100 |
|
124 | | -1. **Herramientas de Qt6:** `linuxdeploy` las necesita para empaquetar los plugins de la plataforma Qt. |
125 | | - * **En Arch/Manjaro:** `sudo pacman -S qt6-tools` |
126 | | - * **En Debian/Ubuntu:** `sudo apt install qt6-base-dev` |
127 | | -2. **Herramientas de AppImage:** |
128 | | - ```bash |
129 | | - wget [https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage](https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage) |
130 | | - chmod +x linuxdeploy-x86_64.AppImage |
131 | | - ``` |
132 | | -3. **pyenv (Recomendado):** El script está configurado para usar `pyenv local 3.11.9` para asegurar una compilación consistente. |
| 101 | +| Opción | Función | |
| 102 | +| :--- | :--- | |
| 103 | +| **Cambiar Fecha (Mover)** | Abre un diálogo para reasignar la fecha. Actualiza la BD y los metadatos del archivo físico. | |
| 104 | +| **Corregir Ojos Rojos** | Detecta y corrige automáticamente los ojos rojos en las fotos seleccionadas. | |
| 105 | +| **Ocultar de la vista** | Archiva los archivos en la sección "Ocultas" sin borrarlos del disco. | |
| 106 | +| **Restaurar a la galería** | Devuelve los archivos ocultos a la vista principal (Años/Meses). | |
| 107 | +| **Eliminar del disco** | Borra permanentemente los archivos del disco duro y de la base de datos. | |
133 | 108 |
|
134 | | -### Compilar |
| 109 | +### Controles de Miniaturas |
135 | 110 |
|
136 | | -Simplemente ejecuta el script de compilación: |
| 111 | +| Acción | Comando | |
| 112 | +| :--- | :--- | |
| 113 | +| **Zoom Miniaturas** | `Ctrl` + `Rueda Ratón` (o `Ctrl` + `+`/`-`) | |
| 114 | +| **Vista Previa Grande** | `Ctrl` + `Rueda Abajo` (sobre una foto/vídeo) | |
| 115 | +| **Selección Múltiple** | `Ctrl` + `Clic` | |
| 116 | +| **Selección de Rango** | `Shift` + `Clic` | |
| 117 | +| **Selección por Arrastre** | Clic izquierdo y arrastrar sobre el fondo gris | |
137 | 118 |
|
138 | | -```bash |
139 | | -./compila.sh |
140 | 119 | ``` |
141 | | - |
142 | | -Si todo sale bien, encontrarás el archivo `VisageVault-x86_64.AppImage` listo para distribuir y ejecutar. |
143 | | - |
144 | | ------ |
145 | | - |
146 | | -## 📜 Licencia |
147 | | - |
148 | | -Este proyecto se ofrece bajo un modelo de **Doble Licencia (Dual License)**: |
149 | | - |
150 | | -1. **LGPLv3:** Ideal para proyectos de código abierto. Si usas esta biblioteca (especialmente si la modificas), debes cumplir con las obligaciones de la LGPLv3. |
151 | | -2. **Comercial (Privativa):** Si los términos de la LGPLv3 no se ajustan a tus necesidades (por ejemplo, para software propietario de código cerrado), por favor contacta al autor para adquirir una licencia comercial. |
152 | | - |
153 | | -Para más detalles, consulta el archivo `LICENSE` o la cabecera de `visagevault.py`. |
| 120 | +``` |
0 commit comments