Skip to content

Repository files navigation

BetterYandexMusic Logo

BetterYandexMusic

Прокачай свою Яндекс Музыку: совместное прослушивание, новые темы, тексты песен и многое другое.

Version Total Downloads Node Version Socket.io Version Electron Docker License


📥 Скачать (Releases)

Готовые версии (билды) проекта автоматически собираются и доступны на вкладке Releases:

  • 📦 yandex-music-sync-extension.zip — готовое расширение для быстрой установки в браузер (Chrome, Edge, Яндекс Браузер).
  • 🖥 yandex-music-sync-desktop.zip — утилита (патчер) для интеграции в официальное десктопное приложение Яндекс Музыки.

BetterYandexMusic расширяет возможности Яндекс Музыки. Проект добавляет функции совместного прослушивания, кастомизации интерфейса, отображения текстов и перевода песен, скробблинга, интеграции с RZT и SoundCloud. Панель управления удобно интегрируется в левый сайдбар.


Ключевые возможности

🔄 Синхронизация песни

Трансляция действий (воспроизведение, пауза, перемотка времени, переключение треков).

Видео Синхронизации

🎨 Переключение темы

Изменение оформления через встроенные пресеты или конструктор «Своя тема».

Видео Тем


🎧 Выбор качества песни

Управление битрейтом и качеством воспроизводимого аудио из интерфейса.

Видео Качества


🌐 Перевод песни

Встроенный переводчик с поддержкой полноэкранного режима.

Видео Перевода


🎤 Текст для песен (без официального текста)

Отображение текстов песен из внешних баз для треков, у которых нет текста в Яндекс Музыке.

Видео Текстов


🧠 Интеграция с Genius (Аннотации и тексты)

Полноэкранный плеер с поддержкой текстов от Genius. Позволяет не только читать текст, но и просматривать уникальные аннотации и факты о строчках песен прямо во время прослушивания.


⏳ Таймер сна (Sleep Timer)

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


🎵 Скробблинг (Last.fm / ListenBrainz)

Автоматическая отправка прослушанных треков в профили Last.fm и ListenBrainz.

  • Настройка прямо на странице настроек Яндекс Музыки (в разделе «Скроблинг»).

🏆 Оценки РЗТ (risazatvorchestvo.com)

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

  • В полноэкранном режиме рядом с кнопкой перевода появляются три круговых бейджа с оценками.

🎶 Интеграция SoundCloud (Поиск и Импорт)

Important

Для работы поиска и воспроизведения треков из SoundCloud необходим обход блокировки:

  • VPN — поиск и воспроизведение работают корректно. Добавление трека в коллекцию через кнопку «+» иногда может не работать при использовании VPN.
  • Zapret — поиск, воспроизведение и добавление в коллекцию работают полностью корректно. Рекомендуемый способ.

Возможность искать треки на SoundCloud прямо из интерфейса Яндекс Музыки, слушать их и добавлять в личную коллекцию Яндекса одним нажатием! Мод автоматически скачивает трек и загружает его в ваш плейлист "BetterYandexMusic".


📊 Локальный Wrapped (Local Wrapped) — новое в v1.3

Полноценная персональная статистика прослушиваний, собираемая прямо в расширении или десктопном приложении — без ожидания официальных итогов года.

  • Обзор: Общее число треков, часы прослушивания, музыкальный психотип слушателя и личные рекорды (самый активный день, любимое время суток, соотношение будней/выходных).
  • Топ артистов: Круговая диаграмма с самыми прослушиваемыми исполнителями.
  • Топ треков: Список самых популярных треков с обложками и счётчиком воспроизведений.
  • Жанровая палитра: Горизонтальный бар-чарт по жанрам, процент явного контента (explicit) и красивая карточка со смешением ваших любимых стилей.
  • Музыкальный календарь: GitHub-style heatmap активности за последний год с интерактивными тултипами (дата, минуты прослушивания, количество треков, топ-трек дня) + сетка топ-треков по каждому месяцу.
  • Активность: Графики активности по часам суток и дням недели.
  • Истории (Stories): Пролистываемые карточки-итоги в стиле Instagram Stories с вашей персонализированной статистикой.
  • Экспорт/Импорт данных: Возможность сохранить всю собранную статистику в JSON-файл и восстановить её на другом устройстве.

🔍 Масштабирование интерфейса (Zoom) — новое в v1.3

Возможность гибко увеличивать или уменьшать масштаб всех элементов приложения от 40% до 200%:

  • Горячие клавиши: Ctrl + + (увеличить), Ctrl + - (уменьшить), Ctrl + 0 (сбросить на 100%), Ctrl + Колесо мыши.
  • Всплывающий индикатор: Стильный бейдж с текущим процентом масштаба при переключении.
  • Настройки: Удобный ползунок со шкалой и быстрыми пресетами (80%, 90%, 100%, 110%, 125%) в разделе настроек приложения.

