Skip to content

Commit dc5b2f9

Browse files
authored
chore(docs): Added README-es.md and linked to README.md (#2090)
* Added README.md in spanish language and in original README.md added the link to spanish README.md * Update README-es.md screenshots * Correction on README-es.md * Correction on README-es.md * Correction on README-es.md * Update README.md
1 parent d10b297 commit dc5b2f9

File tree

2 files changed

+391
-1
lines changed

2 files changed

+391
-1
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
</a>
2222
</div>
2323

24-
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md)
24+
Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md)
2525

2626
**Electron wrapper around YouTube Music featuring:**
2727

docs/readme/README-es.md

Lines changed: 390 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,390 @@
1+
<div align="center">
2+
3+
# YouTube Music
4+
5+
[![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/)
6+
[![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)
7+
[![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)
8+
[![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/)
9+
[![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/)
10+
[![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)
11+
[![Known Vulnerabilities](https://snyk.io/test/github/th-ch/youtube-music/badge.svg)](https://snyk.io/test/github/th-ch/youtube-music)
12+
13+
</div>
14+
15+
![Screenshot](/web/screenshot.jpg "Screenshot")
16+
17+
18+
<div align="center">
19+
<a href="https://github.com/th-ch/youtube-music/releases/latest">
20+
<img src="/web/youtube-music.svg" width="400" height="100" alt="YouTube Music SVG">
21+
</a>
22+
</div>
23+
24+
**Electron wrapper de YouTube Music con las siguientes características:**
25+
26+
- Apariencia y sensación nativa, tiene como objetivo mantener la interfaz original
27+
- Framework para plugins personalizados: cambia YouTube Music según tus necesidades (estilo, contenido, funciones), habilita/deshabilita plugins con un solo clic
28+
29+
## Imagen de demostración
30+
31+
| Pantalla del reproductor (color del álbum como tema y luz ambiental) |
32+
|:---------------------------------------------------------------------------------------------------------:|
33+
|![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)|
34+
35+
## Contenido
36+
37+
- [Características](#características)
38+
- [Plugins disponibles](#plugins-disponibles)
39+
- [Traducción](#traducción)
40+
- [Descarga](#descarga)
41+
- [Arch Linux](#arch-linux)
42+
- [macOS](#macos)
43+
- [Windows](#windows)
44+
- [Cómo instalar sin conexión a internet? (en Windows)](#cómo-instalar-sin-conexión-a-internet-en-windows)
45+
- [Temas](#temas)
46+
- [Dev](#dev)
47+
- [Crea tus propios plugins](#crea-tus-propios-plugins)
48+
- [Creación de un plugin](#creación-de-un-plugin)
49+
- [Casos de uso comunes](#casos-de-uso-comunes)
50+
- [Compilar](#compilar)
51+
- [Vista previa de producción](#vista-previa-de-producción)
52+
- [Tests](#tests)
53+
- [Licencia](#licencia)
54+
- [Preguntas frecuentes](#preguntas-frecuentes)
55+
56+
## Características:
57+
58+
- **Confirmación automática al pausar** (Siempre habilitado): desactiva
59+
el mensaje emergente ["¿Continuar reproduciendo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png)
60+
que pausa la música después de cierto tiempo
61+
62+
- Y más ...
63+
64+
## Plugins disponibles:
65+
66+
- **Bloqueador de Anuncios**: Bloquea todos los anuncios y rastreadores de forma predeterminada
67+
68+
- **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
69+
70+
- **Tema de Color del Álbum**: Aplica un tema dinámico y efectos visuales basados en la paleta de colores del álbum
71+
72+
- **Modo Ambiente**: Aplica un efecto de iluminación proyectando colores suaves del video en el fondo de tu pantalla
73+
74+
- **Compresor de Audio**: Aplica compresión al audio (reduce el volumen de las partes más fuertes de la señal y aumenta el
75+
volumen de las partes más suaves)
76+
77+
- **Barra de Navegación Difuminada**: hace que la barra de navegación sea transparente y borrosa
78+
79+
- **Omitir Restricciones de Edades**: omite la verificación de edad de YouTube
80+
81+
- **Selector de Subtítulos**: Habilita los subtítulos
82+
83+
- **Barra Lateral Compacta**: Siempre muestra la barra lateral en modo compacto
84+
85+
- **Crossfade**: Transición suave entre canciones
86+
87+
- **Desactivar Reproducción Automática**: Hace que cada canción comience en modo "pausado"
88+
89+
- **[Discord](https://discord.com/) Rich Presence**: Muestra a tus amigos lo que estás escuchando
90+
con [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png)
91+
92+
- **Descargador**: Descarga
93+
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)
94+
95+
- **Volumen Exponencial**: Hace que el control de volumen
96+
sea [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar la
97+
selección de volúmenes más bajos
98+
99+
- **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)
100+
101+
> (consulta [esta publicación](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) si tienes problemas
102+
para acceder al menú después de habilitar este plugin y la opción hide-menu)
103+
104+
- **Scrobbler**: Agrega soporte para scrobbling en [Last.fm](https://www.last.fm/) y [ListenBrainz](https://listenbrainz.org/)
105+
106+
- **Lumia Stream**: Agrega soporte para [Lumia Stream](https://lumiastream.com/)
107+
108+
- **Letras Genius**: Agrega soporte de letras para la mayoría de las canciones
109+
110+
- **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
111+
112+
- **Navegación**: Flechas de siguiente/anterior integradas directamente en la interfaz, como en tu navegador favorito
113+
114+
- **Sin Inicio de Sesión de Google**: Elimina los botones y enlaces de inicio de sesión de Google de la interfaz
115+
116+
- **Notificaciones**: Muestra una notificación cuando comienza una canción
117+
a reproducirse ([notificaciones interactivas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png)
118+
están disponibles en Windows)
119+
120+
- **Picture-in-picture**: permite cambiar la aplicación al modo picture-in-picture
121+
122+
- **Velocidad de Reproducción**: Escucha rápido, escucha
123+
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)
124+
125+
- **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
126+
127+
- **Atajos (& MPRIS)**: Permite configurar atajos globales para la reproducción (reproducir/pausar/siguiente/anterior) +
128+
desactivar [osd multimedia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png)
129+
al anular las teclas multimedia + habilitar Ctrl/CMD + F para buscar + habilitar el soporte mpris de Linux para
130+
teclas multimedia + [atajos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50)
131+
para [usuarios avanzados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902)
132+
133+
- **Saltar Canción no Gustada**: Salta las canciones que no te gustan
134+
135+
- **Saltar Silencios**: Salta automáticamente las secciones de silencio
136+
137+
- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Salta automáticamente las partes que no son de música, como la introducción/final o
138+
partes de videos musicales donde no se reproduce la canción
139+
140+
- **Control Multimedia en la Barra de Tareas**: Controla la reproducción desde
141+
la [barra de tareas de Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png)
142+
143+
- **TouchBar**: Diseño personalizado de TouchBar para macOS
144+
145+
- **Tuna OBS**: Integración con el complemento [Tuna](https://obsproject.com/forum/resources/tuna.843/) de [OBS](https://obsproject.com/)
146+
147+
- **Cambiador de Calidad de Video**: Permite cambiar la calidad del video con
148+
un [botón](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) en
149+
la superposición de video
150+
151+
- **Alternar Video**: Agrega
152+
un [botón](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para
153+
alternar entre el modo de video/canción. también puede eliminar opcionalmente toda la pestaña de video
154+
155+
- **Visualizador**: Diferentes visualizadores de música
156+
157+
## Traducción
158+
159+
Puedes ayudar con la traducción en [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/).
160+
161+
<a href="https://hosted.weblate.org/engage/youtube-music/">
162+
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/multi-auto.svg" alt="estado de traducción" />
163+
<img src="https://hosted.weblate.org/widget/youtube-music/i18n/287x66-black.png" alt="estado de traducción 2" />
164+
</a>
165+
166+
## Descarga
167+
168+
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.
169+
170+
### Arch Linux
171+
172+
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).
173+
174+
### macOS
175+
176+
Puedes instalar la aplicación usando Homebrew (consulta la [definición de cask](https://github.com/th-ch/homebrew-youtube-music)):
177+
178+
```bash
179+
brew install th-ch/youtube-music/youtube-music
180+
```
181+
182+
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:
183+
184+
```bash
185+
xattr -cr /Applications/YouTube\ Music.app
186+
```
187+
188+
### Windows
189+
190+
Puedes usar el [administrador de paquetes Scoop](https://scoop.sh) para instalar el paquete `youtube-music` desde
191+
el [`extras` bucket](https://github.com/ScoopInstaller/Extras).
192+
193+
```bash
194+
scoop bucket add extras
195+
scoop install extras/youtube-music
196+
```
197+
198+
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`.
199+
200+
*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).*
201+
202+
```bash
203+
winget install th-ch.YouTubeMusic
204+
```
205+
206+
#### Cómo instalar sin conexión a Internet? (en Windows)
207+
208+
- 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).
209+
- `x64` para Windows de 64 bits
210+
- `ia32` para Windows de 32 bits
211+
- `arm64` para Windows ARM64
212+
- Descarga el instalador en la página de lanzamientos. (`*-Setup.exe`)
213+
- Colócalos en el **mismo directorio**.
214+
- Ejecuta el instalador.
215+
216+
## Temas
217+
218+
Puedes cargar archivos CSS para cambiar la apariencia de la aplicación (Opciones > Ajustes visuales > Tema).
219+
220+
Algunos temas predefinidos están disponibles en https://github.com/kerichdev/themes-for-ytmdesktop-player.
221+
222+
## Dev
223+
224+
```bash
225+
git clone https://github.com/th-ch/youtube-music
226+
cd youtube-music
227+
pnpm install --frozen-lockfile
228+
pnpm dev
229+
```
230+
231+
## Crea tus propios plugins
232+
233+
Usando plugins, puedes:
234+
235+
- manipular la aplicación - se pasa el `BrowserWindow` de electron al controlador del plugin
236+
- cambiar la interfaz manipulando el HTML/CSS
237+
238+
### Creación de un plugin
239+
240+
Crea una carpeta en `src/plugins/NOMBRE-DEL-PLUGIN`:
241+
242+
- `index.ts`: el archivo principal del plugin
243+
```typescript
244+
import style from './style.css?inline'; // importar estilo como inline
245+
246+
import { createPlugin } from '@/utils';
247+
248+
export default createPlugin({
249+
name: "Plugin Label",
250+
restartNeeded: true, // si el valor es true, ytmusic muestra el diálogo de reinicio
251+
config: {
252+
enabled: false,
253+
}, // tu configuración personalizada
254+
stylesheets: [style], // tu estilo personalizado,
255+
menu: async ({ getConfig, setConfig }) => {
256+
// Todos los métodos *Config están envueltos en Promise<T>
257+
const config = await getConfig();
258+
return [
259+
{
260+
label: "menu",
261+
submenu: [1, 2, 3].map((value) => ({
262+
label: `value ${value}`,
263+
type: "radio",
264+
checked: config.value === value,
265+
click() {
266+
setConfig({ value });
267+
},
268+
})),
269+
},
270+
];
271+
},
272+
backend: {
273+
start({ window, ipc }) {
274+
window.maximize();
275+
276+
// puedes comunicarte con el plugin de renderizado
277+
ipc.handle("some-event", () => {
278+
return "hello";
279+
});
280+
},
281+
// se activa cuando cambia la configuración
282+
onConfigChange(newConfig) { /* ... */ },
283+
// se activa cuando se desactiva el plugin
284+
stop(context) { /* ... */ },
285+
},
286+
renderer: {
287+
async start(context) {
288+
console.log(await context.ipc.invoke("some-event"));
289+
},
290+
// Solo disponible en el plugin de renderizado
291+
onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
292+
// establecer la configuración del plugin fácilmente
293+
context.setConfig({ myConfig: api.getVolume() });
294+
},
295+
onConfigChange(newConfig) { /* ... */ },
296+
stop(_context) { /* ... */ },
297+
},
298+
preload: {
299+
async start({ getConfig }) {
300+
const config = await getConfig();
301+
},
302+
onConfigChange(newConfig) {},
303+
stop(_context) {},
304+
},
305+
});
306+
307+
```
308+
309+
### Casos de uso comunes
310+
311+
- inyectar CSS personalizado: crea un archivo `style.css` en la misma carpeta y luego:
312+
313+
```typescript
314+
// index.ts
315+
import style from './style.css?inline'; // importar estilo como inline
316+
317+
import { createPlugin } from '@/utils';
318+
319+
export default createPlugin({
320+
name: 'Plugin Label',
321+
restartNeeded: true, // si el valor es true, ytmusic mostrará el diálogo de reinicio
322+
config: {
323+
enabled: false,
324+
}, // tu configuración personalizada
325+
stylesheets: [style], // tu estilo personalizado
326+
renderer() {} // define el hook del renderizador
327+
});
328+
```
329+
330+
- Si quieres cambiar el HTML:
331+
332+
```typescript
333+
import { createPlugin } from '@/utils';
334+
335+
export default createPlugin({
336+
name: 'Plugin Label',
337+
restartNeeded: true, // si el valor es true, ytmusic mostrará el diálogo de reinicio
338+
config: {
339+
enabled: false,
340+
}, // tu configuración personalizada
341+
renderer() {
342+
// Elimina el botón de inicio de sesión
343+
document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
344+
} // define el hook del renderizador
345+
});
346+
```
347+
348+
- comunicación entre el front y el back: se puede hacer utilizando el módulo ipcMain de electron. Ver archivo `index.ts` y
349+
ejemplo en el plugin `sponsorblock`.
350+
351+
## Compilar
352+
353+
1. Clonar el repositorio
354+
2. Seguir [esta guía](https://pnpm.io/es/installation) para instalar `pnpm`
355+
3. Ejecutar `pnpm install --frozen-lockfile` para instalar las dependencias
356+
4. Ejecutar `pnpm build:OS`
357+
358+
- `pnpm dist:win` - Windows
359+
- `pnpm dist:linux` - Linux (amd64)
360+
- `pnpm dist:linux:deb-arm64` - Linux (arm64 para Debian)
361+
- `pnpm dist:linux:rpm-arm64` - Linux (arm64 para Fedora)
362+
- `pnpm dist:mac` - macOS (amd64)
363+
- `pnpm dist:mac:arm64` - macOS (arm64)
364+
365+
Construye la aplicación para macOS, Linux y Windows,
366+
utilizando [electron-builder](https://github.com/electron-userland/electron-builder).
367+
368+
## Vista previa de producción
369+
370+
```bash
371+
pnpm start
372+
```
373+
374+
## Tests
375+
376+
```bash
377+
pnpm test
378+
```
379+
380+
Utiliza [Playwright](https://playwright.dev/) para probar la aplicación.
381+
382+
## Licencia
383+
384+
MIT © [th-ch](https://github.com/th-ch/youtube-music)
385+
386+
## Preguntas frecuentes
387+
388+
### ¿Por qué no se muestra el menú de aplicaciones?
389+
390+
Si la opción `Ocultar menú` está activada - puedes mostrar el menú con la tecla <kbd>alt</kbd> (o <kbd>\`</kbd> [acento grave] si estás utilizando el plugin in-app-menu)

0 commit comments

Comments
 (0)