Saltar al contenido
Inicio — Juan Torres

Centro de control

Utilidades

ProfesionalDía
Nyan CatEl cielo de Nyan, en píxeles
Nyan ⇄ EclipseCursor

Pista: en su cielo hay una estrella que no se deja atrapar.

KirbySe abre al vencer al rey Dedede

Pista: en el juego de la estrella, Kirby también vuela.

Todo: cursor contextual, imágenes con inercia, flores con física y sonido ambiental.

CV
jstorres.xora@gmail.com

Proyectos

Proyecto · App personal para mi música · 2026

Samsung Music DL

Busco una canción desde el celular y me llega un MP3 que Samsung Music muestra bien desde el primer momento: con portada, letra, artista y álbum.

Los metadatos que se escriben en el archivo: título, artista, álbum, año, género, portada y letra.

Ficha

Mi parte
Todo. La hice en un día, con un agente de IA en Antigravity; en octubre la revisé, corregí y publiqué.
Con quién
Proyecto personal
Cuándo
2026
Hoy
Funciona en local · no se puede alojar en la nube

Para uso personal. Descarga audio de YouTube; el repositorio pide respetar los derechos de autor y los términos de cada servicio.

El problema

Samsung Music enseña lo que trae el archivo. Un MP3 sin portada ni letra se ve con un ícono gris, y arreglar canción por canción con un editor de etiquetas era eterno.

En el celular

Buscar

Buscar

Elegir

Elegir

Revisar

Revisar

Descargar

Descargar

Un álbum entero

Un álbum entero

Cómo funciona

  1. 01

    Buscar

    La búsqueda va a iTunes: título, artista, álbum, año y la portada en 600 × 600.

  2. 02

    La letra

    LRCLIB, y si no está, Lyrics.ovh. Se limpian las marcas de tiempo.

  3. 03

    El audio

    El servidor encuentra el video y transmite el audio con yt-dlp; no guarda nada.

  4. 04

    En el teléfono

    El navegador lo convierte a MP3, recorta la portada y escribe las etiquetas ID3 que lee Samsung Music.

Por qué así

  1. Convertir en el navegador

    El servidor solo pasa bytes. Decodificar, codificar y etiquetar lo hace el dispositivo, así no hace falta ffmpeg en ningún lado.

  2. MP3 de verdad

    Samsung Music y Windows ignoran las etiquetas ID3 escritas sobre AAC; por eso se transcodifica.

  3. yt-dlp y no una librería

    Probé ytdl-core y otras: se rompían con la detección de bots. yt-dlp es lo único que aguanta.

  4. Dos descargas a la vez

    Un álbum de veinte canciones no puede tumbar el CPU del celular.

Con qué

Lenguajes

  • JavaScript

Toda la app, cliente y rutas del servidor.

Frameworks

  • Next.js
  • React
  • Tailwind CSS

La interfaz, las rutas de API y la PWA instalable.

Plataforma web

  • Web Audio API
  • Canvas
  • Service Worker

Convertir a MP3 y recortar la portada en el propio celular, sin servidor de audio.

Herramientas

  • yt-dlp
  • YouTube Music
  • Spotify

De dónde sale el audio y cómo se leen álbumes y listas.

IA

  • Antigravity

El entorno con el que la construí en un día.

La prueba

de buscar a tener el MP3 etiquetado
13–17 s
MP3 con portada 600 × 600 y letra
320 kbps
lo que tardé en la primera versión
1 día
commits de la revisión, cada arreglo por separado
12

Lo que no salió

No se puede subir a Vercel ni a ningún hosting: necesita el binario de yt-dlp y YouTube bloquea las IP de los servidores. Vive en mi computadora y la uso desde el celular por la red de la casa.

  • Depende de servicios que cambian: este año se rompieron las listas de YouTube y la API de Spotify empezó a pedir Premium.
  • El audio de YouTube viene a unos 128 kbps: el MP3 de 320 no le agrega calidad.
  • En la revisión apareció un agujero real: el proxy de portadas aceptaba dominios que solo terminaban parecido. Ya está cerrado.

Qué me llevé

  • Con IA se construye rápido; lo que no se ahorra es probar contra los servicios de verdad.
  • Una app que depende de terceros necesita fallar con un mensaje claro, no en silencio.
  • Hacer algo para mí mismo fue la forma más rápida de saber si servía.