# YouTube Music [![GitHub release](https://img.shields.io/github/release/th-ch/youtube-music.svg?style=for-the-badge&logo=youtube-music)](https://github.com/th-ch/youtube-music/releases/) [![GitHub license](https://img.shields.io/github/license/th-ch/youtube-music.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/license) [![eslint code style](https://img.shields.io/badge/code_style-eslint-5ed9c7.svg?style=for-the-badge)](https://github.com/th-ch/youtube-music/blob/master/.eslintrc.js) [![Build status](https://img.shields.io/github/actions/workflow/status/th-ch/youtube-music/build.yml?branch=master&style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/) [![GitHub All Releases](https://img.shields.io/github/downloads/th-ch/youtube-music/total?style=for-the-badge&logo=youtube-music)](https://GitHub.com/th-ch/youtube-music/releases/) [![AUR](https://img.shields.io/aur/version/youtube-music-bin?color=blueviolet&style=for-the-badge&logo=youtube-music)](https://aur.archlinux.org/packages/youtube-music-bin) [![Known Vulnerabilities](https://snyk.io/test/github/th-ch/youtube-music/badge.svg)](https://snyk.io/test/github/th-ch/youtube-music)
![Screenshot](/web/screenshot.png "Screenshot")
YouTube Music SVG
Lee esto en otros idiomas: [馃彺 Ingl茅s](../../README.md), [馃嚢馃嚪 Coreano](./README-ko.md), [馃嚝馃嚪 Franc茅s](./README-fr.md), [馃嚠馃嚫 Island茅s](./README-is.md), [馃嚜馃嚫 Espa帽ol](./README-es.md), [馃嚪馃嚭 Ruso](./README-ru.md), [馃嚭馃嚘 Ucraniano](./README-uk.md), [馃嚙馃嚪 Portugu茅s](./README-pt.md), [馃嚡馃嚨 Japon茅s](./README-ja.md) **Electron wrapper de YouTube Music con las siguientes caracter铆sticas:** - Apariencia y sensaci贸n nativa, tiene como objetivo mantener la interfaz original - Framework para plugins personalizados: cambia YouTube Music seg煤n tus necesidades (estilo, contenido, funciones), habilita/deshabilita plugins con un solo clic ## Imagen de demostraci贸n | Pantalla del reproductor (color del 谩lbum como tema y luz ambiental) | |:---------------------------------------------------------------------------------------------------------:| |![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)| ## Contenido - [Caracter铆sticas](#caracter铆sticas) - [Plugins disponibles](#plugins-disponibles) - [Traducci贸n](#traducci贸n) - [Descarga](#descarga) - [Arch Linux](#arch-linux) - [macOS](#macos) - [Windows](#windows) - [C贸mo instalar sin conexi贸n a internet? (en Windows)](#c贸mo-instalar-sin-conexi贸n-a-internet-en-windows) - [Temas](#temas) - [Dev](#dev) - [Crea tus propios plugins](#crea-tus-propios-plugins) - [Creaci贸n de un plugin](#creaci贸n-de-un-plugin) - [Casos de uso comunes](#casos-de-uso-comunes) - [Compilar](#compilar) - [Vista previa de producci贸n](#vista-previa-de-producci贸n) - [Tests](#tests) - [Licencia](#licencia) - [Preguntas frecuentes](#preguntas-frecuentes) ## Caracter铆sticas: - **Confirmaci贸n autom谩tica al pausar** (Siempre habilitado): desactiva el mensaje emergente ["驴Continuar reproduciendo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png) que pausa la m煤sica despu茅s de cierto tiempo - Y m谩s ... ## Plugins disponibles: - **Bloqueador de Anuncios**: Bloquea todos los anuncios y rastreadores de forma predeterminada - **Acciones de 脕lbum**: Agrega botones de deshacer No me gusta, No me gusta, Me gusta, y Deshacer me gusta a todas las canciones de una lista de reproducci贸n o 谩lbum - **Tema de Color del 脕lbum**: Aplica un tema din谩mico y efectos visuales basados en la paleta de colores del 谩lbum - **Modo Ambiente**: Aplica un efecto de iluminaci贸n proyectando colores suaves del video en el fondo de tu pantalla - **Compresor de Audio**: Aplica compresi贸n al audio (reduce el volumen de las partes m谩s fuertes de la se帽al y aumenta el volumen de las partes m谩s suaves) - **Barra de Navegaci贸n Difuminada**: hace que la barra de navegaci贸n sea transparente y borrosa - **Omitir Restricciones de Edades**: omite la verificaci贸n de edad de YouTube - **Selector de Subt铆tulos**: Habilita los subt铆tulos - **Barra Lateral Compacta**: Siempre muestra la barra lateral en modo compacto - **Crossfade**: Transici贸n suave entre canciones - **Desactivar Reproducci贸n Autom谩tica**: Hace que cada canci贸n comience en modo "pausado" - **[Discord](https://discord.com/) Rich Presence**: Muestra a tus amigos lo que est谩s escuchando con [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png) - **Descargador**: Descarga MP3 [directamente desde la interfaz](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl) - **Volumen Exponencial**: Hace que el control de volumen sea [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar la selecci贸n de vol煤menes m谩s bajos - **Men煤 en la Aplicaci贸n**: [da a las barras un aspecto elegante y oscuro](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png) > (consulta [esta publicaci贸n](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) si tienes problemas para acceder al men煤 despu茅s de habilitar este plugin y la opci贸n hide-menu) - **Scrobbler**: Agrega soporte para scrobbling en [Last.fm](https://www.last.fm/) y [ListenBrainz](https://listenbrainz.org/) - **Lumia Stream**: Agrega soporte para [Lumia Stream](https://lumiastream.com/) - **Letras Genius**: Agrega soporte de letras para la mayor铆a de las canciones - **Music Together**: Comparte una lista de reproducci贸n con otros. Cuando el anfitri贸n reproduce una canci贸n, todos los dem谩s escuchar谩n la misma canci贸n - **Navegaci贸n**: Flechas de siguiente/anterior integradas directamente en la interfaz, como en tu navegador favorito - **Sin Inicio de Sesi贸n de Google**: Elimina los botones y enlaces de inicio de sesi贸n de Google de la interfaz - **Notificaciones**: Muestra una notificaci贸n cuando comienza una canci贸n a reproducirse ([notificaciones interactivas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) est谩n disponibles en Windows) - **Picture-in-picture**: permite cambiar la aplicaci贸n al modo picture-in-picture - **Velocidad de Reproducci贸n**: Escucha r谩pido, escucha lento! [Agrega un deslizador que controla la velocidad de reproducci贸n de las canciones](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png) - **Volumen Preciso**: Controla el volumen de forma precisa utilizando la rueda del mouse/atajos de teclado, con un HUD personalizado y pasos de volumen personalizables - **Atajos (& MPRIS)**: Permite configurar atajos globales para la reproducci贸n (reproducir/pausar/siguiente/anterior) + desactivar [osd multimedia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) al anular las teclas multimedia + habilitar Ctrl/CMD + F para buscar + habilitar el soporte mpris de Linux para teclas multimedia + [atajos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) para [usuarios avanzados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902) - **Omitir Canciones No Deseadas**: Salta las canciones que no te gustan - **Saltar Silencios**: Salta autom谩ticamente las secciones de silencio - [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Salta autom谩ticamente las partes que no son de m煤sica, como la introducci贸n/final o partes de videos musicales donde no se reproduce la canci贸n - **Control Multimedia en la Barra de Tareas**: Controla la reproducci贸n desde la [barra de tareas de Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png) - **TouchBar**: Dise帽o personalizado de TouchBar para macOS - **Tuna OBS**: Integraci贸n con el complemento [Tuna](https://obsproject.com/forum/resources/tuna.843/) de [OBS](https://obsproject.com/) - **Cambiador de Calidad de Video**: Permite cambiar la calidad del video con un [bot贸n](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) en la superposici贸n de video - **Alternar Video**: Agrega un [bot贸n](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para alternar entre el modo de video/canci贸n. tambi茅n puede eliminar opcionalmente toda la pesta帽a de video - **Visualizador**: Diferentes visualizadores de m煤sica ## Traducci贸n Puedes ayudar con la traducci贸n en [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/). estado de traducci贸n estado de traducci贸n 2 ## Descarga Puedes consultar la [煤ltima versi贸n](https://github.com/th-ch/youtube-music/releases/latest) para encontrar r谩pidamente la versi贸n m谩s reciente. ### Arch Linux Instala el paquete [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) desde AUR. Para obtener instrucciones de instalaci贸n de AUR, consulta esta [p谩gina del wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages). ### macOS Puedes instalar la aplicaci贸n usando Homebrew (consulta la [definici贸n de cask](https://github.com/th-ch/homebrew-youtube-music)): ```bash brew install th-ch/youtube-music/youtube-music ``` Si instalas la aplicaci贸n manualmente y obtienes un error "est谩 da帽ado y no se puede abrir" al iniciar la aplicaci贸n, ejecuta lo siguiente en la Terminal: ```bash /usr/bin/xattr -cr /Applications/YouTube\ Music.app ``` ### Windows Puedes usar el [administrador de paquetes Scoop](https://scoop.sh) para instalar el paquete `youtube-music` desde el [`extras` bucket](https://github.com/ScoopInstaller/Extras). ```bash scoop bucket add extras scoop install extras/youtube-music ``` Alternativamente, puedes usar [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), el administrador de paquetes CLI oficial de Windows 11 para instalar el paquete `th-ch.YouTubeMusic`. *Nota: Microsoft Defender SmartScreen podr铆a bloquear la instalaci贸n ya que proviene de un "editor desconocido". Esto tambi茅n esv谩lido para la instalaci贸n manual al intentar ejecutar el ejecutable (.exe) despu茅s de una descarga manual aqu铆 en GitHub (mismo archivo).* ```bash winget install th-ch.YouTubeMusic ``` #### C贸mo instalar sin conexi贸n a Internet? (en Windows) - Descarga el archivo `*.nsis.7z` para _la arquitectura de tu dispositivo_ en la [p谩gina de lanzamientos](https://github.com/th-ch/youtube-music/releases/latest). - `x64` para Windows de 64 bits - `ia32` para Windows de 32 bits - `arm64` para Windows ARM64 - Descarga el instalador en la p谩gina de lanzamientos. (`*-Setup.exe`) - Col贸calos en el **mismo directorio**. - Ejecuta el instalador. ## Temas Puedes cargar archivos CSS para cambiar la apariencia de la aplicaci贸n (Opciones > Ajustes visuales > Tema). Algunos temas predefinidos est谩n disponibles en https://github.com/kerichdev/themes-for-ytmdesktop-player. ## Dev ```bash git clone https://github.com/th-ch/youtube-music cd youtube-music pnpm install --frozen-lockfile pnpm dev ``` ## Crea tus propios plugins Usando plugins, puedes: - manipular la aplicaci贸n - se pasa el `BrowserWindow` de electron al controlador del plugin - cambiar la interfaz manipulando el HTML/CSS ### Creaci贸n de un plugin Crea una carpeta en `src/plugins/NOMBRE-DEL-PLUGIN`: - `index.ts`: el archivo principal del plugin ```typescript import style from './style.css?inline'; // importar estilo como inline import { createPlugin } from '@/utils'; export default createPlugin({ name: "Plugin Label", restartNeeded: true, // si el valor es true, ytmusic muestra el di谩logo de reinicio config: { enabled: false, }, // tu configuraci贸n personalizada stylesheets: [style], // tu estilo personalizado, menu: async ({ getConfig, setConfig }) => { // Todos los m茅todos *Config est谩n envueltos en Promise const config = await getConfig(); return [ { label: "menu", submenu: [1, 2, 3].map((value) => ({ label: `value ${value}`, type: "radio", checked: config.value === value, click() { setConfig({ value }); }, })), }, ]; }, backend: { start({ window, ipc }) { window.maximize(); // puedes comunicarte con el plugin de renderizado ipc.handle("some-event", () => { return "hello"; }); }, // se activa cuando cambia la configuraci贸n onConfigChange(newConfig) { /* ... */ }, // se activa cuando se desactiva el plugin stop(context) { /* ... */ }, }, renderer: { async start(context) { console.log(await context.ipc.invoke("some-event")); }, // Solo disponible en el plugin de renderizado onPlayerApiReady(api: YoutubePlayer, context: RendererContext) { // establecer la configuraci贸n del plugin f谩cilmente context.setConfig({ myConfig: api.getVolume() }); }, onConfigChange(newConfig) { /* ... */ }, stop(_context) { /* ... */ }, }, preload: { async start({ getConfig }) { const config = await getConfig(); }, onConfigChange(newConfig) {}, stop(_context) {}, }, }); ``` ### Casos de uso comunes - inyectar CSS personalizado: crea un archivo `style.css` en la misma carpeta y luego: ```typescript // index.ts import style from './style.css?inline'; // importar estilo como inline import { createPlugin } from '@/utils'; export default createPlugin({ name: 'Plugin Label', restartNeeded: true, // si el valor es true, ytmusic mostrar谩 el di谩logo de reinicio config: { enabled: false, }, // tu configuraci贸n personalizada stylesheets: [style], // tu estilo personalizado renderer() {} // define el hook del renderizador }); ``` - Si quieres cambiar el HTML: ```typescript import { createPlugin } from '@/utils'; export default createPlugin({ name: 'Plugin Label', restartNeeded: true, // si el valor es true, ytmusic mostrar谩 el di谩logo de reinicio config: { enabled: false, }, // tu configuraci贸n personalizada renderer() { // Elimina el bot贸n de inicio de sesi贸n document.querySelector(".sign-in-link.ytmusic-nav-bar").remove(); } // define el hook del renderizador }); ``` - comunicaci贸n entre el front y el back: se puede hacer utilizando el m贸dulo ipcMain de electron. Ver archivo `index.ts` y ejemplo en el plugin `sponsorblock`. ## Compilar 1. Clonar el repositorio 2. Seguir [esta gu铆a](https://pnpm.io/es/installation) para instalar `pnpm` 3. Ejecutar `pnpm install --frozen-lockfile` para instalar las dependencias 4. Ejecutar `pnpm build:OS` - `pnpm dist:win` - Windows - `pnpm dist:linux` - Linux (amd64) - `pnpm dist:linux:deb-arm64` - Linux (arm64 para Debian) - `pnpm dist:linux:rpm-arm64` - Linux (arm64 para Fedora) - `pnpm dist:mac` - macOS (amd64) - `pnpm dist:mac:arm64` - macOS (arm64) Construye la aplicaci贸n para macOS, Linux y Windows, utilizando [electron-builder](https://github.com/electron-userland/electron-builder). ## Vista previa de producci贸n ```bash pnpm start ``` ## Tests ```bash pnpm test ``` Utiliza [Playwright](https://playwright.dev/) para probar la aplicaci贸n. ## Licencia MIT 漏 [th-ch](https://github.com/th-ch/youtube-music) ## Preguntas frecuentes ### 驴Por qu茅 no se muestra el men煤 de aplicaciones? Si la opci贸n `Ocultar men煤` est谩 activada - puedes mostrar el men煤 con la tecla alt (o \` [acento grave] si est谩s utilizando el plugin in-app-menu)