diff --git a/README.md b/README.md index 5c2b8945db..59523eb9fa 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ -Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇫🇷](./docs/readme/README-fr.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md), [🇷🇺](./docs/readme/README-ru.md), [🇭🇺](./docs/readme/README-hu.md), [🇯🇵](./docs/readme/README-ja.md) +Read this in other languages: [🇰🇷](./docs/readme/README-ko.md), [🇫🇷](./docs/readme/README-fr.md), [🇮🇸](./docs/readme/README-is.md), [🇨🇱 🇪🇸](./docs/readme/README-es.md), [🇷🇺](./docs/readme/README-ru.md), [🇭🇺](./docs/readme/README-hu.md), [🇧🇷](./docs/readme/README-pt.md), [🇯🇵](./docs/readme/README-ja.md) **Electron wrapper around YouTube Music featuring:** diff --git a/docs/readme/README-es.md b/docs/readme/README-es.md index 771c428858..d8b0824879 100644 --- a/docs/readme/README-es.md +++ b/docs/readme/README-es.md @@ -21,7 +21,7 @@ -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), [🇯🇵 Japonés](./README-ja.md) +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), [🇧🇷 Portugués](./README-pt.md), [🇯🇵 Japonés](./README-ja.md) **Electron wrapper de YouTube Music con las siguientes características:** diff --git a/docs/readme/README-fr.md b/docs/readme/README-fr.md index a5d8d71b98..e446348fd2 100644 --- a/docs/readme/README-fr.md +++ b/docs/readme/README-fr.md @@ -21,7 +21,7 @@ -Lisez ceci dans d'autres langues: [🏴 Anglais](../../README.md), [🇰🇷 Coréen](./README-ko.md), [🇫🇷 Français](./README-fr.md), [🇮🇸 Islandais](./README-is.md), [🇪🇸 Espagnol](./README-es.md), [🇷🇺 Russe](./README-ru.md), [🇯🇵 Japonais](./README-ja.md) +Lisez ceci dans d'autres langues: [🏴 Anglais](../../README.md), [🇰🇷 Coréen](./README-ko.md), [🇫🇷 Français](./README-fr.md), [🇮🇸 Islandais](./README-is.md), [🇪🇸 Espagnol](./README-es.md), [🇷🇺 Russe](./README-ru.md), [🇧🇷 Portugais](./README-pt.md), [🇯🇵 Japonais](./README-ja.md) **Enveloppe Electron autour de YouTube Music offrant :** diff --git a/docs/readme/README-hu.md b/docs/readme/README-hu.md index 2bc855afc1..516b7c9b56 100644 --- a/docs/readme/README-hu.md +++ b/docs/readme/README-hu.md @@ -21,7 +21,7 @@ -Olvasd el más nyelveken: [🏴 Angol](../../README.md), [🇰🇷 Korea](./README-ko.md), [🇫🇷 Francia](./README-fr.md), [🇮🇸 Izland](./README-is.md), [🇪🇸 Spanyol](./README-es.md), [🇷🇺 Orosz](./README-ru.md), [🇯🇵 Japán](./README-ja.md) +Olvasd el más nyelveken: [🏴 Angol](../../README.md), [🇰🇷 Korea](./README-ko.md), [🇫🇷 Francia](./README-fr.md), [🇮🇸 Izland](./README-is.md), [🇪🇸 Spanyol](./README-es.md), [🇷🇺 Orosz](./README-ru.md), [🇧🇷 Portugál](./README-pt.md), [🇯🇵 Japán](./README-ja.md) **Electron keretrendszerre épülő alkalmazás a YouTube Music számára, amely a következőket kínálja:** diff --git a/docs/readme/README-is.md b/docs/readme/README-is.md index d8d05b52dd..d5c32a77b4 100644 --- a/docs/readme/README-is.md +++ b/docs/readme/README-is.md @@ -21,7 +21,7 @@ -Lestu þetta á öðrum tungumálum: [🏴 Ensku](../../README.md), [🇰🇷 Kóreska](./README-ko.md), [🇫🇷 Franska](./README-fr.md), [🇮🇸 Íslenskur](./README-is.md), [🇪🇸 Spænska](./README-es.md), [🇷🇺 Rússneska](./README-ru.md), [🇯🇵 Japanska](./README-ja.md) +Lestu þetta á öðrum tungumálum: [🏴 Ensku](../../README.md), [🇰🇷 Kóreska](./README-ko.md), [🇫🇷 Franska](./README-fr.md), [🇮🇸 Íslenskur](./README-is.md), [🇪🇸 Spænska](./README-es.md), [🇷🇺 Rússneska](./README-ru.md), [🇧🇷 Portúgalska](./README-pt.md), [🇯🇵 Japanska](./README-ja.md) **Electron umbúðir utan um YouTube Tónlist sem inniheldur:** diff --git a/docs/readme/README-ko.md b/docs/readme/README-ko.md index 65be978869..d758113b36 100644 --- a/docs/readme/README-ko.md +++ b/docs/readme/README-ko.md @@ -20,7 +20,7 @@ -다른 언어로 읽어보세요: [🏴 영어](../../README.md), [🇰🇷 한국인](./README-ko.md), [🇫🇷 프랑스 국민](./README-fr.md), [🇮🇸 아이슬란드어](./README-is.md), [🇪🇸 스페인 사람](./README-es.md), [🇷🇺 러시아인](./README-ru.md), [🇯🇵 일본어](./README-ja.md) +다른 언어로 읽어보세요: [🏴 영어](../../README.md), [🇰🇷 한국인](./README-ko.md), [🇫🇷 프랑스 국민](./README-fr.md), [🇮🇸 아이슬란드어](./README-is.md), [🇪🇸 스페인 사람](./README-es.md), [🇷🇺 러시아인](./README-ru.md), [🇧🇷 포르투갈어](./README-pt.md), [🇯🇵 일본어](./README-ja.md) **유튜브 뮤직의 Electron 래퍼; 기능:** diff --git a/docs/readme/README-pt.md b/docs/readme/README-pt.md new file mode 100644 index 0000000000..9ec48682e1 --- /dev/null +++ b/docs/readme/README-pt.md @@ -0,0 +1,375 @@ +
+ +# 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 + +
+ +Leia em outros idiomas: [🏴 Inglês](../../README.md), [🇰🇷 Coreano](./README-ko.md), [🇫🇷 Francês](./README-fr.md), [🇮🇸 Islandês](./README-is.md), [🇪🇸 Espanhol](./README-es.md), [🇷🇺 Russo](./README-ru.md), [🇧🇷 Português](./README-pt.md) + +**Wrapper do Electron para o YouTube Music com os seguintes recursos:** + +- Visual e comportamento nativos: Mantém a interface original do YouTube Music. +- Estrutura para plugins personalizados: Adapte o YouTube Music às suas necessidades (estilo, conteúdo, funcionalidades). Ative/desative plugins com um clique. + +## Imagem de demonstração + +| Tela do Player (tema de cores do álbum e luz ambiente) | +|:---------------------------------------------------------------------------------------------------------:| +|![Screenshot1](https://github.com/th-ch/youtube-music/assets/16558115/53efdf73-b8fa-4d7b-a235-b96b91ea77fc)| + +## Conteúdo + +- [Recursos](#recursos) +- [Plugins disponíveis](#plugins-disponíveis) +- [Tradução](#tradução) +- [Download](#download) + - [Arch Linux](#arch-linux) + - [MacOS](#macos) + - [Windows](#windows) + - [Como instalar sem conexão à internet? (no Windows)](#como-instalar-sem-conexão-à-internet-no-windows) +- [Temas](#temas) +- [Dev](#dev) +- [Crie seus próprios plugins](#crie-seus-próprios-plugins) + - [Criando um plugin](#criando-um-plugin) + - [Casos de uso comuns](#casos-de-uso-comuns) +- [Compilar](#compilar) +- [Prévia de produção](#prévia-de-produção) +- [Testes](#testes) +- [Licença](#licença) +- [Perguntas Frequentes](#perguntas-frequentes) + +## Recursos: + +- **Confirmação automática quando pausado** (Sempre ativado): desativa + o popup ["Continuar assistindo?"](https://user-images.githubusercontent.com/61631665/129977894-01c60740-7ec6-4bf0-9a2c-25da24491b0e.png) + que pausa a música após um certo tempo + +- E mais... + +## Plugins disponíveis: + +- **Bloqueador de anúncios**: Bloqueia todos os anúncios e rastreamentos automaticamente + +- **Ações de Álbum**: Adiciona botões para Remover dislike, Dar dislike, Curtir e Remover curtida em todas as músicas de uma playlist ou álbum + +- **Tema de cores do álbum**: Aplica um tema dinâmico e efeitos visuais baseados na paleta de cores do álbum + +- **Modo ambiente**: Cria um efeito de iluminação projetando cores suaves do vídeo no fundo da tela + +- **Compressor de áudio**: Aplica compressão ao áudio (reduz o volume das partes mais altas e aumenta o das mais baixas) + +- **Barra de navegação desfocada**: Torna a barra de navegação transparente e desfocada + +- **Contornar restrições de idade**: Ignora a verificação de idade do YouTube + +- **Seletor de legendas**: Ativa legendas + +- **Barra lateral compacta**: Mantém a barra lateral sempre no modo compacto + +- **Crossfade**: Transição suave entre músicas + +- **Desativar reprodução automática**: Faz com que todas as músicas iniciem no modo "pausado" + +- **[Discord](https://discord.com/) Rich Presence**: Mostra para seus amigos o que você está ouvindo com [Rich Presence](https://user-images.githubusercontent.com/28219076/104362104-a7a0b980-5513-11eb-9744-bb89eabe0016.png) + +- **Downloader**: Baixa MP3 [diretamente da interface](https://user-images.githubusercontent.com/61631665/129977677-83a7d067-c192-45e1-98ae-b5a4927393be.png) [(youtube-dl)](https://github.com/ytdl-org/youtube-dl) + +- **Equalizador**: Adiciona filtros para aumentar ou reduzir faixas específicas de frequência (ex: reforço de graves) + +- **Volume exponencial**: Torna o controle de volume [exponencial](https://greasyfork.org/en/scripts/397686-youtube-music-fix-volume-ratio/) para facilitar a seleção de volumes mais baixos + +- **Menu integrado**: [Dá às barras um visual elegante e escuro](https://user-images.githubusercontent.com/78568641/112215894-923dbf00-8c29-11eb-95c3-3ce15db27eca.png) + + > (veja [este post](https://github.com/th-ch/youtube-music/issues/410#issuecomment-952060709) se tiver problemas para acessar o menu após ativar este plugin e a opção de ocultar menu) + +- **Scrobbler**: Adiciona suporte para scrobbling no [Last.fm](https://www.last.fm/) e [ListenBrainz](https://listenbrainz.org/) + +- **Lumia Stream**: Adiciona suporte para [Lumia Stream](https://lumiastream.com/) + +- **Letras Genius**: Adiciona suporte a letras para a maioria das músicas + +- **Música Juntos**: Compartilhe uma playlist com outros. Quando o host toca uma música, todos ouvem a mesma música + +- **Navegação**: Botões de avançar/voltar integrados diretamente na interface, como no seu navegador favorito + +- **Sem login do Google**: Remove botões e links de login do Google da interface + +- **Notificações**: Exibe uma notificação quando uma música começa a tocar ([notificações interativas](https://user-images.githubusercontent.com/78568641/114102651-63ce0e00-98d0-11eb-9dfe-c5a02bb54f9c.png) disponíveis no Windows) + +- **Picture-in-picture**: Permite alternar o aplicativo para o modo picture-in-picture + +- **Velocidade de reprodução**: Ouça rápido, ouça devagar! [Adiciona um controle deslizante para ajustar a velocidade](https://user-images.githubusercontent.com/61631665/129976003-e55db5ba-bf42-448c-a059-26a009775e68.png) + +- **Volume preciso**: Controle o volume com precisão usando roda do mouse/atalhos, com HUD personalizado e níveis de volume customizáveis + +- **Atalhos (& MPRIS)**: Permite configurar teclas de atalho globais para controle (play/pause/próxima/anterior) + desativa [OSD de mídia](https://user-images.githubusercontent.com/84923831/128601225-afa38c1f-dea8-4209-9f72-0f84c1dd8b54.png) sobrescrevendo teclas de mídia + ativa Ctrl/CMD + F para busca + suporte a MPRIS no Linux para teclas de mídia + [atalhos personalizados](https://github.com/Araxeus/youtube-music/blob/1e591d6a3df98449bcda6e63baab249b28026148/providers/song-controls.js#L13-L50) para [usuários avançados](https://github.com/th-ch/youtube-music/issues/106#issuecomment-952156902) + +- **Pular músicas marcadas com "não gostei"**: Ignora automaticamente músicas que você deu dislike + +- **Pular silêncios**: Ignora automaticamente seções silenciosas + +- [**SponsorBlock**](https://github.com/ajayyy/SponsorBlock): Ignora automaticamente partes não musicais como introduções/outros ou partes de clipes onde a música não está tocando + +- **Letras sincronizadas**: Fornece letras sincronizadas para músicas, usando serviços como [LRClib](https://lrclib.net) + +- **Controle de mídia na barra de tarefas**: Controle a reprodução pela [barra de tarefas do Windows](https://user-images.githubusercontent.com/78568641/111916130-24a35e80-8a82-11eb-80c8-5021c1aa27f4.png) + +- **TouchBar**: Layout personalizado para a TouchBar do macOS + +- **Tuna OBS**: Integração com o plugin [Tuna](https://obsproject.com/forum/resources/tuna.843/) do [OBS](https://obsproject.com/) + +- **Seletor de qualidade de vídeo**: Permite alterar a qualidade do vídeo com um [botão](https://user-images.githubusercontent.com/78568641/138574366-70324a5e-2d64-4f6a-acdd-dc2a2b9cecc5.png) na sobreposição do vídeo + +- **Alternar vídeo**: Adiciona um [botão](https://user-images.githubusercontent.com/28893833/173663950-63e6610e-a532-49b7-9afa-54cb57ddfc15.png) para alternar entre modos Vídeo/Música. Pode também remover completamente a aba de vídeo + +- **Visualizador**: Diferentes visualizadores de música + +## Tradução + +Você pode ajudar com as traduções no [Hosted Weblate](https://hosted.weblate.org/projects/youtube-music/). + + + status da tradução + status da tradução 2 + + +## Download + +Você pode verificar o [último lançamento](https://github.com/th-ch/youtube-music/releases/latest) para encontrar rapidamente a versão mais recente. + +### Arch Linux + +Instale o pacote [`youtube-music-bin`](https://aur.archlinux.org/packages/youtube-music-bin) do AUR. Para instruções de instalação do AUR, consulte esta [página da wiki](https://wiki.archlinux.org/index.php/Arch_User_Repository#Installing_packages). + +### macOS + +Você pode instalar o aplicativo usando Homebrew (veja a [definição do cask](https://github.com/th-ch/homebrew-youtube-music)): + +```bash +brew install th-ch/youtube-music/youtube-music +``` + +Se você instalar o aplicativo manualmente e receber o erro "is damaged and can’t be opened." ao abrir o app, execute o seguinte no Terminal: + +```bash +/usr/bin/xattr -cr /Applications/YouTube\ Music.app +``` + +### Windows + +Você pode usar o [gerenciador de pacotes Scoop](https://scoop.sh) para instalar o pacote `youtube-music` do [`extras bucket`](https://github.com/ScoopInstaller/Extras). + +```bash +scoop bucket add extras +scoop install extras/youtube-music +``` + +Alternativamente, você pode usar o [Winget](https://learn.microsoft.com/en-us/windows/package-manager/winget/), o gerenciador de pacotes CLI oficial do Windows 11, para instalar o pacote `th-ch.YouTubeMusic`. + +*Nota: O Microsoft Defender SmartScreen pode bloquear a instalação por ser de um "publicador desconhecido". Isso também acontece na instalação manual ao tentar executar o arquivo .exe após download manual aqui no GitHub (mesmo arquivo).* + +```bash +winget install th-ch.YouTubeMusic +``` + +#### Como instalar sem conexão à internet? (no Windows) + +- Baixe o arquivo `*.nsis.7z` para _sua arquitetura de dispositivo_ na [página de lançamentos](https://github.com/th-ch/youtube-music/releases/latest). + - `x64` para Windows 64-bit + - `ia32` para Windows 32-bit + - `arm64` para Windows ARM64 +- Baixe o instalador na página de lançamentos (`*-Setup.exe`) +- Coloque os arquivos no **mesmo diretório** +- Execute o instalador + +## Temas + +Você pode carregar arquivos CSS para alterar a aparência do aplicativo (Opções > Ajustes Visuais > Temas). + +Alguns temas pré-definidos estão disponíveis em 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 +``` + +## Crie seus próprios plugins + +Usando plugins, você pode: + +- Manipular o aplicativo - o `BrowserWindow` do electron é passado para o manipulador de plugins +- Alterar a interface manipulando o HTML/CSS + +### Criando um plugin + +Crie uma pasta em `src/plugins/NOMBRE-DEL-PLUGIN`: + +- `index.ts`: o arquivo principal do plugin +```typescript +import style from './style.css?inline'; // importar estilo como inline + +import { createPlugin } from '@/utils'; + +export default createPlugin({ + name: "Plugin Label", + restartNeeded: true, // se true, o ytmusic mostra diálogo de reinício + config: { + enabled: false, + }, // sua configuração personalizada + stylesheets: [style], // seu estilo personalizado + menu: async ({ getConfig, setConfig }) => { + // Todos os métodos *Config são wrappers 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(); + + // você pode se comunicar com o plugin renderer + ipc.handle("some-event", () => { + return "hello"; + }); + }, + // disparado quando a configuração muda + onConfigChange(newConfig) { /* ... */ }, + // disparado quando o plugin é desativado + stop(context) { /* ... */ }, + }, + renderer: { + async start(context) { + console.log(await context.ipc.invoke("some-event")); + }, + // Hook disponível apenas no renderer + 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 comuns + +- **Injetar CSS personalizado**: crie um arquivo `style.css` na mesma pasta e então: + +```typescript +// index.ts +import style from './style.css?inline'; // importa estilo como inline + +import { createPlugin } from '@/utils'; + +export default createPlugin({ + name: 'Plugin Label', + restartNeeded: true, // se true, o ytmusic mostrará um diálogo de reinício + config: { + enabled: false, + }, // sua configuração personalizada + stylesheets: [style], // seu estilo personalizado + renderer() {} // define o hook renderer +}); +``` + +- Se quiser alterar o HTML: + +```typescript +import { createPlugin } from '@/utils'; + +export default createPlugin({ + name: 'Plugin Label', + restartNeeded: true, // se true, o ytmusic mostrará o diálogo de reinício + config: { + enabled: false, + }, // sua configuração personalizada + renderer() { + // Remove o botão de login + document.querySelector(".sign-in-link.ytmusic-nav-bar").remove(); + } // define o hook renderer +}); +``` + +- Comunicação entre front-end e back-end: pode ser feita usando o módulo ipcMain do Electron. Consulte o arquivo `index.ts` e o exemplo no plugin `sponsorblock`. + +## Compilar + +1. Clone o repositório +2. Siga [este guia](https://pnpm.io/installation) para instalar o `pnpm` +3. Execute `pnpm install --frozen-lockfile` para instalar as dependências +4. Execute `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) + +Compila o aplicativo para macOS, Linux e Windows, +usando [electron-builder](https://github.com/electron-userland/electron-builder). + +## Prévia de Produção + +```bash +pnpm start +``` + +## Testes + +```bash +pnpm test +``` + +Utiliza [Playwright](https://playwright.dev/) para testar o aplicativo. + +## Licença + +MIT © [th-ch](https://github.com/th-ch/youtube-music) + +## Perguntas Frequentes + +### Por que o menu do aplicativo não aparece? + +Se a opção `Ocultar menu` estiver ativada - você pode exibir o menu com a tecla alt (ou \` [acento grave] se estiver usando o plugin in-app-menu) diff --git a/docs/readme/README-ru.md b/docs/readme/README-ru.md index c8e2eeb30e..c8b451f317 100644 --- a/docs/readme/README-ru.md +++ b/docs/readme/README-ru.md @@ -21,7 +21,7 @@ -Прочтите это на других языках: [🏴 Английский](../../README.md), [🇰🇷 корейский](./README-ko.md), [🇫🇷 Французский](./README-fr.md), [🇮🇸 исландский](./README-is.md), [🇪🇸 испанский](./README-es.md), [🇷🇺 Русский](./README-ru.md) +Прочтите это на других языках: [🏴 Английский](../../README.md), [🇰🇷 корейский](./README-ko.md), [🇫🇷 Французский](./README-fr.md), [🇮🇸 исландский](./README-is.md), [🇪🇸 испанский](./README-es.md), [🇷🇺 Русский](./README-ru.md), [🇧🇷 Португальский](./README-pt.md) **Клиент для YouTube Music основанный на Electron с поддержкой:**