Skip to content

Latest commit

 

History

History
375 lines (262 loc) · 15.7 KB

README-pt.md

File metadata and controls

375 lines (262 loc) · 15.7 KB

YouTube Music

GitHub release GitHub license eslint code style Build status GitHub All Releases AUR Known Vulnerabilities

Screenshot

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.

Imagem de demonstração

Tela do Player (tema de cores do álbum e luz ambiente)
Screenshot1

Conteúdo

Recursos:

  • 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...

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 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

  • Tuna OBS: Integração com o plugin Tuna do OBS

  • 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

Tradução

Você pode ajudar com as traduções no Hosted Weblate.

status da tradução status da tradução 2

Download

Você pode verificar o último lançamento para encontrar rapidamente a versão mais recente.

Arch Linux

Instale o pacote youtube-music-bin do AUR. Para instruções de instalação do AUR, consulte esta página da wiki.

macOS

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

Windows

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

Como instalar sem conexão à internet? (no Windows)

  • Baixe o arquivo *.nsis.7z para sua arquitetura de dispositivo na página de lançamentos.
    • 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

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
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) {},
  },
});

Casos de uso comuns

  • 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 plugin sponsorblock.

Compilar

  1. Clone o repositório
  2. Siga este guia 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.

Prévia de Produção

pnpm start

Testes

pnpm test

Utiliza Playwright para testar o aplicativo.

Licença

MIT © th-ch

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)