You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Youtube Music-swg es una aplicación web que emula la interfaz y funcionalidades de YouTube Music. Construida con Astro para el framework principal, integrada con Svelte para componentes interactivos, y estilizada con Tailwind CSS. Incluye características como reproducción de música, listas de reproducción, descargas, y un reproductor persistente.
La aplicación estará disponible en http://localhost:4321.
Scripts disponibles
npm run dev: Inicia el servidor de desarrollo.
npm run build: Construye la aplicación para producción.
npm run preview: Previsualiza la build de producción.
Tecnologías
Astro
Svelte
Tailwind CSS
TypeScript
Estructura del proyecto
src/components/: Componentes como Player, Sidebar, Navbar, etc.
src/layouts/: Layouts principales.
src/pages/: Páginas como index.astro y search.astro.
src/utils/: Utilidades como Logger, Emitter, etc.
Características
Interfaz responsive con sidebar y reproductor fijo.
Secciones para canciones favoritas, descargas, listas de reproducción y mixes.
Integración de QR (posiblemente para sharing).
Panel de configuraciones.
📚 YouTube Music REST API – Documentación de Rutas
Base URL → http://127.0.0.1
Todas las peticiones requieren cabecera Authorization: <token> salvo /auth/:id.
El SDK expone la clase YouTubeMusicApi y una instancia global YTMusicApi.
🔐 Autenticación
Método
Ruta
Descripción
POST
/auth/{id}
Genera y devuelve un accessToken para el resto de llamadas.
Respuesta: YouTubeMusicSearchResponse → estructura original simplificada a CleanSection[] por la capa cliente.
🔊 Volumen
Método
Ruta
Body
Descripción
GET
/api/v1/volume
—
Obtiene el volumen ({ state: number }).
POST
/api/v1/volume
{ volume: number }
Establece volumen (0-100).
POST
/api/v1/toggle-mute
—
Silencia / des-silencia.
🧩 Tipos Exportados
Tipo
Uso
CleanItem
Resultado individual simplificado tras procesar la búsqueda.
CleanSection
Agrupa CleanItem por secciones (“Canciones”, “Álbumes”, …).
RepeatMode
'NONE' | 'ALL' | 'ONE'
InsertPosition
'INSERT_AT_END' | 'INSERT_AFTER_CURRENT_VIDEO'
Ejemplo Rápido (SDK)
import{YTMusicApi}from'./youtube-music-api';awaitYTMusicApi.authenticate('mi-device-id');// sólo una vez // OPCIONAL(se puede desactivar)awaitYTMusicApi.addToQueue('dQw4w9WgXcQ','INSERT_AFTER_CURRENT_VIDEO');constcurrent=awaitYTMusicApi.getCurrentSong();console.log(current.title);// Never Gonna Give You Up