LINUX.ORG.RU

CloudMus — новый кроссплатформенный открытый плеер для Яндекс Музыки и YouTube Music

 , yandex music, youtube music,


4

1

Встречайте CloudMus. Это музыкальный проигрыватель для Linux и Windows, который собирает в одном окне Яндекс Музыку, YouTube Music и музыку из локальной папки. У всех источников одна очередь, одна история и одинаковое управление.

Автора замучили плееры-обёртки сайтов на Electron, которые тормозят, выжирают память и батарею ноутбука, автор вынашивал эту идею 10 лет, теперь с Клодом может себе это позволить ). Плеер написан на C++20/Qt 6, звук играет через libmpv, распространяется под лицензией MIT. Для Linux есть AppImage, для Windows – инсталлятор.

Кроме привычных функций плеера, сделан максимальный упор на визуал, в нём есть стеклянный интерфейс с настоящим размытием фона на KDE Plasma, Wayland-композиторах и Windows 11, своя визуальная тема, плавные анимации для поддержки мониторов >60Hz, а также глобальные хоткеи на все основные действия, включая лайк, дизлайк и скачивание трека. Хоткеи работают в KDE, GNOME 48+, на X11 и в Windows. Ещё есть полноценный MPRIS, SMTC (медиаинтеграция с DE), скачивание треков и плейлистов, предзагрузка следующего трека и отдельный прокси для каждого сервиса: например, YouTube Music через прокси, а Яндекс Музыка напрямую.

Текущая версия проекта — 0.6.1.

Источники

  • Яндекс Музыка: вход по коду на сайте Яндекса. Доступны библиотека, лайки, плейлисты с редактированием, «Моя волна» и станции, а также персональные подборки: «Плейлист дня», «Дежавю», «Премьера», «Тайник».
  • 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 можно пустить через прокси, а Яндекс Музыку оставить напрямую, и не придётся включать VPN на всю систему или переключать его туда-сюда;
  • тихий режим с хоткеем: громкость плавно опускается до заданного уровня без паузы, удобно для звонков и игр;
  • восстановление последнего плейлиста и трека при запуске;
  • светлая и тёмная темы, интерфейс на русском, английском, немецком, французском, испанском, итальянском и белорусском.
  • удобная система обновлений, сама проверяет новую версию при старте, скачивает, ставит и перезапускает, при этом музыка продолжит играть с того места где остановилась. Конечно, апдейт можно пропустить;
  • терминальный фронтенд плеера (без Qt), можно гонять в консольке (но пока он не сильно развит).

Поиска по каталогам сервисов пока нет.

Архитектура

Каждый музыкальный сервис подключается через бэкенд, который работает в отдельном процессе и общается с интерфейсом по JSON-RPC через stdin/stdout. Сейчас все бэкенды написаны на Python.

Это не окончательная архитектура. Сторонний бэкенд сейчас выполняется с правами пользователя, а значит, для конечных пользователей такая схема небезопасна. Паланируется, что бэкенды будут переведены на JavaScript и станут работать в песочнице на QuickJS. Появится онлайн-каталог, из которого бэкенды можно будет ставить прямо из приложения.

Планы

Помимо бэкендов для других сервисов (SoundCloud, VK Музыка, Spotify, Deezer, Bandcamp, Apple Music, TuneIn, Звук), запланировано:

  • удобная авторизация через встроенный браузер: обычный вход в аккаунт сервиса в окне плеера, без копирования заголовков и cURL-команд;
  • полноценный офлайн-режим: без интернета плеер будет быстро стартовать и работать с тем, что есть в кэше. Это важно для использования в машине. Сейчас режим реализован, но частично;
  • версия для macOS;
  • фронтенд на QML для Android и Android TV, плюс отдельная адаптация интерфейса под автомобильные магнитолы на Android. Порт на iOS пока не планируется: писать и публиковать под неё слишком хлопотно. Проект открытый, так что если кто-то захочет портировать, буду рад;
  • обнаружение и пропуск музыки, сгенерированной ИИ (реально задолбала уже всех вокруг);
  • поддержка радиосервисов с нарезкой эфира на треки и их сохранением;
  • визуализации MilkDrop из Winamp через projectM, чтобы можно было устроить крутую домашнюю дискотеку под винишко;
  • конечно же, больше красивых анимаций и автоматический режим экономии батареи, который их будет душить.

