87 lines
2.6 KiB
Markdown
87 lines
2.6 KiB
Markdown
# PocketSync
|
|
|
|
Herramienta de escritorio para sincronizar archivos de emulación retro (ES-DE y ROMs) hacia almacenamiento externo. Soporta múltiples perfiles (uno por consola o dispositivo).
|
|
|
|
## Requisitos
|
|
|
|
- Windows 10 / 11
|
|
- `robocopy` (incluido en Windows por defecto)
|
|
- Para ejecutar desde código fuente: Python 3.6+
|
|
|
|
## Uso rápido (ejecutable)
|
|
|
|
Descarga `PocketSync.exe` y ejecútalo directamente. No requiere Python instalado.
|
|
|
|
## Uso desde código fuente
|
|
|
|
```bash
|
|
python pocketsync.py
|
|
```
|
|
|
|
## Configurar y usar la app
|
|
|
|
1. **Selecciona o crea un perfil** en el desplegable superior (New / Rename / Delete).
|
|
2. **Configura las 4 rutas:**
|
|
- ES-DE origen → carpeta local de ES-DE
|
|
- ES-DE destino → carpeta en el almacenamiento externo
|
|
- ROMs origen → carpeta local de ROMs
|
|
- ROMs destino → carpeta en el almacenamiento externo
|
|
3. **Selecciona los sistemas** a sincronizar (Select All / None para selección rápida).
|
|
4. Pulsa **Sync Now**.
|
|
|
|
La configuración se guarda automáticamente en `config.json` al cerrar.
|
|
|
|
## Generar el ejecutable
|
|
|
|
### 1. Crear el entorno virtual e instalar dependencias
|
|
|
|
```bash
|
|
py -m venv .venv
|
|
.venv\Scripts\activate
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
### 2. Añadir icono (opcional)
|
|
|
|
Coloca un archivo `pocketsync.ico` en la carpeta `assets\`. Sin él, el ejecutable usará el icono genérico de Windows.
|
|
|
|
### 3. Empaquetar
|
|
|
|
```bash
|
|
.venv\Scripts\activate
|
|
pyinstaller pocketsync.spec
|
|
```
|
|
|
|
El resultado queda en `dist\PocketSync.exe`.
|
|
|
|
## Estructura del proyecto
|
|
|
|
```
|
|
pocketsync.py # Entry point
|
|
pocketsync.spec # Configuración de PyInstaller
|
|
requirements.txt # Solo pyinstaller>=6.0
|
|
config.json # Perfiles guardados (se crea al primer uso)
|
|
assets/
|
|
pocketsync.ico # Icono del .exe (añadir manualmente)
|
|
|
|
core/
|
|
config.py # Gestión de perfiles y persistencia
|
|
sync_engine.py # Interfaz abstracta de sincronización
|
|
robocopy_engine.py # Implementación con Robocopy
|
|
|
|
ui/
|
|
app.py # Ventana principal y lógica de sync
|
|
profile_bar.py # Selector de perfiles
|
|
path_panel.py # Selectores de ruta
|
|
system_list.py # Lista de sistemas
|
|
status_bar.py # Barra de estado
|
|
summary_panel.py # Resumen de la última sincronización
|
|
styles.py # Colores y fuentes
|
|
```
|
|
|
|
## Notas
|
|
|
|
- La sincronización usa `robocopy /MIR`, que replica exactamente el origen en el destino (borra archivos en destino que no estén en origen).
|
|
- Cada perfil guarda sus 4 rutas y la selección de sistemas de forma independiente.
|
|
- El proceso de sync corre en un hilo separado para no bloquear la interfaz.
|