Git Product home page Git Product logo

winyandexmusicrpc's Introduction

[DISCORD RPC]  WinSdk + Yandex Music Discord Rich Presence

TotalDownloads LastRelease CodeOpen OS - Windows

Discord RPC для показа музыки которую вы сейчас слушаете на компьютере. Загрузка треков и их обложка происходит из Яндекс Музыки.

Варинты отображения статуса:

discord       discord

Существуют похожие RPC, которые показывают текущий трек, используя API Яндекс Музыки. Однако они не могут отображать информацию о том, что играет из радио (например, Моя Волна).

Поэтому я создал скрипт, который использует Windows.Media.Control для получения информации о текущем треке, выполняет поиск в Яндекс Музыке и отображает трек в Discord.

Плюсы по сравнению с другими скриптами:
Не нужен токен Яндекс Музыки ✅
Показывает треки из подборок, радио ✅
Не ограничен использованием Яндекс Музыки, музыку можно слушать хоть из ВКонтакте ✅
Работает как с браузерами так и с приложениями ✅
Показывает статус паузы ✅
Показывает сколько осталось до конца трека ✅
Статус "Слушает" вместо "Играет в игру" ✅

Требования

Работа проверена только на Windows 11 и Windows 10, на других версиях и платформах работать не будет. С урезанными Lite и Custom версиями Windows работа не гарантируется.

Если вы не будете использовать ехе файл то:

  1. Python 3.10+

Как скачать и использовать Exe?

  1. Скачиваем последний доступный релиз

  2. Открываем WinYandexMusicRPC.exe

  3. Скрипт через 3 секунды автоматически скроется в системный трей. Откройте консоль через трей чтобы убедиться в работе.

Как использовать main.py?

  1. Открываем терминал и идем в папку где находится файл requirements.txt. Пишем pip install -r requirements.txt, для того что бы установить зависимости.

  2. В терминал пишем python main.py

Чтобы скомпилировать скрипт с помощью Pyinstaller, выполните данную команду:
pyinstaller main.spec


В случае если вы слушаете музыку не только из яндекс музыки то рекомендую заменить строку strong_find = True на strong_find = False, или воспользуйтесь системным треем. Тогда будет показыватся лучший результат по поиску, но не всегда точный.

Баги

Баги всегда существуют, но сначала их надо найти 🫡
Если вы нашли ошибку, то не стесняйтесь сообщать о ней в Issues

TODO

Сделать чтобы таймер не сбрасывался при паузе трека ✅
Если долгая пауза - убирать статус ✅
Улучшить поиск песен ✅
Вместо консоли сделать приложение в трее ✅


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

Код не идеален, так как Python не является моим основным языком, и скрипт писался для личного использования. Однако он может стать основой для ваших собственных скриптов.

За основу был взят код yandex-music-rpc
Используется Yandex Music API

winyandexmusicrpc's People

Contributors

anixty avatar eggdll avatar fozerg avatar mctaylors avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

winyandexmusicrpc's Issues

Неправильное отображение статуса при выборе "слушает"

При выборе "слушает" для других пользователей неправильно отображается, т.е. как вижу я:
https://imgur.com/6uS1TcH
Как видят другие:
https://imgur.com/Ldacf00

При этом при выбора статуса в настройках "играет" отображается все правильно.
В логах ничего нет, кроме инфы об играющих треках.

OS: Windows 10 22H2 пираченная
Слушаю музыку через приложение Я.Музыка

Через браузер не работает.

Через браузер не работает.
Хотя заявлено: Не ограничен использованием Яндекс Музыки, музыку можно слушать хоть из ВКонтакте ✅
Работает как с браузерами так и с приложениями ✅

Может быть это я чего не понимаю и использую то что надо по другому?
https://youtu.be/tLHUF9zTnTY

Выпуск Windows 11 Pro
Версия 23H2
Дата установки ‎26.‎02.‎2024
Сборка ОС 22635.3570
Взаимодействие Windows Feature Experience Pack 1000.22700.1009.0

Процессор Intel(R) Core(TM) i5-10400F CPU @ 2.90GHz 2.90 GHz
Оперативная память 16,0 ГБ
Тип системы 64-разрядная операционная система, процессор x64
Перо и сенсорный ввод Для этого монитора недоступен ввод с помощью пера и сенсорный ввод

Не работает, если сидишь через VPN

