Skip to content

Latest commit

 

History

History
374 lines (262 loc) · 19.9 KB

README-ru.md

File metadata and controls

374 lines (262 loc) · 19.9 KB

YouTube Music

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

Screenshot

Клиент для YouTube Music основанный на Electron с поддержкой:

  • Нативный вид приложения, нацелен на сохранение оригинального интерфейса
  • Фреймворк для пользовательских плагинов: изменяйте YouTube Music под ваши нужды (внешний вид, контент, возможности), включайте/выключайте плагины в один клик

Демо-изображение

Экран плеера (цветовая тема альбома & режим Ambient)
Screenshot1

Содержание

Возможности:

  • Авто-подтверждение при паузе (Всегда включено): отключает всплывающие уведомление "Продолжить просмотр?", которое приостанавливает воспроизведение через определённое время

  • И больше ...

Доступные плагины:

  • Блокировщик рекламы: Блокирует всю рекламу и трекеры

  • Действия с альбомом: Добавляет кнопки "Убрать дизлайк", "Дизлайк", "Лайк", "Убрать лайк" и применяет их действия ко всем трекам в плейлисте или альбоме

  • Цветовая тема альбома: Применяет динамическую тему и эффекты, основываясь на цветовой палитре альбома

  • Режим Ambient: Применяет световой эффект, проецируя нежные цвета из видео на задний фон вашего экрана

  • Нормализация аудио: Применяет нормализацию к аудио (уменьшает громкость громких частей трека и повышает громкость тихих частей трека)

  • Размытие панели навигации: Делает панель навигации прозрачной и размытой

  • Обход возрастных ограничений: Обходит проверку возраста YouTube

  • Выбор субтитров: Включить субтитры

  • Компактная боковая панель: Всегда показывать боковую панель компактно

  • Плавный переход: Плавный переход между треками

  • Отключить автопроигрыш: Каждый трек начинается в режиме паузы

  • Discord Rich Presence: Показывает вашим друзьям, что вы слушаете с помощью Rich Presence

  • Загрузчик: Загрузка MP3 напрямую из интерфейса (youtube-dl)

  • Расширенная громкость: Делает слайдер громкости расширенным облегчая выбор громкости

  • Меню в приложении: Придаёт панели меню красивый тёмный вид

    (посмотрите этот пост, если у вас есть проблемы с доступом к меню после включения этого плагина и опции "Скрыть меню")

  • Скробблер: Добавляет поддержку скробблинга Last.fm и ListenBrainz

  • Lumia Stream: Добавляет поддержку Lumia Stream

  • Тесты песен Genius: Добавляет поддержку текстов для большинства песен

  • Music Together: Делитесь плейлистом с другими. Когда ведущий воспроизводит трек, все остальные будут слушать этот же трек.

  • Навигация: Кнопки Назад/Вперед интегрированы в интерфейс, как в вашем любимом браузере

  • Без входа в систему Google: Убирает из интерфейса кнопки и ссылки для входа через Google

  • Уведомления: Показывает уведомление, когда трек начинает играть (интерактивные уведомления доступны только для Windows)

  • Картинка в картинке: Позволяет переключить приложение в режим "картинка в картинке"

  • Скорость воспроизведения: Слушайте быстрее, слушайте медленнее! Добавляет слайдер для контроля скорости трека

  • Точная громкость: Точечно управляйте громкостью с помощью колеса мыши/горячих клавиш, с кастомным интерфейсом и настраиваемыми шагами громкости

  • Ярлыки (и MPRIS): Позволяет настроить глобальные горячие клавиши управления воспроизведением (плей/пауза/следующий/предыдущий) + отключает отображение медиа на экране, переопределяя клавиши управления + включает Ctrl/CMD + F для поиска + включает поддержку linux mpris для клавиш управления медиа + настраиваемые сочетания клавиш для продвинутых пользователей

  • Пропускать непонравившиеся треки: Пропускает непонравившиеся треки

  • Пропуск тишины: Автоматически пропускает тихие моменты в песнях

  • SponsorBlock: Автоматически пропускает немузыкальные части, такие как интро/аутро музыкальных видео, где трек не играет

  • Управление воспроизведением из панели задач: Управляйте воспроизведением из панели задач Windows

  • TouchBar: Кастомная раскладка TouchBar для MacOS

  • Tuna OBS: Интеграция с OBS плагином Tuna

  • Изменение качества видео: Позволяет менять качество видео кнопкой на медиаплеере видео

  • Переключатель видео: Добавляет кнопку переключения режимов Трек/Видео. Также может удалять вкладку "Видео" полностью

  • Визуализатор: Различные визуализаторы музыки

  • Synced Lyrics: Предоставляет синхронизированные слова для песен из таких источников, как LRClib.

Перевод

Вы можете помочь с переводом на ваш язык на Hosted Weblate.

translation status translation status 2

Скачать

Вы можете посмотреть latest release, чтобы быстро найти новую версию.

Arch Linux

Установите пакет youtube-music-bin из AUR. Инструкции по установке из AUR можете найти на этой вики-странице.

macOS

Вы можете установить приложение с помощью Homebrew (сморите cask definition):