Телеметрия

В плеере есть анонимная телеметрия: Google Analytics и Sentry для отчётов о падениях. Мне она нужна, чтобы находить и исправлять ошибки, видеть, что люди пользуются плеером, и радоваться этому. Если вам это не нравится, отключите её в настройках.

Установка

Нужен x86_64 и glibc 2.31 или новее, то есть Debian 11, Ubuntu 20.04, Fedora 32, openSUSE Leap 15.3 и более свежие. AppImage скачивается со страницы релизов:

chmod +x CloudMus-*-x86_64.AppImage
./CloudMus-*-x86_64.AppImage

При первом запуске плеер добавляет себя в меню приложений. Если AppImage ругается на FUSE, поставьте libfuse2 (на Ubuntu 24.04+ это libfuse2t64) или запустите с ключом --appimage-extract-and-run. Обновления ставятся из самого приложения.

Пакетов для дистрибутивов пока нет. Если кто-то возьмётся собрать пакет, помогу. Для сборки из исходников нужны Qt 6, CMake ≥ 3.21, компилятор с поддержкой C++20, libmpv и Python ≥ 3.11. Подробности в руководстве разработчика.

>>> CloudMus — новый кроссплатформенный открытый плеер для Яндекс Музыки и YouTube Music

★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 12)
Ответ на: комментарий от Bfgeshka

Её тоже нет. Плеер всё грузит через API.

navrocky ★★
() автор топика
Ответ на: комментарий от MooSE

Да меня самого эти т.н. «приложения» бесят и я всегда ищу альтернативы. Особенно когда ты сидишь на ноуте и негде подзарядится, а это поделие даже в свернутом и закрытом состояние выжирает 10% CPU и вместо 5 часов ты получаешь 3 часа работы, просто потому что хочется послушать музончик. И тут вспоминаешь с теплотой, что были времена винампа, когда он летал на тех тормознутых компах и ему хватало несколько десятков МБ оперативы…

navrocky ★★
() автор топика
Ответ на: комментарий от Aceler

Да, конечно, там в новости я написал, планируется пачка популярных и также это будет оформляться в виде стора, чтобы можно было сторонние загружать в приложение (с обеспечением безопасности конечных пользователей). Сейчас пока стадия MVP.

Сейчас архитектура fontend+backend, общение между фронтом и бэком через stdin/stdout JSON RPC 2.0. В качестве MVP бэкендов сделаны 3 на питоне, но язык в принципе может быть любой: локальная папка, яндекс музыка и youtube music.

navrocky ★★
() автор топика
Последнее исправление: navrocky (всего исправлений: 2)

теперь с Клодом могу себе это позволить

Реквестирую специальный обязательный тег для всех подобных новостей и тем на форуме (о типа новых программах), дабы не приходилось искать в тексте новости, а то и вообще в источнике.

CrX ★★★★★
()
Ответ на: комментарий от CrX

Ну я думаю сейчас весь новый код будет таким, увы. Даже Тролльвардс сдался и вайбкодит. Но, к слову, Клод намного лучше пишет чем я, и в сотни раз быстрее. И я теперь могу быстро реализовывать любые самые больные фантазии, собственно что вы и видите в этом приложении 😅

navrocky ★★
() автор топика
Последнее исправление: navrocky (всего исправлений: 1)
Ответ на: комментарий от navrocky

Ну я думаю сейчас весь новый код будет таким, увы.

Нет, весь точно не будет.

Но, к слову, Клод намного лучше пишет чем я, и в сотни раз быстрее. И я теперь могу быстро реализовывать любые самые больные фантазии, собственно что вы и видите в этом приложении 😅

