Представлен открытый плеер CloudMus для «Яндекс Музыки» и YouTube Music для ПК на Linux и Windows

Вышел открытый проект музыкального плеера 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.

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев