5S GO
Prompt
Actúa como un Senior Python Systems Engineer y crea una herramienta CLI en Python (3.10+) de nivel producción para organizar, deduplicar y renombrar masivamente TODO tipo de archivos en una carpeta desordenada. Requerimientos técnicos obligatorios: 1. CLASIFICACIÓN UNIVERSAL POR CATEGORÍAS: Clasifica automáticamente cualquier archivo en carpetas maestras según su extensión o tipo: - Imágenes (.jpg, .jpeg, .png, .gif, .heic, .webp, .raw, etc.) - Videos (.mp4, .mkv, .mov, .avi, .webm, etc.) - Documentos de Texto y Lectura (.pdf, .docx, .doc, .txt, .odt, .rtf, .epub) - Hojas de Cálculo y Datos (.xlsx, .xls, .csv, .parquet, .json, .xml) - Presentaciones (.pptx, .ppt, .key) - Audio (.mp3, .wav, .flac, .aac, .m4a) - Comprimidos e Instaladores (.zip, .rar, .7z, .tar.gz, .iso, .exe, .msi, .dmg) - Código y Scripts (.py, .js, .html, .css, .sql, .sh, .bat) - Cualquier otra extensión no reconocida debe ir a una carpeta 'Otros/[Extension]'. 2. EXTRACCIÓN INTELIGENTE DE FECHA (Jerarquía de cascada): Para determinar la fecha real del archivo y no depender solo de la fecha de descarga/copia: a) Prioridad 1 (Imágenes/Video): Leer fecha original de captura desde metadatos EXIF / metadatos multimedia. b) Prioridad 2 (Documentos PDF/Office): Leer fecha de creación interna en los metadatos del archivo. c) Prioridad 3 (Regex en nombre): Detectar patrones de fecha en el nombre actual (ej. YYYYMMDD, DD-MM-YYYY, YYYY-MM-DD). d) Prioridad 4 (Fallback): Timestamp de modificación del sistema de archivos (st_mtime). 3. DEDUPLICACIÓN SEGURA (Sin consumir toda la RAM): - Implementa cálculo de hash SHA-256 procesando los archivos en chunks de 64KB (para soportar videos de varios GB sin saturar memoria). - Si dos archivos tienen el mismo hash exacto, NO los sobreescribas: muévelos a una carpeta especial '_Duplicados/' conservando el registro en el log. 4. ESTRUCTURA DESTINO Y REGLA DE RENOMBRADO: - Estructura de carpetas: Target_Dir / [Categoria] / [Año] / [Año-Mes] / - Nuevo nombre estandarizado: YYYY-MM-DD_HHMMSS_[Categoria]_[NombreOriginalSanitizado]_[hashCorto8chars].[extension] - Sanitiza caracteres ilegales en Windows/Linux (espacios por guiones bajos, eliminar tildes, caracteres especiales como \ / : * ? " < > |). 5. SEGURIDAD Y ARQUITECTURA DE PRODUCCIÓN: - Parámetros CLI con `argparse`: `--source`, `--target`, `--dry-run` (simula y muestra qué haría sin tocar nada), `--copy` (por defecto mueve, con esta bandera copia), `--workers` (procesamiento concurrente con ThreadPoolExecutor). - ROLLBACK / DESHACER: Debe generar un archivo `manifest_rollback.json` con el mapeo {ruta_origen: ruta_destino}. Si el usuario ejecuta el script con el argumento `--undo manifest_rollback.json`, debe restaurar cada archivo a su lugar y nombre original. - Log de auditoría completo en `audit_log.csv` (origen, destino, categoría, hash, estado, error si ocurrió). Entrega el código completo, modular, con typing estricto (type hints), docstrings y librerías estándar o de amplio uso (ej. Pillow para EXIF, pypdf o similar si aplica, con fallbacks elegantes si la librería opcional no está instalada).