Я очень рад, но если мне ни эти фантазии не интересны, ни подобный код — хотелось бы как-то сразу это видеть.

CrX ★★★★★
()

«Алиса» вчера спела песенку Найка Борзова про лошадку без купюр, так что сервис временно признаем годным. Правда, она не смогла спеть про пожилого строителя мудрого.

Irma ★★★★
()
Ответ на: комментарий от MoldAndLimeHoney

Это и не скрывается нигде, даже в About написано.

navrocky ★★
() автор топика
Ответ на: комментарий от Irma

«Алиса» вчера спела песенку Найка Борзова про лошадку без купюр, так что сервис временно признаем годным.

Ну не Яндексом единым живы, будут другие сервисы, Сбер Звук, VK Музыка. Сейчас я, например, переехал на Youtube Music, вполне ничего так уже, правда первую неделю рука болела от дизлайков )

navrocky ★★
() автор топика
Ответ на: комментарий от MoldAndLimeHoney

Слоп.

Ты так говоришь, будто это что-то плохое

Накодь самолично.

user42 ★★
()
Последнее исправление: user42 (всего исправлений: 2)

Вайбкодер борется с вайбмузыкой. Будущее которое мы заслужили

James_Holden ★★★★★
()
Ответ на: комментарий от hobbit

Спасибо.

Впервые за десять лет я добавляю тег в игнор.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 1)

Буду ждать для магнитолы на ведроиде. Жирное(а железо в магнитолке уже 8 летней давности) официальное приложение ундекса нравится всё меньше и меньше.

Loki13 ★★★★★
()