Другие функции:

  • Discord Rich Presence: Отображение текущего трека, обложки и таймлайна в статусе Discord.
  • Контейнеризация (Docker): Наличие Dockerfile и docker-compose.yml для развертывания сервера.
  • Автопатчер Electron: Скрипт для интеграции кода в десктопное приложение.
  • Подключение по ссылке: Доступ к комнатам через URL-адрес.
  • Glassmorphism: Дизайн панели управления с эффектом размытия фона.

🚀 В планах (Roadmap)

  • Перенос плейлистов (Spotify / Apple Music): Встроенная утилита, чтобы в пару кликов перенести плейлист из другого сервиса или экспортировать свой.
  • Мини-плеер поверх всех окон (Picture-in-Picture): Небольшой плавающий виджет с обложкой и управлением, который висит поверх других программ на рабочем столе.
  • Глобальные горячие клавиши (Hotkeys): Кастомизация шорткатов (особенно для десктопного Electron-приложения), чтобы переключать треки или ставить лайк, не разворачивая приложение.
  • Классический (старый) дизайн плеера: Возможность переключаться на старый визуальный стиль приложения Яндекс Музыки для тех, кто скучает по классическому интерфейсу.

📂 Структура проекта

📦 BetterYandexMusic
 ├── 📂 public/                          # Фронтенд-интерфейс сервера (страницы комнат)
 ├── 📂 shared/                          # Общая логика и UI (используется на всех платформах)
 │    ├── 📂 wrapped/                  # Local Wrapped — статистика и аналитика прослушиваний
 │    │    ├── 📄 wrapped-db.js        # База данных и вычисление статистики (IndexedDB)
 │    │    ├── 📄 wrapped-charts.js    # Рендеринг графиков и вкладок статистики
 │    │    ├── 📄 wrapped-ui.js        # UI обёртка, вкладки, кнопка в меню
 │    │    ├── 📄 wrapped-stories.js   # Stories-режим (пролистываемые итоги)
 │    │    ├── 📄 wrapped-tracker.js   # Трекинг прослушиваний в реальном времени
 │    │    └── 📄 chart.js             # Встроенная библиотека Chart.js
 │    ├── 📂 fullscreen/                 # Компоненты полноэкранного плеера (лирика, интерфейс)
 │    ├── 📂 lyrics/                     # Клиент LRCLib и рендер текстов песен
 │    ├── 📂 translation/                # Перевод текстов + интеграция RZT-оценок в плеер
 │    ├── 📄 rzt-api.js                  # Клиент API risazatvorchestvo.com (поиск, парсинг оценок)
 │    ├── 📄 scrobbler.js                # Скробблинг Last.fm и ListenBrainz
 │    ├── 📄 settings-injector.js        # Инжект настроек скробблинга на страницу настроек ЯМ
 │    ├── 📄 soundcloud-api.js           # Клиент SoundCloud API
 │    ├── 📄 soundcloud-search.js        # UI поиска и добавления треков из SoundCloud
 │    ├── 📄 soundcloud-import.js        # Импорт треков SoundCloud в коллекцию Яндекс Музыки
 │    ├── 📄 themes.js                   # Кастомные темы оформления
 │    ├── 📄 styles.js                   # Глобальные стили расширения
 │    ├── 📄 player-faker.js             # Эмуляция плеера для SoundCloud-треков
 │    ├── 📄 navbar-sync.js              # Кнопка синхронизации в навбаре
 │    ├── 📄 sync-popover.js             # Попап управления комнатой синхронизации
 │    ├── 📄 theme-popover.js            # Попап выбора темы
 │    ├── 📄 quality-indicator.js        # Индикатор и выбор качества аудио
 │    ├── 📄 custom-audio.js             # Кастомное аудио (для SoundCloud-треков)
 │    └── 📄 md5.js                      # MD5-хэширование (для Last.fm API)
 ├── 📂 yandex-sync-electron/            # Скрипты инжекта и патчер десктопного приложения
 │    └── 📂 src/
 │         ├── 📂 preload/              # Preload-скрипты (Discord RPC, HTTP-сервер, мост API)
 │         └── 📂 page/                # Скрипты веб-страницы (инициализация, монитор плеера)
 ├── 📂 yandex-sync-extension/           # Исходный код расширения для браузеров
 │    ├── 📂 src/
 │    │    ├── 📂 isolated/             # Скрипты изолированного контекста (скробблинг, переменные)
 │    │    └── 📂 main/                 # Скрипты основного контекста страницы
 │    ├── 📄 background.js              # Фоновый скрипт (RZT-запросы, API-проксирование)
 │    ├── 📄 manifest.json              # Манифест расширения
 │    ├── 📄 isolated.js                # Собранный изолированный бандл
 │    └── 📄 main.js                    # Собранный основной бандл
 ├── 📂 yandex-sync-installer/           # Установщик для десктопного приложения
 │    └── 📂 assets/                   # Собранный desktop-sync.js для патчера
 ├── 📄 build.js                         # Скрипт-сборщик (компилирует shared код для всех платформ)
 ├── 📄 server.js                        # Node.js + Socket.io сервер координации клиентов
 ├── 📄 Dockerfile                       # Сборка контейнера сервера
 └── 📄 docker-compose.yml               # Файл быстрого старта Docker Compose