Прога распознаёт полное название песни, но не всовывает его в RPC. Полагаю, что из-за этой.. ошибки?

image

Но он всё же вытащил полное название песни, может в таком случае игнорить ошибку и вставлять в DRP то, что есть?

Проблема появляется только при включённом VPN

Ошибка "WinError -2147418110"

Скрипт не работает, выдаёт ошибку "Вызов был отклонён фильтром сообщений"
Windows 10 Home v.22H2
Yandex Browser

2024-06-19_23-10-04

Медленная скорость скачивания файла с github

Я Столкнулся с проблемой: Оооочень долго качает .exe это больше приколы git hub так по мне лучше закинуть exe в заархивированный архив так будет быстрее.
Что я сделал что бы получить эту проблему: Начал скачивание

Вот скриншот с логами скрипта/проблемой:
image

OS: Windows 10 LTSC 21H2 (чистая, не сборка)

Перестает работать скрипт когда включается определенный артист

Заметил, что скрипт перестает работать после того, как включается трек от определенного артиста, в моем случае это 2hollis. После этого скрипт приходится в ручную перезапускать. Сообщение в консоли прикрепил
WinYandexMusicRPC-1-9_ORxh9fp5sS

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

Логотип

Ребят а у вас нигде не булькнуло логотипу ноги приделать чужому?)
@eggdll , @FozerG или такое в пределах нормы?)

winsdk returned empty string for artist or title

дс запущен, яндекс музыка тоже. Хз что делать
попробовал войти в акк яндекс, не помогло
(перезагрузил комп и заработало)
image

Vencord Plugin

Я Столкнулся с проблемой как в тикете #45

Подумал, что проблема возможно в том что я использую Vencord, хотя раньше все работало штатно и с более старой версией скрипта которая опубликована не только одним экзешником (сложно понять ошибку по которой он не работает, так же вылетает), обновился на последнюю версию, не помогло, сыпет ошибки из тикета 45

Возникла такая мысль, возможно ли перенести/интегрировать скрипт в плагины Vencord?

Уже встроен плагин для LastFM, наверняка и для ЯМ можно сделать

https://vencord.dev/plugins

неправильное отображение времени музыки в RPC

Я Столкнулся с проблемой: что время не правильно отображается в статусе
Что я сделал что бы получить эту проблему: я запустил yandex music windows app from microsoft store и запустил RPC, после чего поставил музыку на повтор

Вот скриншот с логами скрипта:
image

OS: Windows 11 22H2
Браузер: не использую

Отображение треков из браузера не работает (Яндекс и VK Музыка)

У скрипта не работает отображение треков из браузера, как ВК-Музыка, так и Яндекс. Можно ли было как-нибудь это поправить? Было бы классно, чтобы работало отображение треков в статусе из браузера.
А если не получится - то тогда убрать из README заявления про браузер.
Заранее спасибо!

Сокращение длинных названий

Если длинна трека слишком большая - приложение крашится.
Можно сделать так, чтобы название трека сокращалось и в конце добавлялось многоточие...

Изначально просто хотел сообщить о небольшом баге:

Yandex Music API v2.1.1, Copyright (C) 2019-2023 Ilya (Marshal) <https://github.com/MarshalX>
Licensed under the terms of the GNU Lesser General Public License v3 (LGPLv3)

[WinYandexMusicRPC] -> Now listening to Vivaldi String Orchestra, Julius Frederick Rinaldi, Антонио Вивальди - The Four Seasons, Concerto for Violin, Strings and Continuo in F Minor, No. 4, Op. 8, RV 297, "L' Inverno" (Winter): I. Allegro Non Molto
[WinYandexMusicRPC] -> Changed track to Vivaldi String Orchestra, Julius Frederick Rinaldi, Антонио Вивальди - The Four Seasons, Concerto for Violin, Strings and Continuo in F Minor, No. 4, Op. 8, RV 297, "L' Inverno" (Winter): I. Allegro Non Molto
Traceback (most recent call last):
  File "main.py", line 189, in <module>
  File "main.py", line 85, in start
  File "pypresence\presence.py", line 34, in update
  File "asyncio\base_events.py", line 653, in run_until_complete
  File "pypresence\baseclient.py", line 88, in read_output
pypresence.exceptions.ServerError: Child "activity" fails because child "details" fails because "details" length must be less than or equal to 128 characters long
[964] Failed to execute script 'main' due to unhandled exception!

Срабатывает защита DRM