Помимо бэкендов для других сервисов (SoundCloud

Тебя ждут страдания. У SoundCloud очень всратая модель работы со сторонними клиентами: они дают тебе токен с ограничением по количеству прослушиваний на всех пользователей твоего софта. Т.е. если у тебя достаточно популярный клиент, то им тупо никто не сможет пользоваться, потому что лимиты быстро исчерпаются. За создание более одного токена они банят.

Единственный адекватный способ слушать музыку с SoundCloud – это ytdlp и твой любимый локальный плеер. Всё остальное дико проклято.[1]

[1]: остальных сервисов это тоже касается, впрочем.

yorshka
()
Последнее исправление: yorshka (всего исправлений: 1)
Ответ на: комментарий от romanlinux

Хотелось бы. А то яндех музыка пипец как неудобное приложение, сатана разрабатывает, не иначе.

UriZzz ★★
()
Последнее исправление: UriZzz (всего исправлений: 3)

widgets

Может пора уже использовать qml? От экономии 80Mb погода не поменяется. Лучше бы всякую аналитику убрал.

rumgot ★★★★★
()

Кстати, а управлять «моей волной» никак нельзя через API? Я недавно с Яндекс.Музыкой и не много не понимаю что там и как, но из браузера могу «встряхнуть волну» или посмотреть предложения, а так же задать волну по ключевым словам.

А так очень нужное приложение. Я задолбался бодаться с техподдержкой. Просьба хотя-бы «визуализацию» отключить, что-бы GPU не жрал как не в себя на Ryzen 3 3200G умудряется тормозить.

delidov_george ★
()
Последнее исправление: delidov_george (всего исправлений: 2)
Ответ на: комментарий от navrocky

И тут вспоминаешь с теплотой, что были времена винампа, когда он летал на тех тормознутых компах и ему хватало несколько десятков МБ оперативы…

Ну так сейчас есть всякие vlc, amarok, rhytmbox…

Wapieth ★★
()
Ответ на: комментарий от delidov_george

Я задолбался бодаться с техподдержкой

А зачем бодаться, сервис кладет десятилетием болт на разработчиков сторонних приложений, на непосредственно своих пользователей, не имеет нормальной музыки и стримит какой-то шлак в ужасном качестве. Как бы это исправить через техподдержку, дайте подумать

James_Holden ★★★★★
()
Ответ на: комментарий от Loki13

Буду ждать для магнитолы на ведроиде.

К сожалению, Qt6 минимально поддерживает Android 9. У вас какой давности магнитола, какая версия Андрюхи? Собственно я думаю на QML наваять под Android (>=Android 9) или Jetpack Compose (>=Android 7), но это будет сильно сложнее.

navrocky ★★
() автор топика
Ответ на: комментарий от kaldeon

Впервые за десять лет я добавляю тег в игнор.

Вот мне интересно. Сейчас вся айтишка бурлит от ЛЛМок, на конфы по AI набиваются толпы. Во все конторы внедряется вайбкодинг семимильными шагами. Наш отдел уже почти на 100% вайбкодеры, изучаем всякие подходы SDD и прочее, как будто про обычное программирование уже все забыли, и ты типа лох если не в этой тусе. Я уже месяца три практически не писал ничего руками, хотя у меня опыт кодинга на C++ уже более 20 лет. И вот вы серьезно думаете, что кто-то ещё в здравом уме будет писать в будущем не AI агентами а руками, будете серьезно ждать новый качественный софт без тэга вайб-кодинг? Просто я честно везде написал что это совместный труд с аишкой, а кто-то не пишет, стесняется.

navrocky ★★
() автор топика
Ответ на: комментарий от yorshka

Единственный адекватный способ слушать музыку с SoundCloud – это ytdlp и твой любимый локальный плеер. Всё остальное дико проклято.[1]

Ну так у меня он (ytdlp) уже затянут, через него Youtube Music играет.

navrocky ★★
() автор топика

Автора замучили плееры-обёртки сайтов на Electron, которые тормозят, выжирают память и батарею ноутбука

💯 Достали эти поделия на электроне.

th3m3 ★★★★★
()
Ответ на: комментарий от Wapieth

Ну второй и третий явно не про экономию ресурсов.

hobbit ★★★★★
()
Ответ на: комментарий от rumgot

Может пора уже использовать qml?

А я вот не уверен что для десктопа это хорошее решение. Я очень много на QML ваял, и есть понимание. Там до сих пор оно кривовато всё в плане обычных десктопных компонентов, не уверен что прозрачность получилась бы. А для Android варианта я рассматриваю QML.

Лучше бы всякую аналитику убрал.

Sentry мне нужен чтобы крэши чинить и несовместимости конфигурации на Linux. Без этого никуда. GoogleAnalytics, ну а где её сейчас нет, любое приложение на телефоне ей обмазано, любой сайт? Интересно же в каких странах используют, какие переводы ещё сделать, статистику по бэкендам получить, какой сервис чаще слушают. Код открыт, сборки собираются на Github Actions из этих же исходников, каждый может глянуть что собирает аналитика, можете себе сделать сборку и выпилить её, или просто выключить в настройках.

navrocky ★★
() автор топика
Ответ на: комментарий от navrocky

Сейчас вся айтишка бурлит от ЛЛМок

обнаружение и пропуск музыки, сгенерированной ИИ (реально задолбала уже всех вокруг);

Сейчас вся музыкальная индустрия бурлит от Suno, в стриминги набиваются толпы, наша группа уже на 100% состоит из агентов Матрицы. Я уже отложил гитару в сторону, хотя занимался на ней 20 лет. А ты все еще ждешь, что кто-то будет на гитаре играть руками, и выкладывать тебе в яндекс качественную музыку без тега ИИ?

James_Holden ★★★★★
()
Ответ на: комментарий от James_Holden

выкладывать тебе в яндекс качественную музыку без тега ИИ?

Увы, таковы реалии. Но есть и качественная ИИ музыка, у меня даже пара треков в избранном, я прямо кайфую. Просто в большинстве своём это всё звучит как по шаблону сейчас, поэтому и негатив. А будет это качественно, красиво, то почему бы и нет.

navrocky ★★
() автор топика

Вот как так получается, что любой современный плеер места на жкране занимает больше winamp'а, а в строку названия композиции в плейлисте, отображаемом на экране, влезает меньше текста? Это же не экран смартфона. Давайте быть ближе к людям. padding(0) и margin(0) славааллаху ещё не заблокировали.

Shadow ★★★★★
()
Последнее исправление: Shadow (всего исправлений: 2)
Ответ на: комментарий от navrocky

Просто в большинстве своём это всё звучит как по шаблону сейчас, поэтому и негатив. А будет это качественно, красиво, то почему бы и нет.

Ну приняв вот этот тезис, несложно понять, почему «вайбкодинг» вызывает негатив. При этом, конечно, может быть и качественно, только вот не каждый будет разбираться, так работает толпа.

James_Holden ★★★★★
()
Ответ на: комментарий от delidov_george

Я задолбался бодаться с техподдержкой. Просьба хотя-бы «визуализацию» отключить, что-бы GPU не жрал как не в себя на Ryzen 3 3200G умудряется тормозить.

Да вот ровно то же и у меня, меня просто выбешивает в ЯМ эта анимированная вспышка, приходится переключаться постоянно на какую-то страницу, где её нет и в настройках не отключить. А так как у меня ноутбук и я люблю где-нибудь не у розетки посидеть, то выбешивает вдвойне, когда выжирает батарею.

Кстати, а управлять «моей волной» никак нельзя через API?

Можно. Сейчас у меня уже есть фильтр уникальности, который не даёт повторяться трекам слишком часто, и этим можно управлять. Потом в планах есть перезагрузка списка волны по кнопке. Ну и наверное позже добавлю все эти чекбоксы, типа веселая грустная…

navrocky ★★
() автор топика
Ответ на: комментарий от James_Holden

Ну приняв вот этот тезис, несложно понять, почему «вайбкодинг» вызывает негатив.

Ну вот я старался качественно всё сделать. Я уже пол месяца ночами не сплю и вылизываю этот плеер, чтобы было пиксель пёрфект, и от дизайна можно было кончить. Не знаю насколько хорошо получилось, но я старался )

