* Fixing the Content section in the README-ru.md file. EN: I have corrected the Содержание (Content) hyperlinks, so now it is possible to jump between the main headings with a single click. The issue was that the content hyperlinks corresponded to the original language headings in the README file, so clicking on them did not lead anywhere within the README file. RU: Я исправил гиперссылки Содержание (Content), так что теперь можно переходить между основными заголовками одним кликом. Проблема заключалась в том, что гиперссылки содержания соответствовали заголовкам README на оригинальном языке, поэтому при нажатии на них переход внутри файла README не осуществлялся. * Fixing the Content section in the README-ru.md file. EN: In this version, I fixed the SVG file path so that it displays properly; previously, it did not appear. RU: В этой версии я исправил путь к файлу SVG, чтобы он отображался правильно; ранее он не отображался. EN: I have corrected the Содержание (Content) hyperlinks, so now it is possible to jump between the main headings with a single click. The issue was that the content hyperlinks corresponded to the original language headings in the README file, so clicking on them did not lead anywhere within the README file. RU: Я исправил гиперссылки Содержание (Content), так что теперь можно переходить между основными заголовками одним кликом. Проблема заключалась в том, что гиперссылки содержания соответствовали заголовкам README на оригинальном языке, поэтому при нажатии на них переход внутри файла README не осуществлялся.
20 KiB
Клиент для YouTube Music основанный на Electron с поддержкой:
- Нативный вид приложения, нацелен на сохранение оригинального интерфейса
- Фреймворк для пользовательских плагинов: изменяйте YouTube Music под ваши нужды (внешний вид, контент, возможности), включайте/выключайте плагины в один клик
Демо-изображение
| Экран плеера (цветовая тема альбома & режим Ambient) |
|---|
Содержание
- Возможности
- Доступные плагины
- Перевод
- Скачать
- Темы
- Для разработчиков
- Создайте свои собственные плагины
- Сборка
- Предварительный просмотр
- Тестирование
- Лицензия
- Часто задаваемые вопросы
Возможности:
-
Авто-подтверждение при паузе (Всегда включено): отключает всплывающие уведомление "Продолжить просмотр?", которое приостанавливает воспроизведение через определённое время
-
И больше ...
Доступные плагины:
-
Блокировщик рекламы: Блокирует всю рекламу и трекеры
-
Действия с альбомом: Добавляет кнопки "Убрать дизлайк", "Дизлайк", "Лайк", "Убрать лайк" и применяет их действия ко всем трекам в плейлисте или альбоме
-
Цветовая тема альбома: Применяет динамическую тему и эффекты, основываясь на цветовой палитре альбома
-
Режим 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
-
Изменение качества видео: Позволяет менять качество видео кнопкой на медиаплеере видео
-
Переключатель видео: Добавляет кнопку переключения режимов Трек/Видео. Также может удалять вкладку "Видео" полностью
-
Визуализатор: Различные визуализаторы музыки
-
Synced Lyrics: Предоставляет синхронизированные слова для песен из таких источников, как LRClib.
Перевод
Вы можете помочь с переводом на ваш язык на Hosted Weblate.
Скачать
Вы можете посмотреть 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 Windowsia32для 32-bit Windowsarm64для 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.
Сборка
- Склонируйте репозиторий
- Следуйте этой инструкции, чтобы установить
pnpm - Запустите
pnpm install --frozen-lockfileдля установки зависимостей - Запустите
pnpm build:OS
pnpm dist:win- Windowspnpm 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 (или ` [обратный апостроф], если используете плагин "Меню в приложении")
