Esta aplicación permite descargar archivos desde un NAS de Synology utilizando la API de FileStation. Está diseñada para ser simple, segura y eficiente, permitiendo navegar por los directorios remotos y descargar archivos seleccionados con una barra de progreso visual.
- Autenticación Segura: Utiliza la API oficial de Synology (Auth API v3).
- Navegación Remota: Lista archivos de directorios remotos del NAS.
- Barra de Progreso: Visualización moderna del progreso de descarga (usando
tqdm). - Seguridad: Gestión de credenciales mediante variables de entorno (
.env), evitando contraseñas en código. - Multiplataforma: Funciona en Windows, Linux y macOS.
- Python 3.8 o superior.
- Acceso a un NAS Synology con FileStation habilitado.
- (Opcional) Entorno virtual configurado.
-
Clonar el repositorio:
git clone https://github.com/alexmnrs/SYNODownloader.git cd SYNODownloader -
Crear y activar un entorno virtual (Recomendado):
# Windows python -m venv .venv .venv\Scripts\activate # Linux/macOS python3 -m venv .venv source .venv/bin/activate
-
Instalar dependencias:
pip install -r requirements.txt
-
Duplica el archivo de ejemplo de configuración:
cp .env.example .env # O en Windows: copy .env.example .env -
Edita el archivo
.envcon tus credenciales y configuración:SYNO_URL="https://tu-nas.com:5001/webapi/entry.cgi" SYNO_USER="tu_usuario" SYNO_PASSWORD="tu_password" DOWNLOAD_PATH="Downloads"
Ejecuta el script principal:
python main.pySigue las instrucciones en pantalla:
- El script verificará la conexión.
- Ingresa la ruta remota que deseas explorar (por defecto
/). - Selecciona el número del archivo que deseas descargar.
SYNODownloader/
├── src/
│ ├── client.py # Lógica de conexión y API de Synology
│ └── config.py # Gestión de configuración y validación
├── .env.example # Plantilla de variables de entorno
├── .gitignore # Archivos ignorados por Git
├── LICENSE # Licencia del proyecto
├── main.py # Punto de entrada de la aplicación
├── README.md # Documentación
└── requirements.txt # Dependencias del proyecto
Las contribuciones son bienvenidas. Por favor, abre un issue primero para discutir qué te gustaría cambiar.
Alex Monrás
- GitHub: @alexmnrs