navrocky ★★
() автор топика
Ответ на: комментарий от Shadow

Да в винамп вообще ничего не влезало. Я его последний раз запускал месяц назад, скажем. Это кринж по меркам сейчас. Просто ностальгия по временам когда ОН стоял. Винамп на компе, конечно. А вы что подумали

James_Holden ★★★★★
()
Ответ на: комментарий от delidov_george

При попытке воспроизвести локальную коллекцию через симлинк - request timeout

Записал в баги, проверю. А так можно на github issue кидать ;)

navrocky ★★
() автор топика
Ответ на: комментарий от hobbit

А сделать, чтобы исходники поддерживали и Qt6, и Qt5, можешь?

Да можно конечно, не вопрос, они очень близки. Хотя там у меня ещё C++20 и корутины. Не уверен что не придётся тупо всё переписать. А зачем Qt5 если не секрет?

Вопрос про SMTC тоже остаётся в силе.

В чём вопрос? Да, это виндовый аналог MPRIS, интеграция музыкального плеера в платформу, показ что играет на лок скрине, медиакнопки, и прочие ништяки.

На Винде, кстати, тоже всё очень хорошо работает и выглядит почти как родные Windows11 аппликухи, ну дизайн конечно немного другой. Пришлось его сделать юнисекс, чтобы везде был одинаковый и не страшный.

navrocky ★★
() автор топика

Т.е. это очередной «агрегатор подписок» - ЗАКОПАТЬ!!!

drfaust ★★★★★
()
Ответ на: комментарий от James_Holden

Ээээ... Чего??? У меня в qmmp на винамповском скине 35-40 символов в строке плейлиста без учёта времени воспроизведения. На скриншоте тут в 2 раза короче.

Shadow ★★★★★
()
Ответ на: комментарий от James_Holden

А тут только один путь – голосовать рублём. И ногами.

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.