image
OS: Windows 10 LTSC 21H2 (чистая, не сборка)
Браузер: Mozilla Firefox 127.0.1 (64-bit)
Python: 3.10.6
В Discord не отображается ничего (даже то, что я музыку слушаю, хотя оно захватывается скриптом судя по консоли)

Я не знаю что ещё добавить сюда. Надеюсь всё указал

WinError 5

Я Столкнулся с проблемой: Discord is launched but not ready for Rich Presence

Скрин из консоли прилагаю
изображение_2024-07-09_223332406

OS: Windows 10 22H2

Не работает RPC

Музыка не отображается в профиле. Программа работает, в Яндекс Музыке трек играет, дискорд работает, но не отображается rpc. Что делать? В самой программе ошибок никаких нет

Скрипт перестает работать при включении видео на ютуб

Использую яндекс музыку исключительно в браузере, при включении видео в этом же браузере скрипт переключается на ютубовское видео и перестает выводить статус. При повторном включении музыки все встает на места, прикрепил пример ниже
WinYandexMusicRPC-1-9_cuJOnlkitH

Не работает с треками загруженными самостоятельно на Яндекс.Музыку

При попытке запустить трек, которого нет на яндекс.музыке, но был загружен мною, в консоль выводится ошибка "Can't find the song" и после этого в дискорде ничего не появляется. Насколько я понял данный скрипт не привязан к api Яндекс.Музыки, поэтому не понимаю почему это не работает.
Если проблема в функции поиска трека, то можно было бы сделать проверку на наличие трека в яндекс.музыке и если его нет, то просто выводить название, исполнителя и обложку через winsdk.windows.media.control без кнопки перехода к треку в яндекс.музыке.
Ну или для таких треков реализовать отдельный поиск (по last.fm например) и выводить кнопку перехода на трек в стороннем сервисе (но это уже лишние действия).

статус не уходит

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

Несколько багов

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

Не идет таймер, если стоит "слушает"

Я Столкнулся с проблемой: не идет таймер, если стоит активность "слушает" как будто бы музыка стоит на паузе. При "играет" подобного нет.

Вот скриншот с логами скрипта/проблемой:
https://i.imgur.com/KIggTFC.png

OS: Windows 11 23H2
Слушаю музыку через приложение: Яндекс Музыка


Еще такой "пук" в воздух. Если запущен GoodbieDPI, то окно с авторизацией не прогружается. Не критично вообще, но все равно скажу раз пишу :/

Играет в Yandex.Music

Привет. А возможно сделать так, чтобы в статусе отображалось не Играет в Yandex.Music, а Слушает Яндекс Музыку?

P.S. Чтобы не создавать новый тикет, также тут хочу спросить: а как настроить автозапуск консольки с включением компьютера?

Не открывается

Я Столкнулся с проблемой: Не открывается
Что я сделал что бы получить эту проблему: Кликнул туда, сюда, тудым.

Вот скриншот с логами скрипта:
Получить не могу
OS: Windows 11 Pro 23H2 (чистая, не сборка)
Браузер: Mozilla Firefox 127.0.1 (64-bit)
изображение

Берутся песни из вк

Я Столкнулся с проблемой: При включении (либо если осталась в фоне но на паузе) какой либо песни в вк, то она транслируется в discord rpc, при этом игнорируя яндекс музыку
Что я сделал что бы получить эту проблему: Включил песню в Я.М, поставил на паузу, включил песню в вк, поставил песню в вк на паузу

Вот скриншот с логами скрипта/проблемой:
https://youtu.be/glwXC9cWnM8

OS: Windows 10 LTSC 22H2 (чистая, не сборка)
Слушаю музыку через браузер/приложение Я.Музыка: Приложение Я.М

предложение: невидимое окно

У себя сделал экзешник в виде скрытого окна, чтобы лишняя консолька не мозолила глаза:

pip install pyinstaller
pyinstaller --noconfirm --onefile --windowed --name "WinYandexMusicRPC" --hide-console "hide-early"  "E:/WinYandexMusicRPC-main/main.py"

Как найду способ при этом создавать иконку в трее с опцией закрытия приложения - дополню.

WinError -2147418110

Я Столкнулся с проблемой: ошибка "Вызов был отклонен фильтром сообщений".

Вот скриншот с логами скрипта:
image

OS: Windows 10 22H2 (чистая, не сборка)
Браузер: Yandex Browser (64-bit)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.