brew install th-ch/youtube-music/youtube-music

Если вы устанавливаете приложение вручную и получаете ошибку "is damaged and can’t be opened.", запустите в терминале следующую команду:

/usr/bin/xattr -cr /Applications/YouTube\ Music.app

Windows

Вы можете использовать пакетный менеджер Scoop для установки пакета youtube-music из extras bucket.

scoop bucket add extras
scoop install extras/youtube-music

Также для установки вы можете использовать Winget, официальный пакетный менеджер командной строки Windows 11, для установки пакета th-ch.YouTubeMusic.

К сведению: SmartScreen защитника Windows может блокировать установку, так как она от "неизвестного издателя". Это также применимо к методу ручной установки, когда вы пытаетесь запустить исполняемый файл(.exe) после загрузки здесь, на GitHub (тот же файл).

winget install th-ch.YouTubeMusic

Установка без подключения к Интернету? (в Windows)

  • Скачайте файл *.nsis.7z из архетиктура вашего устройства на release page.
    • x64 для 64-bit Windows
    • ia32 для 32-bit Windows
    • arm64 для ARM64 Windows
  • Скачайте установщик в release page. (*-Setup.exe)
  • Поместите их в одной директории.
  • Запустите установщик.

Темы

Вы можете загрузить файл CSS для смены внешнего вида приложения (Настройки > Визуальные настройки > Тема).

Некоторые предустановленные темы доступны здесь: 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

Создайте свои собственные плагины

Используя плагины вы можете:

  • Манипулировать приложением - BrowserWindow из electron проброшен обработчику плагинов
  • Изменять внешний вид, манипулируя HTML/CSS

Создание плагина

Создайте директорию в src/plugins/YOUR-PLUGIN-NAME:

  • index.ts: основной файл плагина
import style from './style.css?inline'; // import style as inline

import { createPlugin } from '@/utils';

export default createPlugin({
  name: 'Plugin Label',
  restartNeeded: true, // if value is true, ytmusic show restart dialog
  config: {
    enabled: false,
  }, // your custom config
  stylesheets: [style], // your custom style,
  menu: async ({ getConfig, setConfig }) => {
    // All *Config methods are wrapped 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();

      // you can communicate with renderer plugin
      ipc.handle('some-event', () => {
        return 'hello';
      });
    },
    // it fired when config changed
    onConfigChange(newConfig) { /* ... */ },
    // it fired when plugin disabled
    stop(context) { /* ... */ },
  },
  renderer: {
    async start(context) {
      console.log(await context.ipc.invoke('some-event'));
    },
    // Only renderer available hook
    onPlayerApiReady(api: YoutubePlayer, context: RendererContext) {
      // set plugin config easily
      context.setConfig({ myConfig: api.getVolume() });
    },
    onConfigChange(newConfig) { /* ... */ },
    stop(_context) { /* ... */ },
  },
  preload: {
    async start({ getConfig }) {
      const config = await getConfig();
    },
    onConfigChange(newConfig) {},
    stop(_context) {},
  },
});

Примеры использования

  • Кастомный CSS: создайте файл style.css в той же директории, затем:
// index.ts
import style from './style.css?inline'; // import style as inline

import { createPlugin } from '@/utils';

export default createPlugin({
  name: 'Plugin Label',
  restartNeeded: true, // if value is true, ytmusic will show a restart dialog
  config: {
    enabled: false,
  }, // your custom config
  stylesheets: [style], // your custom style
  renderer() {} // define renderer hook
});
  • Если вы хотите изменить HTML:
import { createPlugin } from '@/utils';

export default createPlugin({
  name: 'Plugin Label',
  restartNeeded: true, // if value is true, ytmusic will show the restart dialog
  config: {
    enabled: false,
  }, // your custom config
  renderer() {
    // Remove the login button
    document.querySelector(".sign-in-link.ytmusic-nav-bar").remove();
  } // define renderer hook
});
  • обмен между фронтом и бэком может быть выполнен с помощью модуля ipcMain из electron. Смотрите файл index.ts и пример в плагине sponsorblock.

Сборка

  1. Склонируйте репозиторий
  2. Следуйте этой инструкции, чтобы установить pnpm
  3. Запустите pnpm install --frozen-lockfile для установки зависимостей
  4. Запустите pnpm build:OS
  • pnpm dist:win - Windows
  • pnpm dist:linux - Linux (amd64)
  • pnpm dist:linux:deb-arm64 - Linux (arm64 for Debian)
  • pnpm dist:linux:rpm-arm64 - Linux (arm64 for Fedora)
  • pnpm dist:mac - macOS (amd64)
  • pnpm dist:mac:arm64 - macOS (arm64)

Сборка приложения для macOS, Linux, и Windows, используя electron-builder.

Предварительный просмотр

pnpm start

Тестирование

pnpm test

Использует Playwright для тестирования приложения.

Лицензия

MIT © th-ch

Часто задаваемые вопросы

Почему меня приложения не отображается?

Если опция Скрыть меню включена - вы можете отобразить меню с помощью клавиши alt (или ` [обратный апостроф], если используете плагин "Меню в приложении")