Leia em outros idiomas: 🏴 Inglês, 🇰🇷 Coreano, 🇫🇷 Francês, 🇮🇸 Islandês, 🇪🇸 Espanhol, 🇷🇺 Russo, 🇧🇷 Português
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.
Tela do Player (tema de cores do álbum e luz ambiente) |
---|
![]() |
- Recursos
- Plugins disponíveis
- Tradução
- Download
- Temas
- Dev
- Crie seus próprios plugins
- Compilar
- Prévia de produção
- Testes
- Licença
- Perguntas Frequentes
-
Confirmação automática quando pausado (Sempre ativado): desativa o popup "Continuar assistindo?" que pausa a música após um certo tempo
-
E mais...
-
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 Rich Presence: Mostra para seus amigos o que você está ouvindo com Rich Presence
-
Downloader: Baixa MP3 diretamente da interface (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 para facilitar a seleção de volumes mais baixos
-
Menu integrado: Dá às barras um visual elegante e escuro
(veja este post 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 e ListenBrainz
-
Lumia Stream: Adiciona suporte para Lumia Stream
-
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 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
-
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 sobrescrevendo teclas de mídia + ativa Ctrl/CMD + F para busca + suporte a MPRIS no Linux para teclas de mídia + atalhos personalizados para usuários avançados
-
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: 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
-
Controle de mídia na barra de tarefas: Controle a reprodução pela barra de tarefas do Windows
-
TouchBar: Layout personalizado para a TouchBar do macOS
-
Seletor de qualidade de vídeo: Permite alterar a qualidade do vídeo com um botão na sobreposição do vídeo
-
Alternar vídeo: Adiciona um botão para alternar entre modos Vídeo/Música. Pode também remover completamente a aba de vídeo
-
Visualizador: Diferentes visualizadores de música
Você pode ajudar com as traduções no Hosted Weblate.
Você pode verificar o último lançamento para encontrar rapidamente a versão mais recente.
Instale o pacote youtube-music-bin
do AUR. Para instruções de instalação do AUR, consulte esta página da wiki.
Você pode instalar o aplicativo usando Homebrew (veja a definição do cask):
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:
/usr/bin/xattr -cr /Applications/YouTube\ Music.app
Você pode usar o gerenciador de pacotes Scoop para instalar o pacote youtube-music
do extras bucket
.
scoop bucket add extras
scoop install extras/youtube-music
Alternativamente, você pode usar o 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).
winget install th-ch.YouTubeMusic
- Baixe o arquivo
*.nsis.7z
para sua arquitetura de dispositivo na página de lançamentos.x64
para Windows 64-bitia32
para Windows 32-bitarm64
para Windows ARM64
- Baixe o instalador na página de lançamentos (
*-Setup.exe
) - Coloque os arquivos no mesmo diretório
- Execute o instalador
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.
git clone https://github.com/th-ch/youtube-music
cd youtube-music
pnpm install --frozen-lockfile
pnpm dev
Usando plugins, você pode:
- Manipular o aplicativo - o
BrowserWindow
do electron é passado para o manipulador de plugins - Alterar a interface manipulando o HTML/CSS
Crie uma pasta em src/plugins/NOMBRE-DEL-PLUGIN
:
index.ts
: o arquivo principal do plugin
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<T>
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) {},
},
});
- Injetar CSS personalizado: crie um arquivo
style.css
na mesma pasta e então:
// 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:
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 pluginsponsorblock
.
- Clone o repositório
- Siga este guia para instalar o
pnpm
- Execute
pnpm install --frozen-lockfile
para instalar as dependências - Execute
pnpm build:OS
pnpm dist:win
- Windowspnpm 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.
pnpm start
pnpm test
Utiliza Playwright para testar o aplicativo.
MIT © th-ch
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)