TuneaTuMusica Logo Open Source 🚀 v1.0.1

Nombres Claros.
Biblioteca en Orden.

Dile adiós para siempre a los archivos "Track 01" y "Audio_123.mp3". Renombra toda tu colección musical con un solo clic.

Interfaz Gráfica de TuneaTuMusica

Visualización de la Interfaz Moderna (v1.0.0)

🔍 Escaneo Inteligente

Analizamos la estructura de tus carpetas (N-1, N-2) para derivar Artista, Álbum y Año con precisión quirúrgica.

  • Regla Automática: Artista desde carpeta abuela (N-2)
  • Regla Automática: Álbum y Año desde carpeta padre (N-1)

🎧 Fingerprinting Acústico

¿Archivos sin nombre? Usamos tecnología AcoustID para escuchar tu música e identificarla automáticamente.

  • Integración con MusicBrainz
  • Identificación por huella digital de audio

🤖 Potenciado por IA

Si todo falla, nuestra IA (GPT-4o-mini) entra en acción para resolver los metadatos más difíciles.

  • Análisis de contexto avanzado
  • Identificación de versiones en vivo

📐 Nomenclatura Estricta TuneaTuMusica

Garantizamos que el 100% de tu biblioteca siga un estándar profesional de ingeniería de archivos.

/[Nombre Banda]
  └── ([Año]) [Nombre del Disco]
      └── [NumTrack] - [Nombre Canción].[Ext]

👨‍🎤 El Artista (N-2)

Extraído de la carpeta abuela (dos niveles arriba). Se normaliza con Title Case.

Ej: "caliban" ➝ "Caliban"

💿 El Álbum (N-1)

Extraído de la carpeta padre. Busca el año entre paréntesis (2006) y el nombre del disco después.

Ej: "(2006) the undying darkness" ➝ Año: "2006", Álbum: "The Undying Darkness"

🎵 La Pista

Forzamos dos dígitos XX al inicio del nombre del archivo para un orden alfabético perfecto.

Ej: "2 - I Rape Myself" ➝ "02 - I Rape Myself"

📝 Ejemplos de Transformación

Antes: test/2x/(2002) Pateando Craneos/02-No Lo Podras Sostener.mp3
Después: 2x/(2002) Pateando Craneos/02 - No Lo Podras Sostener.mp3
Antes: test/Caliban/(2003) Shadow Hearts/05-bad_dream-ube.mp3
Después: Caliban/(2003) Shadow Hearts/05 - Bad Dream Ube.mp3
Antes: test/BTS Discos/(2004) Back To School/07 - Track 07.mp3
Después: Bts Discos/(2004) Back To School/07 - Track 07.mp3

🧠 La Inteligencia detrás de TuneaTuMusica

Clasificamos cada archivo en uno de estos 4 estados para aplicar la solución perfecta de nomenclatura.

🟢 Caso A: La Ruta Manda

Diagnóstico: El archivo tiene nombre correcto pero los Tags están vacíos.

Archivo:
Caliban/(2006) The Undying Darkness/01 - Intro.mp3
Tags: [Vacíos]

Acción: Extraemos datos de la ruta y escribimos los Tags internos (ID3v1 e ID3v2).

🔵 Caso B: Los Tags Mandan

Diagnóstico: Los Tags son correctos pero el nombre del archivo es un desastre.

Archivo:
test/BTS/(2004) Back/08 - Track 08.mp3
Tags: Artist="BTS", Title="Graduation Day"

Acción: Usamos los Tags para renombrar y mover el archivo a la estructura estándar.

🟡 Caso C: Búsqueda Externa

Diagnóstico: Ni la ruta ni los Tags tienen información válida.

Archivo:
test/Caliban/(2007) The Awakening/10-Track-10.mp3
Tags: [Vacíos o "Track 10"]

Acción: Activamos búsqueda en cascada:

  • 🎵 AcoustID: Fingerprinting acústico
  • 🎼 MusicBrainz: Base de datos musical
  • 🤖 IA (GPT-4o-mini): Análisis inteligente

⚪ Caso D: Estado Perfecto

Diagnóstico: El archivo está perfectamente organizado.

Archivo:
Caliban/(2009) Say Hello/08 - The Denegation.mp3
Tags: [Todos correctos]

Acción: ✅ No hace nada. Solo valida y marca como perfecto.

🔍 Flujo de Decisión Automático

¿La ruta tiene info válida?
├─ SÍ¿Los tags tienen info válida?
├─ SÍCaso D (Perfecto)
└─ NOCaso A (Ruta → Tags)
└─ NO¿Los tags tienen info válida?
├─ SÍCaso B (Tags → Ruta)
└─ NOCaso C (Búsqueda externa)

⚠️ Validación de Información

El sistema considera información válida cuando:

  • ✅ No está vacía
  • ✅ No es "Unknown", "Untitled", "Track XX"
  • ✅ No es "Artista Desconocido" o similar
  • ✅ Tiene contenido significativo

🚀 Comenzar Ahora

1. Descargar el Proyecto

Clona el repositorio oficial desde GitHub para obtener la última versión:

git clone https://github.com/Iyov/TuneaTuMusica.git
cd TuneaTuMusica

2. Instalar Dependencias según tu Sistema

🪟 Windows

# Verificar Python instalado
python --version

# Crear entorno virtual
python -m venv venv

# Activar entorno virtual
venv\Scripts\activate

# Instalar dependencias
pip install -r requirements.txt

⚠️ Si no tienes Python: Descargar aquí
Marca "Add Python to PATH" durante la instalación

🐧 Linux (Ubuntu/Debian)

# Instalar Python y dependencias
sudo apt update
sudo apt install python3 python3-venv python3-pip python3-tk

# Crear entorno virtual
python3 -m venv venv
source venv/bin/activate

# Instalar dependencias
pip install -r requirements.txt

ℹ️ python3-tk es esencial para la GUI

🍎 macOS

# Instalar Python con Homebrew
brew install python3 python-tk

# Crear entorno virtual
python3 -m venv venv
source venv/bin/activate

# Instalar dependencias
pip install -r requirements.txt

ℹ️ Homebrew recomendado: brew.sh

3. Configurar API Keys

Copia el archivo de ejemplo y configura tus credenciales:

# Copiar archivo de configuración
cp .env.example .env

# Editar con tu editor favorito
nano .env  # o vim, code, etc.

🔑 API Keys Necesarias

4. Ejecución

Tienes dos formas de usar TuneaTuMusica dependiendo de tu preferencia:

🖥️ Modo Visual (GUI) - Recomendado

La interfaz moderna para un control total e intuitivo.

Windows:

venv\Scripts\activate
python gui.py

Linux/macOS:

source venv/bin/activate
python gui.py

💻 Modo Terminal (CLI)

Ideal para procesar miles de archivos rápidamente.

Windows:

venv\Scripts\activate
python audio_tagger.py C:\Musica

Linux/macOS:

source venv/bin/activate
python audio_tagger.py /ruta/musica

5. Modo Sandbox (Prueba Segura)

Prueba el sistema sin modificar tus archivos reales:

Windows:

venv\Scripts\activate
python sandbox_test.py

Linux/macOS:

source venv/bin/activate
python sandbox_test.py

🔧 Solución de Problemas

Windows

  • "python no se reconoce" → Reinstala Python y marca "Add to PATH"
  • Error de permisos → Ejecuta PowerShell como Administrador

Linux

  • "No module named '_tkinter'" → sudo apt install python3-tk
  • Usa sudo solo para paquetes del sistema

macOS

  • Tkinter no funciona → brew install python-tk
  • Certificados SSL → Ejecuta Install Certificates.command