Установка и запуск

Important

Перед запуском синхронизации (подключением к комнате) обязательно включите любую песню, чтобы плеер Яндекс Музыки проинициализировался.

🚀 Способ 1: Установка из релизов (Рекомендуется)

Готовые версии можно найти на вкладке Releases.

📦 Установка в браузер (Chrome, Edge, Яндекс Браузер)

  1. Скачайте архив yandex-music-sync-extension.zip из последнего релиза.
  2. Распакуйте его в удобную папку на компьютере.
  3. Откройте страницу управления расширениями в браузере (например, chrome://extensions/).
  4. Включите Режим разработчика (Developer mode) в правом верхнем углу.
  5. Нажмите Загрузить распакованное расширение (Load unpacked) и выберите папку, в которую вы распаковали архив.
  6. Откройте или обновите вкладку Яндекс Музыки.

🖥 Установка в Десктопное приложение (Windows, Linux и macOS)

Important

Перед установкой обязательно полностью закройте приложение Яндекс Музыка.

  1. Скачайте установщик для вашей ОС из последнего релиза:
    • Windows: Скачайте и запустите BetterYandexMusic Installer.exe.
    • Linux:
      • Вариант А (Рекомендуемый — запуск AppImage в 1 клик):
        1. Установите библиотеку FUSE и выдайте права на запуск файла (нужно выполнить 1 раз):
          sudo apt install -y libfuse2
          chmod +x "BetterYandexMusic Installer-1.3.1.AppImage"
        2. Выдайте права на папку Яндекс Музыки вашему пользователю (чтобы установщику не требовался root доступ):
          sudo chown -R $USER:$USER "/opt/Яндекс Музыка"
        3. Запускайте установщик обычным двойным кликом или ./"BetterYandexMusic Installer-1.3.1.AppImage".
      • Вариант Б (Запуск без установки дополнительных пакетов): Запустите AppImage в режиме прямой распаковки:
        sudo ./"BetterYandexMusic Installer-1.3.1.AppImage" --appimage-extract-and-run --no-sandbox
      • Вариант В (.deb пакет для Debian / Ubuntu / Kali): Скачайте .deb файл из релизов и установите через пакетный менеджер:
        sudo dpkg -i "BetterYandexMusic Installer-1.3.1-x64.deb"
        # или
        sudo apt install ./"BetterYandexMusic Installer-1.3.1-x64.deb"
    • macOS: Скачайте BetterYandexMusic Installer.dmg, откройте его и перетащите приложение в папку "Программы" (Applications).

      [!WARNING] В macOS из-за системы защиты (Gatekeeper) может появиться ошибка "Приложение повреждено". Чтобы это исправить, откройте приложение Терминал и выполните команду: xattr -cr "/Applications/BetterYandexMusic Installer.app" После этого запустите установщик из папки "Программы".

  2. В окне установщика нажмите кнопку "Установить" и дождитесь завершения (появится зеленая кнопка "Готово!").
  3. Запустите Яндекс Музыку.

💻 Способ 2: Сборка из исходников (Для разработчиков)

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

Локальный запуск сервера (Node.js)

  1. Установите Node.js (v16+).
  2. Склонируйте репозиторий и установите зависимости:
    npm install
  3. Запустите сервер:
    • Обычный запуск: npm start (сервер будет доступен по адресу http://localhost:3000).
    • Запуск с генерацией HTTPS (рекомендуется):
      npm run start:tunnel
      Скрипт автоматически создаст временный HTTPS домен (через Cloudflare Tunnel), который можно скопировать и вставить в мод. Это нужно для обхода ограничений браузеров.

Запуск сервера через Docker

docker-compose up -d --build

Ручная сборка расширения и патчера

Tip

Перед использованием локальных исходников обязательно скомпилируйте общие файлы командой npm run build.

  • Для браузера: После выполнения сборки, загрузите папку yandex-sync-extension как распакованное расширение в настройках браузера.
  • Для десктопа (Ручной скрипт патча):
    • Windows / macOS: Перейдите в папку yandex-sync-electron и запустите node patch.js (или node debug-patch.js).
    • Linux: Так как Яндекс Музыка установлена в системную директорию /opt/, запустите через sudo:
      sudo env "PATH=$PATH" node patch.js

Лицензия

Проект распространяется по лицензии PolyForm Noncommercial 1.0.0. Подробности в файле LICENSE.

Навайбкожено с ❤️ для всех любителей музыки. Приятного совместного прослушивания!

About

Прокачай свою Яндекс Музыку: совместное прослушивание, новые темы, тексты песен и многое другое.

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages