
Вышел открытый проект музыкального плеера CloudMus (совместно с ИИ Claude) для Linux и Windows, который позволяет запустить в одном окне «Яндекс Музыку», YouTube Music и музыку из локальной папки. У всех источников одна очередь, одна история и одинаковое управление.


Исходный код проекта написан на C++20/Qt 6 и опубликован под лицензией MIT. Звуковая дорожка работает через libmpv.

В CloudMus также сделан упор на визуал. В проекте есть стеклянный интерфейс с настоящим размытием фона на KDE Plasma, Wayland‑композиторах и Windows 11, своя визуальная тема, плавные анимации для поддержки мониторов 60 Гц и более. В решении поддерживаются глобальные хоткеи на основные действия (лайк, дизлайк и скачивание трека). В качестве других возможностей можно выделить поддержку MPRIS (Linux) и SMTC (Windows), скачивание треков и плейлистов, предзагрузка следующего трека и отдельный прокси для каждого сервиса: например, YouTube Music через прокси, а «Яндекс Музыка» напрямую.

Внешние источники музыки для проекта (поиска по каталогам сторонних сервисов пока нет):
«Яндекс Музыка»: вход по коду на сайте «Яндекса». Доступны библиотека, лайки, плейлисты с редактированием, «Моя волна» и станции, а также персональные подборки: «Плейлист дня», «Дежавю», «Премьера», «Тайник»
YouTube Music: библиотека, лайки, плейлисты, миксы (My Supermix, My Mix 1–7, Discover, Replay) и радио от трека. Вход в сервис пока неудобный, используется временное решение такое: нужно вставить заголовки запроса или cURL‑команду из залогиненной сессии браузера, потому что штатный вход Google через устройство не работает в ytmusicapi;
локальная папка: по умолчанию xdg‑user‑dir MUSIC. Подпапки и M3U показываются как плейлисты, обложки и теги читаются из файлов.

Возможности проекта:
стеклянный фон: настоящее размытие на KDE Plasma и Wayland-композиторах со стандартным протоколом blur, акрил на Windows 11, на GNOME — прозрачность с расширением вроде Blur my Shell;
настраиваемые глобальные хоткеи на воспроизведение, переключение треков, перемотку, громкость, лайк, дизлайк, скачивание, показ окна плеера и тихий режим;
общая очередь и история для треков из разных источников;
настройка уникальности проигрывания, борется с частыми повторами одного и того же трека в радио плейлистах;
лайки и дизлайки синхронизируются с аккаунтом сервиса, трек можно добавить в свои плейлисты или убрать из них;
предзагрузка нескольких следующих треков в кэш, без паузы при переключении;
скачивание треков и целых плейлистов в локальную папку с тегами, с раскладкой по источнику, исполнителю или альбому. Для копирастов скачивание по умолчанию отключено и включить её пользователь может только подтвердив, что он не будет пиратить;
MPRIS (Linux) и SMTC (Windows) с перемоткой, громкостью, shuffle и repeat;
трей, уведомления с обложкой, автозапуск, автопроигрывание с места последней остановки;
отдельный HTTP/SOCKS5-прокси для каждого источника, через прокси идут и потоки, и обложки. В России это особенно полезно: YouTube Music можно пустить через прокси, а "Яндекс Музыку" оставить напрямую, и не придётся включать сервисы сетевого обхода;
тихий режим с хоткеем: громкость плавно опускается до заданного уровня без паузы, удобно для звонков и игр;
восстановление последнего плейлиста и трека при запуске;
светлая и тёмная темы, интерфейс на русском, английском, немецком, французском, испанском, итальянском и белорусском языках.
система обновлений сама проверяет новую версию при старте, скачивает, ставит и перезапускает, при этом музыка продолжит играть с того места где остановилась, а апдейт можно пропустить;
терминальный фронтенд плеера (без Qt), можно запускать в консоли;
в плеере есть анонимная телеметрия: Google Analytics и Sentry для отчётов о падениях. Она нужна, чтобы находить и исправлять ошибки, видеть, что пользователи запускают плеер, её можно отключить в настройках.
Каждый музыкальный сервис подключается в проекте через бэкенд, который работает в отдельном процессе и общается с интерфейсом по JSON-RPC через stdin/stdout. Сейчас всё бэкенды написаны на Python. Это не окончательная архитектура. Сторонний бэкенд сейчас выполняется с правами пользователя, а значит, для конечных пользователей такая схема небезопасна. Планируется, что бэкенды будут переведены на JavaScript и станут работать в песочнице на QuickJS. Появится онлайн-каталог, из которого бэкенды можно будет ставить прямо из приложения.
В планах проекта, помимо бэкендов для других сервисов (Spotify, Apple Music, SoundCloud, TuneIn, VK Music, Sber Zvuk):
удобная авторизация через встроенный браузер: обычный вход в аккаунт сервиса в окне плеера, без копирования заголовков и cURL-команд;
полноценный офлайн-режим: без интернета плеер будет быстро стартовать и работать с тем, что есть в кэше. Это важно для использования в машине. Сейчас режим реализован, но частично;
версия для macOS;
фронтенд на QML для Android и Android TV, плюс отдельная адаптация интерфейса под автомобильные магнитолы на Android. Порт на iOS пока не планируется: писать и публиковать под неё слишком хлопотно. Проект открытый, так что если кто-то захочет портировать, буду рад;
обнаружение и пропуск музыки, сгенерированной ИИ;
поддержка радиосервисов с нарезкой эфира на треки и их сохранением;
визуализации MilkDrop из Winamp через projectM;

1 час назад
2




English (US) ·
Russian (RU) ·