Перейти к содержимому

Как включить предыдущий трек в яндекс музыке

  • автор:

Солнце горит во мне: обновление Яндекс Музыки, о котором стоит знать

Сегодня, 1 декабря 2023 года, вышло масштабное обновление для сервиса Яндекс Музыка. Коротко и по существу:

  • Еще более точная «Моя волна» с новой моделью рекомендаций
  • Персонализация интерфейса
  • Новый брендинг, отражающий новое понимание миссии Яндекс Музыки

Откуда точность? Какая персонализация? Что за миссия? Чуть подлиннее, но всё ещё по существу — читайте далее.

«Глубина-глубина, я твой»

С технической точки зрения ключевой момент обновления — применение глубоких нейросетей для формирования пользовательских рекомендаций.

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

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

Предпочтения людей в музыке не статичны, с течением времени они могут меняться с разной динамикой. Например, иногда люди ненадолго «влюбляются» в какого-то исполнителя или жанр, но это увлечение быстро проходит. А есть и другие паттерны — когда человек находит любимую музыку и остаётся с ней надолго. Его предпочтения меняются медленно, он постепенно переходит от одного жанра к другому, часто даже не замечая этого. Так, анализируя историю прослушиваний, последовательность музыкальных треков и другие факторы, «Моя волна» теперь способна уловить направление развития музыкального вкуса человека и предсказать его увлечения. Это аналогично работе современных языковых моделей, таких как YandexGPT, но уже в контексте музыки.

Александр Сафронов

главный по рекомендациям в Яндекс Музыке

Но пользовательские действия не единственное, с чем работают нейросети Яндекс Музыки. Они анализируют также сами треки, их звучание. Благодаря этому «Моя волна» способна рекомендовать даже редкий трек, по которому мало данных о прослушивании. Это качественное изменение: раньше рекомендательные системы только анализировали то, что слушают пользователи, теперь же они начинают слушать музыку сами.

Ничего безличного

Яндекс Музыка — это не просто музыкальный поисковик, чтобы найти и послушать какой-то трек. Конечно, таким образом её тоже можно использовать. Но для многих слушателей Яндекс Музыка стала чем-то бо́льшим. Они проводят там много времени, собирают коллекцию, ставят лайки. В некоторых домах «Моя волна» звучит фултайм, как когда-то радио, — но на этом радио не включат русский шансон, когда вам хочется услышать экстремальный норвежский металл.

Отношения пользователя с Яндекс Музыкой становятся более близкими, прочными, личными. И в знак уважения к личности пользователя был создан новый, более персонализированный интерфейс. Теперь прямо с главного экрана можно попасть в «личные» разделы — в коллекцию и на «Мою волну». Добавлены разделы «В стиле» и «Встретились в Моей волне» — там живут исполнители, с которыми пользователь познакомился в ходе своего музыкального «сёрфинга». А самое главное, появился раздел «Для вас» — специальный плейлист, собранный с помощью технологий машинного обучения. К вам когда-нибудь приходил друг с собственноручно записанной кассетой/диском/флешкой с музыкой — мол, на, послушай, мне кажется, тебе понравится… Вот это примерно то же самое.

В коллекции тоже появились новые фишки. Теперь можно настроить её под себя, закрепив нужные разделы. А ещё — добавлена специальная «Моя волна», основанная на коллекции и подбирающая треки, которые бы органично туда вписывались.

Lux Aeterna

Музыка обладает странной властью над человеческой душой. Когда слышишь песню, идеально резонирующую с твоим душевным состоянием, внутри как будто загорается свет. А когда знакомишься с такой песней впервые — в голове взрывается целая сверхновая. «Солнце горит во мне», — пел Саша Непомнящий. Но музыка, от которой загорается свет, может быть разной. Для кого-то это рок-бард Непомнящий, для кого-то рэпер Оксимирон, а кто-то словит сверхновую от электроники Kraftwerk или скрипки Ванессы Мэй. Рекомендательная система Яндекс Музыки не решает за вас, что вам слушать, — она хочет, чтобы вы прислушались к себе. Её миссия — максимизировать количество «сверхновых» на человеко-час.

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

Запустив в 2021 году «Мою волну», мы хотели научиться точно рекомендовать слушателям то, что им подходит, чтобы избавить их от необходимости самостоятельно искать музыку, которая понравится. И у нас это получилось: по мнению слушателей музыки онлайн, мы точнее других попадаем в их музыкальные предпочтени. Теперь мы хотим идти дальше: с помощью рекомендаций сделать музыку бесконечным источником воодушевления и вдохновения, который будет давать слушателям энергию двигаться к тому, чего они действительно хотят, а артистам — откроет путь именно к тем слушателям, которые с ними останутся. Новый бренд и визуальная айдентика отражают суть современной Яндекс Музыки — сервиса, создающего персональный музыкальный мир, который воодушевляет.

Александра Сагалович

руководитель Яндекс Музыки

Разработкой нового дизайна занималась команда «Плюс Фантех» совместно с российским дизайнером Вадиком Мармеладовым, дизайн-бюро Щука, а также шрифтовой студией Contrast Foundry. Дизайн выдержан в тёмных тонах, чтобы подчеркнуть интимность акта прослушивания. Однако узнаваемый жёлтый никуда из него не делся, а шрифт стал контрастным и чётко обыгрывает логотип.

Миссия выполнима

Обновление Яндекс Музыки стало результатом большой и слаженной работы многих людей. Однако смысл этого поста — не в ожидании аплодисментов, ведь настоящая работа только начинается. Мало заявить о миссии — миссию нужно выполнить на 110%. И теперь команда Яндекс Музыки будет работать ещё больше и усерднее, чтобы этот небывалый пользовательский опыт из мечты стал реальностью, а затем и обыденностью. Яндекс Музыка будет зажигать звёзды — потому что это кому-то нужно.

  • Яндекс.Музыка
  • редизайн
  • Дизайн мобильных приложений
  • Дизайн
  • Звук

Можно ли подключить Яндекс музыку на 2 устройства

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

  • Подписка на Яндекс музыку позволяет пользоваться на 10 устройствах одновременно
  • Каждый пользователь в подписке имеет свой аккаунт и индивидуальные рекомендации фильмов и музыки
  • Можно использовать несколько аккаунтов на одном устройстве, но все скачанные ранее треки будут стерты при смене аккаунта
  • Чтобы пригласить пользователя в подписку, нужно получить ссылку на подписку и отправить ее ему
  • Семейная подписка на Яндекс музыку позволяет пользоваться подпиской до четырех человек
  • На одном аккаунте можно подключить несколько колонок, но только одну подписную (ставится в приоритет)
  • Чтобы поделиться музыкой, надо выбрать трек и нажать «Поделиться» в социальных сетях; можно поделиться только ссылкой на трек, подкаст, альбом или плейлист
  • Чтобы добавить пользователя в Яндекс музыке, надо нажать на портрет аккаунта в правом верхнем углу страницы и выбрать «Добавить аккаунт»
  1. Можно ли пользоваться Яндекс музыкой на 2 устройствах
  2. Как подключить Яндекс музыку на двоих
  3. Можно ли пользоваться одним аккаунтом Яндекс музыки
  4. Как включить Яндекс музыку на другом устройстве
  5. Сколько человек может пользоваться подпиской Яндекс музыка
  6. Сколько устройств можно подключить к одному аккаунту Яндекс
  7. Можно ли поделиться Яндекс музыкой
  8. Как добавить пользователя в Яндекс музыке
  9. Как добавить устройство в Яндекс музыку
  10. Можно ли слушать Яндекс музыку с двух телефонов
  11. Как слушать музыку на нескольких устройствах
  12. Как сделать чтобы музыка играла одновременно на двух телефонах
  13. Как дать доступ к Яндекс музыке
  14. Можно ли объединить два аккаунта в Яндексе
  15. Как перенести музыку из Яндекс Музыки на другое устройство
  16. Сколько человек пользуются Яндекс плюс
  17. Как посмотреть сколько устройств подключено к Яндекс плюс
  18. Можно ли слушать музыку друга в Яндекс музыке
  19. Как сделать семейный аккаунт яндекс музыка
  20. Сколько стоит семейная подписка Яндекс музыка
  21. Как дешевле платить за Яндекс плюс
  22. Сколько стоит подписка на Яндекс музыка
  23. Можно ли на Яндекс колонке слушать музыку с телефона
  24. Как добавить устройство в Яндексе
  25. Можно ли использовать один аккаунт Яндекс музыки на двух телефонах
  26. Можно ли поделится Яндекс музыкой

Можно ли пользоваться Яндекс музыкой на 2 устройствах

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

Как подключить Яндекс музыку на двоих

Можно ли пользоваться одним аккаунтом Яндекс музыки

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

Как включить Яндекс музыку на другом устройстве

Сколько человек может пользоваться подпиской Яндекс музыка

Подпиской в семейном формате могут пользоваться до четырех человек.

Сколько устройств можно подключить к одному аккаунту Яндекс

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

Можно ли поделиться Яндекс музыкой

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

Как добавить пользователя в Яндекс музыке

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

Как добавить устройство в Яндекс музыку

В правом верхнем углу экрана нажмите. Разрешите поиск устройств в локальной сети, если еще не делали этого — это нужно, чтобы приложение могло найти устройства в сети Wi-Fi. Выберите нужное устройство. Если на панели нет нужного устройства, посмотрите рекомендации в разделе о проблемах синхронизации.

Можно ли слушать Яндекс музыку с двух телефонов

В Яндекс Музыке есть ограничение на одновременное воспроизведение одного и того же трека на разных устройствах. Если у вас этот случай, тогда музыку можно запустить только на смартфоне или колонке. Единственный вариант проиграть один трек на двух устройствах одновременно — воспроизвести его на разных аккаунтах.

Как слушать музыку на нескольких устройствах

Подключение нескольких устройств:

  • На устройстве Android нажмите Настройки Подключенные устройства.
  • Рядом с нужным устройством коснитесь значка «Настройки».
  • Выберите Несколько подключений Использовать неск.
  • Подключите наушники к двум источникам звука.

Как сделать чтобы музыка играла одновременно на двух телефонах

Это можно сделать с помощью приложения AmpMe для Android и iOS. AmpMe позволяет выводить одну и ту же музыку на нескольких смартфонах с очень точной синхронизацией потока. В результате получается громкая многоканальная акустическая система.

Как дать доступ к Яндекс музыке

Публичный доступ означает, что ваши плейлисты будут доступны в поиске:

  • Откройте сайт Яндекс Музыки.
  • Нажмите Коллекция наверху.
  • Нажмите кнопку Настройки.
  • Перейдите на вкладку Прочее.
  • Пролистайте вниз и включите опцию Публичный доступ к моей фонотеке.

Можно ли объединить два аккаунта в Яндексе

Нет, но можно одновременно пользоваться несколькими аккаунтами не выходя из них. Так же можно настроить пересылку почты с одного email на другой. Вы знаете ответ на этот вопрос?

Как перенести музыку из Яндекс Музыки на другое устройство

Перейдите по ссылке. Авторизуйтесь в своем аккаунте Яндекса, с которого пользуетесь Яндекс Музыкой. Выберите сервис, из которого нужно импортировать Музыку, и авторизуйтесь в нем в появившемся всплывающем окне. Запустите процесс переноса треков, и Яндекс Музыка сопоставит названия треков в списке со своим каталогом.

Сколько человек пользуются Яндекс плюс

Плюс» увеличилось в два раза Компания «Яндекс» зафиксировала двукратный рост количества подписчиков «Яндекс. Плюса»: по состоянию на сегодняшний день, 18 октября 2021 года, их общее число составляло приблизительно 10 млн человек.

Как посмотреть сколько устройств подключено к Яндекс плюс

Информация выводится в приложении Яндекс → значок профиля → Умный дом → Устройства → Выбрать устройство → → Об устройстве.

Можно ли слушать музыку друга в Яндекс музыке

Для каждой фонотеки в Яндекс Музыке автоматически создается ссылка вида https://music.yandex.ru/users/login. По этой ссылке вашу фонотеку могут просматривать друзья и другие пользователи сервиса.

Как сделать семейный аккаунт яндекс музыка

Создать семейный аккаунт:

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

Сколько стоит семейная подписка Яндекс музыка

Specification: Яндекс Плюс Мульти — Семейная подписка на 1 месяц

Подключение до 4 аккаунтов по семейной подписке

Как дешевле платить за Яндекс плюс

Оформляйте подписку на год, оплачивайте её картой Яндекс. Плюс. Так будет дешевле Все подписки Плюс выгоднее всего оформлять сразу на год.

Сколько стоит подписка на Яндекс музыка

Музыка �� Стоимость подписки: 299 ₽ в месяц или 2490 ₽ в год. Можно подключить до четырёх пользователей и до 10 устройств.

Можно ли на Яндекс колонке слушать музыку с телефона

На Станцию можно транслировать музыку с компьютера, планшета или смартфона через Bluetooth — как на обычную беспроводную колонку.

Как добавить устройство в Яндексе

  • Включите умную розетку Яндекса в бытовую розетку, затем нажмите кнопку на корпусе.
  • Откройте приложение Дом с Алисой.
  • Добавьте новое устройство: Если это ваше первое умное устройство, нажмите на баннер Устройства, затем выберите Розетку.
  • Следуйте инструкциям в приложении.

Можно ли использовать один аккаунт Яндекс музыки на двух телефонах

В Яндекс Музыке есть ограничение на одновременное воспроизведение одного и того же трека на разных устройствах. Если у вас этот случай, тогда музыку можно запустить только на смартфоне или колонке. Единственный вариант проиграть один трек на двух устройствах одновременно — воспроизвести его на разных аккаунтах.

Можно ли поделится Яндекс музыкой

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

15.05.2023 Можно ли подключить Яндекс музыку на 2 устройства

Многие пользователи Яндекс Музыки задаются вопросом, возможно ли подключить подписку на 2 устройства. Ответ на этот вопрос положительный: подписка позволяет использовать сервис на 10 устройствах одновременно, включая телефоны, ноутбуки, Смарт ТВ и Станции. При этом каждый пользователь получает свой собственный аккаунт, рекомендации по музыке и фильмам, а также баллы программы Яндекс.Плюс.

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

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

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

Если вы хотите поделиться музыкой со своими друзьями в социальных сетях, то это можно сделать с помощью соответствующей функции. Однако, в социальной сети будет доступна только ссылка на трек, подкаст, альбом или плейлист.

Чтобы добавить нового пользователя в Яндекс Музыке, нужно выбрать соответствующий пункт из меню аккаунта и ввести данные нового пользователя. Если у данного пользователя уже есть свой аккаунт, то он может использовать его для входа. Если же нет, то ему нужно зарегистрировать новый аккаунт. В целом, подключение Яндекс Музыки на 2 устройства не является проблемой, а наоборот, обеспечивает компактность и удобство использования сервиса.

Как в Яндекс Музыке посмотреть историю прослушиваний на телефоне и ПК?

Как в Яндекс Музыке посмотреть историю прослушиваний и понять, каким именно трекам вы отдаете предпочтение? Может быть, вы ищете услышанную песню, название которой забыли? Как бы там ни было – расскажем, что делать.

На компьютере

Как посмотреть историю прослушанного в Яндекс Музыке – проще простого! Обратите внимание на нижнюю панель, где отображается строка плеера:

  • Найдите иконку в виде списка рядом с обложкой проигрываемого трека;

  • Нажмите на нее – автоматически откроется вкладка «История» . Вот и все!

Есть и второй вариант, как посмотреть вчерашний плейлист в Яндекс Музыке (и не только вчерашний).

  • Найдите на верхней панели вкладку «Моя коллекция» ;

  • Внутри собственного профиля переключитесь на раздел «История» . Готово!

У истории прослушиваний есть свои ограничения: сохраняются максимум 2000 треков, которые вы включали. Как только вы достигнете лимита, более старые композиции будут стираться из памяти, заменяясь новыми.

Вы уже знаете, как в Яндекс Музыке посмотреть прослушанные треки – а что еще можно сделать? Откройте историю прослушиваний еще раз:

  • Наверху справа есть кнопка «Очистить» , позволяющая полностью удалить список из «памяти» сервиса. Если вы нажмете на эту иконку, список рекомендованных песен сильно изменится;

  • Напротив каждого трека есть сердечко, позволяющее добавить его в список «Нравится» ;
  • Если вы не хотите больше никогда слышать определенную композицию, просто нажмите на перечеркнутый значок;

  • Кликните по трем точкам напротив названия, чтобы открыть дополнительное меню: добавить в плейлист, включить поток по треку или поделиться с другим пользователем.

Важно! Советуем синхронизировать десктоп и мобильное приложение. Тогда вы будете знать, как посмотреть песни, прослушанные в Яндекс Музыке на телефоне через веб-версию.

На смартфоне

Любите послушать песни на мобильном? Удобно, воткнул наушники – можно делать, что пожелаешь! В приложении для смартфона также есть возможность просмотреть историю прослушиваний:

  • Найдите на нижней панели иконку в виде сердечка;

  • Вы увидите свою коллекцию – здесь список «Мне нравится» , а ниже другие доступные вкладки (например, Треки или Подкасты);
  • Пролистываем еще ниже до раздела «Вы недавно слушали» .

Вот и ответ на вопрос, как посмотреть прослушанные песни в Яндекс Музыке через приложение!

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

Если нажать на три точки рядом с названием, получите доступ к основному меню. Можно поставить отметку «Нравится» , скачать, включить поток по альбому и поделиться.

Статистика

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

  • Откройте страницу музыканта/группы любым удобным способом;
  • Перейдите на вкладку «Инфо» .

Вот как посмотреть статистику в Яндекс Музыке – вы увидите следующую информацию:

  • Количество слушателей за несколько последних месяцев (чтобы переключаться, нажимайте на стрелку);
  • Количество лайков за последние полгода (также жмите на стрелку, чтобы посмотреть разные месяцы);
  • Количество слушателей в разных регионах. Учитываются регионы, где певец/группа наиболее популярны.

Это правда интересно – знать, как посмотреть в Яндекс Музыке сколько прослушиваний было у исполнителя! Так вы сможете понять, насколько он популярен среди подписчиков сервиса.

Интегрируем Яндекс Музыку в Visual Studio Code

Представьте, что вы можете слушать свои любимые песни на Яндекс.Музыке, прямо из своего любимого редактора кода, не переключаясь между приложениями. Это уже не мечта, а реальность! В этой статье мы рассмотрим, как интегрировать Яндекс.Музыку в Visual Studio Code и наслаждаться любимой музыкой прямо во время работы.

  • Обзор расширения
  • API Яндекс Музыки
    • Авторизация
    • Плейлисты
      • Персональные плейлисты
      • Плейлист “Мне нравится”
      • Плейлисты пользователей
      • Создание очереди
      • Получение текущего проигрываемого трека
      • Основные компоненты
      • TreeView
      • Диалог подтверждения
      • Хранение паролей и настроек
      • Предыстория
      • Под капотом Microsoft Live Share Audio
      • Архитектура Electron
      • Воспроизведение трека
      • Загрузка Electron в рантайме

      Обзор расширения

      Перед тем перейти к описанию реализации давайте краем глаза взглянем на само расширение и его возможности.

      Описание возможностей расширения

      Я думаю, легко заметить, что левая панель по большому счёту просто повторяет реализацию главной страницы Яндекс Музыки. Здесь вам:

      • и персональные плейлисты
      • и ваши любимые песни и подкасты
      • и рекомендации
      • и поиск

      Подборки пока отсутствуют, но со временем и они должны появиться (если не хватает ещё чего-то — дайте знать ��).

      Конечно же, расширение — лишь урезанная версия Я.Музыки, поэтому вы можете быстро перейти к нужному треку, альбому или плейлисту с помощью кнопки “Открыть в браузере”.

      Не буду углубляться в детали, это всё-таки разбор реализации, а не демо. Если интересно поближе посмотреть на расширение — можете просто установить его.

      Как авторизоваться в расширении

      Есть два способа авторизоваться в расширении:

      Способы авторизации в расширении

      • По токену
      • По логину и паролю

      Почему так? Яндекс постепенно уходит от авторизации по логину и паролю, ведь способ не очень безопасный, и всё меньше и меньше пользователей могут использовать данный способ. Если вы уверены, что ввели корректные данные, но всё равно видите данную ошибку, то вам стоит использовать второй вариант — вход с помощью токена.

      Ошибка, если для вашего аккаунта не работает авторизация по логину и паролю

      Существует 3 способа получить токен:

      1. С помощью расширения
        1. Для Google Chrome
        2. Для Firefox

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

        Самый простой способ — расширение для Хрома, установите его и нажмите на кнопку “Скопировать токен”.

        Расширение для Хрома, для получения токена

        Теперь самое время взглянуть под капот. Реализация расширения будет состоять из 3-х частей:

        • Работа с API Яндекс Музыки
        • Разработка VS Code расширения, отображающее треки и плейлисты
        • Воспроизведение треков с помощью Electron

        API Яндекс Музыки

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

        • Погуглил, есть ли у Я.Музыки официальное API
        • Официального API нет, нашёл неофициальное API
        • К сожалению, библиотека заброшена, к тому же в ней отсутствуют нужные мне методы
        • Натыкаюсь на статью “Как я библиотеку для сервиса «Яндекс.Музыка» писал” и на библиотеку на питоне (Илья, если ты читаешь статью — Спасибо тебе, я не забыл про тебя!).
        • Начинаю самостоятельно писать клиент Яндекс.Музыки внутри расширения. Использую также как указано в статье HTTP Analyzer и виндовое приложение Яндекс Музыки.
        • Вручную пишу OpenAPI схему
        • Генерирую JavaScript-клиент yandex-music-client на основе OpenAPI схемы

        Работа над генерацией клиента всё ещё продолжается, и когда появится первая более-менее стабильная версия — я напишу отдельную статью.

        Теперь рассмотрим самые популярные методы.

        Авторизация

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

        Если для вашего аккаунта всё ещё работает вход по логину и паролю — используйте метод getToken как показано ниже, иначе — скопируйте токен с помощью Google Chrome Extension.

        import < getToken >from 'yandex-music-client/token'; import < YandexMusicClient >from 'yandex-music-client/YandexMusicClient' // Получение токена работает не для всех пользователей // Универсальный способ получения токена через Google Chrome Extension: // https://chrome.google.com/webstore/detail/yandex-music-token/lcbjeookjibfhjjopieifgjnhlegmkib const token = await getToken('your email', 'your password'); const client = new YandexMusicClient(< BASE: "https://api.music.yandex.net:443", HEADERS: < 'Authorization': `OAuth $`, >, >);

        Плейлисты

        Персональные плейлисты

        Большинство плейлистов, которые вы видите на главной странице, можно получить с помощью метода client.landing.getLandingBlocks (GET /landing3 )

        Есть разные типы лендинг блоков:

        • Например, чтобы получить плейлисты “плейлист дня”, “дежавю”, “премьера” и т.д. необходимо запросить блок типа personalplaylists — client.landing.getLandingBlocks(«personalplaylists»)
        • Плейлист с новинками — нужно запрашивать блок new-releases
        • Чарт Я.Музыки — chart
        • Новые плейлисты — new-playlists
        • Подкасты — podcasts
        • Интересно сейчас — promotions

        Можно получить сразу несколько блоков, указав их через запятую:

        client.landing.getLandingBlocks( "personalplaylists,promotions,new-releases,new-playlists,podcasts" )

        Именно такой запрос отправляет официальное приложение Яндекс.Музыки.

        Запрос, который отправляет приложение Я.Музыки для получения лендинг блоков

        Плейлист “Мне нравится”

        Все понравившиеся треки нужно получать в 2 захода:

        1. Получить идентификаторы понравившихся треков — (GET /users//likes/tracks )
        2. Получение треков по идентификаторам — (POST /tracks ). Идентификаторы должны выглядеть как строка “:”.

        Код будет выглядеть вот так:

        const result = await client.tracks.getLikedTracksIds(userId); const ids = result.result.library.tracks.map(track => `$:$`); const tracks = await client.tracks.getTracks(< "track-ids": ids >);

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

        Стоит упомянуть ещё несколько методов:

        • Лайкнуть трек — client.tracks.likeTracks (POST /users//likes/tracks/add-multiple )
        • Убрать лайк — client.tracks.removeLikedTracks (POST /users//likes/tracks/remove )
        • Список треков с дизлайками — client.tracks.getDislikedTracksIds (GET /users//likes/tracks/remove )
        Плейлисты пользователей

        Тут ничего интересного — просто перечислю существующие методы работы с плейлистами:

        • Создать плейлист — client.playlists.createPlaylist (POST /users//playlists/create )
        • Переименовать плейлист — client.playlists.renamePlaylist (POST /users//playlists//name )
        • Удалить плейлист — client.playlists.deletePlaylist (POST /users//playlists//delete )
        • Добавить/удалить треки из плейлиста — client.playlists.changePlaylistTracks (POST /users//playlists//change-relative )
        • Получить все плейлисты пользователя — client.playlists.getPlayLists (GET /users//playlists/list )
        • Получить плейлист по полю kind (такой идентификатор, уникальный внутри плейлистов пользователя, у других пользователей будут такие же айдишки) — client.playlists.getPlaylistById(userId, playlistKind) (GET /users//playlists/ )
        • Получить список плейлистов по kind , позволяет получить треки вместе с плейлистами, если передать rich-tracks как true — client.playlists.getUserPlaylistsByIds (GET /users//playlists )
        • Получить плейлист по kind — client.playlists.getPlaylistById (GET /users//playlists/ )

        Радио

        Методы работы с радио:

        • Получить информации о станции — client.rotor.getStationInfo (GET /rotor/station//info )
        • Получить треки для станции — client.rotor.getStationTracks (GET /rotor/station//tracks )
        • Получить списка радиостанций — client.rotor.getStationsList (GET /rotor/stations/list )
        • Получить рекомендации станций для текущего пользователя — client.rotor.getRotorStationsDashboard (GET /rotor/stations/dashboard )
        • Отправить фидбэк о событиях станции. Необходимо отправлять, когда включается радио и начинается/заканчивается/или пользователь пропускает трек — (GET /rotor/station//feedback )

        Если до этого, я просто перечислял запросы, то с радио всё сложнее. Тут мы остановимся поподробнее. Если мы включим HTTP Analyzer, и запустим радио в официальном виндовом приложении Я.Музыки (например “Моя волна” — user:anyourwave ) мы получим вот такую портянку запросов.

        Набор запросов при воспроизведении радио “Моя волна”

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

        Схема воспроизведения радио

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

        В расширении пока реализовано только одно радио — Моя волна (исходники тут).

        Радио “Моя волна” в расширении для VS Code

        Очереди

        Один из самых частых вопросов в чате по Яндекс.Музыке — как получить трек, который играет в данный момент. Мы уже шутили, что нужно интегрировать чат GPT, чтобы он отвечал на данный вопрос, но к сожалению он начал придумывать несуществующие методы. Так вот — получать текущий трек нужно именно на основе очередей.

        Создание очереди

        Очереди создаются при любом воспроизведении плейлиста, альбома или радио. Например, вот так происходит воспроизведение альбома.

        Запросы при воспроизведении альбома в официальном виндовом приложении Яндекс Музыки

        1. Получаем альбом с треками GET /albums//with-tracks
        2. Создание очереди POST /queue , куда мы передаём все треки из плейлиста
        3. Выставляем номер текущего трека — POST /queues//update-position?currentIndex=0

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

        Воспроизведение альбома

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

        Тот же самый альбом можно продолжить слушать

        Получение текущего проигрываемого трека

        Чтобы получить текущий проигрываемый трек, достаточно нескольких шагов:

        • Получить список очередей — client.queues.getQueues() (GET /queues)
        • Получить id последней воспроизводимой очереди — первая в массиве полученном на прошлом шаге.
        • Запросить эту очередь — client.queues.getQueueById() (GET /queues/)
        • Получить текущий трек в очереди — client.tracks.getTracks() (GET /tracks/)

        Код целиком будет выглядеть вот так:

        const < YandexMusicClient >= require('yandex-music-client'); const client = new YandexMusicClient(< BASE: "https://api.music.yandex.net:443", HEADERS: < 'Authorization': `OAuth `, >, >); client.queues .getQueues('os=unknown; os_version=unknown; manufacturer=unknown; model=unknown; clid=; device_id=unknown; uuid=unknown') .then(async () => < // Последняя проигрываемая очередь всегда в начале списка const currentQueue = await client.queues.getQueueById(result.queues[0].id); const = currentQueue.result; const currentTrackId = tracks[currentIndex ?? 0]; const currentTrack = (await client.tracks.getTracks(:$`]>)).result[0]; const supplement = await client.tracks.getTrackSupplement(currentTrack.id); console.log(JSON.stringify(supplement.result.lyrics.fullLyrics, null, 2)); >)

        Хоть для радио и создаётся очередь — получить текущий трек не получится. В этой очереди нет треков, так как треки для радио генерируются динамически. Поэтому если вы продолжите слушать радио на другом устройстве, воспроизведение начнётся совсем с другого трека.

        Скачивание трека

        Никому не было бы интересно API, если бы не могли скачивать музыку, ведь это самое главное.

        Если вы используете библиотеку yandex-music-client, то для скачивания трека достаточно знать его id и использовать метод getTrackUrl. Но под капотом скачивание происходит вот так:

        Процесс скачивания трека

        Swagger и CORS

        Совсем забыл упомянуть очень важную вещь, вы не сможете просто взять и написать веб приложение с помощью моего API. Дело в том, что Яндекс запрещает выполнение кросс доменных запросов.

        В своём проекте с OpenAPI схемой я обхожу это ограничение с помощью proxy-сервера на NodeJS, но в этом случае некоторые запросы могут не работать из-за того, что proxy-server не находится в России.

        Используемый Proxy-server для API Яндекс Музыки

        Если вы собираетесь писать своё приложение, в котором будет присутствовать бэкенд — то вы просто можете просто использовать yandex-music-client на бэке и, таким образом, не будет никаких проблем с крос-доменными запросами (но помните, что некоторые методы не доступны вне СНГ). Если вы пишите консольное приложение, телеграмм бота или мобильное приложение — то никаких проблем не будет, ведь CORS существует лишь в браузере.

        Разработка VS Code расширения

        Теперь, когда у нас есть API для Яндекс Музыки, мы можем всё это дело интегрировать в VS Code. Я не буду описывать всё очень подробно, поэтому, если вам интересна базовая структура расширений VS Code, можете почитать о ней здесь.

        Но есть одна из главных вещей, которую необходимо понимать. VS Code — обычное NodeJS приложение, поэтому вы можете использовать совершенно любые библиотеки, которые вы привыкли использовать, будь то axios для выполнения запросов или MobX для управления состоянием.

        Основные компоненты

        Ниже описаны основные компоненты, которые необходимы для разработки расширения.

        Компоненты VS Code, используемые в расширении

        Создание большинства компонентов начинается с добавления так называемых contribution points. Все они описываются в package.json в поле contributes.

        Contribution points в package.json

        Именно здесь необходимо определять:

        • Команды — что-то вроде обработчиков событий (contributes/commands)
        • Настройки вашего расширения (contributes/configuration)
        • Боковые панели и их содержимое (contributes/viewsContainers, contributes/views)
        • Горячие клавиши (contributes/keybindings)
        • Экшены для узлов дерева и контекстное меню (contributes/menus)

        Чтобы было более понятно как работать с компонентами, давайте рассмотрим пару примеров.

        TreeView

        Большая часть расширения представляет собой деревья с плейлистами, альбомами и треками. Прежде чем создать TreeView, необходимо определить соответствующий contribution point в package.json.

        Здесь мы определяем 4 дерева, которые будут использоваться в расширении:

        Далее для каждого дерева нужно определить data provider, который будет решать какие узлы необходимо отобразить в дереве. Для простоты возьмём дерево, отображающее Чарт.

        // Провайдер для Чарта Я.Музыки export class ChartTree implements vscode.TreeDataProvider  < constructor(private store: Store) < >getChildren(): vscode.ProviderResult  < // Каждый трек чарта рендерится как отдельный узел в дереве return this.store.getChart().then((items) => < return items.map((item) =>new ChartTreeItem(this.store, item, CHART_TRACKS_PLAYLIST_ID)); >); > > const api = new YandexMusicApi(); const store = new Store(api); // Создание провайдера const chartProvider = new ChartTree(store); // Создание дерева, объявленного во вью "yandex-music-chart" с провайдером chartProvider vscode.window.createTreeView("yandex-music-chart", < treeDataProvider: chartProvider >);

        Код немного упрощён, полную версию можно посмотреть тут и тут.

        Диалог подтверждения

        В VS Code есть альтернатива привычных нам alert/confirm, которые существуют в браузере (и которыми мы обычно не пользуемся) — window.showInformationMessage. Первым аргументом вы указываете сообщение, а затем передаёте сколько угодно кнопок.

        export async function showPrompt(title: string): Promise

        Диалог, показывающийся при удалении плейлиста

        Хранение паролей и настроек

        VS Code предоставляет 2 возможности хранения данных, обе схожи с localStorage:

        • WorkspaceConfiguration
        • и SecretStorage

        Так как нам необходимо хранить пароли, то первый вариант нам не подходит. Все настройки хранятся в общем файле settings.json и доступны для любого расширения. Это именно те настройки VS Code, которые вы изменяете, чтобы настроить размер шрифта или темы.

        Пример настроек VS Code, доступных через WorkspaceConfiguration

        Мы же собираемся хранить токен авторизации, поэтому важно использовать именно второй вариант — SecretStorage. Хранится SecretStorage в контексте нашего расширения, который передаётся в метод activate, выполняющийся при запуске расширения. API такой же простой, как и API localStorage в браузере.

        Интерфейс SecretStorage

        Очень просто и понятно оба способа хранения настроек описаны в статье SecretStorage VSCode extension API. В ней же описывается тот же подход с реализацией класс-синглтона для настроек, который я использую в расширении.

        Воспроизведение музыки

        Предыстория

        Мы разобрались с получением и отображением треков и находимся на финишной прямой, теперь осталось самое главное — воспроизвести их. Кажется, что всё довольно просто — VS Code работает на электроне, значит мы легко сможем воспроизвести музыку, так же как и в браузере. Всё так, да немного не так, немного погуглив, я наткнулся на гитхаб ишью.

        В этом ишью есть две новости:

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

        После долгих поисков подходящего npm-пакета я нахожу play-sound. Но после недолгого использования я сразу же понимаю, что использовать этот пакет просто невозможно:

        • он не умеет ничего кроме воспроизведения музыки, а значит перемотка, регулировка звука и всё остальное — ложится на ваши плечи
        • К тому же нельзя узнать закончился ли трек, чтобы включить следующий

        Далее, я нахожу mplayer — обёртку для MPlayer, которая поддерживает все данные функции. Кажется, что всё гораздо лучше — но нет, через некоторое время использования я понимаю, что работает он ужасно:

        • Следующий трек воспроизводится с задержкой (библиотека не умеет в потоковое скачивание, поэтому трек необходимо полностью скачать, из-за чего происходит задержка)
        • Перемотка работает очень плохо, всё постоянно заедает
        • Из мелочей — у библиотеки нет тайпингов, их приходится писать руками

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

        Под капотом Microsoft Live Share Audio

        Все расширения в vscode находятся в /Users//.vscode/extensions и представляют собой обычное JavaScript приложение, где есть package.json и набор js файлов, которые можно изучать и даже дебажить. Интересующее нас расширение находится в папке ms-vsliveshare.vsliveshare-audio-0.1.93

        Файлы расширения Microsoft Live Share Audio

        Как дебажить сторонние VS Code расширения

        На самом деле — всё очень просто. Открываете папку с нужным расширением в Vs Code, затем нажимаете F5 и выбираете “VS Code Extension Development” — готово.

        Немного подебажив исходники, несложно заметить, что расширение под капотом использует electron для совершения звонков с помощью Skype API. Для этого достаточно открыть файл ExternalAppCallingService — в котором одноимённый класс отвечает за запуск электрона.

        Файл externallAppCallingService, который отвечает за запуск электрона

        1. ./out/calling/externalApp/dist — путь к электрон приложению, с помощью которого будут осуществляться голосовые звонки
        2. При запуске электрона необходимо удалить переменные, которые устанавливает VS Code, чтобы запускаться в качестве NodeJS процесса. Нам не нужно, чтобы электрон запускался как NodeJS процесс, поэтому эти переменные нужно удалить, подробнее можно посмотреть вот в этом ишью.
        3. Непосредственный запуск электрона.

        Этот код показывает, как правильно запускать electron в качестве дочернего процесса vscode — это то, что нам нужно. Получается, чтобы воспроизвести музыку, нам нужно запустить электрон из электрона (VS Code тот же электрон).

        Также если покопаться, можно заметить, что электрон скачивается в рантайме только один раз при первом запуске расширения, но к этому мы ещё вернемся.

        Архитектура Electron

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

        Процесс электрона состоит из 2-х частей:

        Архитектура Electron

        • main — главная часть, в которой есть доступ к нативному API
        • renderer — часть в которой рендерится web-страница

        Взаимодействуют эти части с помощью межпроцессовых каналов коммуникации (inter process communication (IPC) channels) — ipcMain и ipcRenderer. По названиям очевидно, что:

        • Внутри main-процесса нужно использовать ipcMain
        • А внутри renderer-процесса — ipcRenderer (либо напрямую — небезопасно, либо через contextBridge — безопасно)

        Оба канала могут как отправлять, так и получать сообщения.

        Подробнее об архитектуре Electron можно почитать здесь, а о IPC-каналах здесь.

        Воспроизведение трека

        Для воспроизведения будем использоваться обычное Audio-API, поэтому здесь всё просто. Самая интересная часть — передача трека, который мы хотим воспроизвести, от VS Code в Renderer-процесс электрона. Передавать мы будем пейлоад следующего типа:

        export interface IPlayPayload

        Чтобы понять как это реализовать — давайте взглянем на диаграмму, сейчас нас интересуют лишь зелёные стрелки, начало процесса в VS Code extension ⇒ Store.

        Схема воспроизведения трека

        Всё ещё сложнее, когда нужно воспроизвести следующий, трек, когда предыдущий завершился. В этом случае — нужно преодолеть целый круг:

        • От Audio до Store, чтобы оповестить Store, что трек завершился
        • От Store до Audio, чтобы воспроизвести следующий трек

        При передаче данных от VS Code extension до Electron Process — необходимо их сериализовать в JSON, потому что между процессами мы не можем передавать JavaScript объекты.

        play(trackinfo?: IPlayPayload) < this.childProcess?.send(JSON.stringify(< command: "play", payload: trackinfo >)); >

        Загрузка Electron в рантайме

        Кажется можно уже радоваться, всё прекрасно работает, треки крутятся, а звёзды на гитхабе мутятся (нет!), но начали появляться ишью на гитхабе для мака и линукса.

        Изначально, я просто добавил electron, как зависимость к проекту и всё работало хорошо. Как оказалось, нужная версия электрона скачивается при установке npm пакетов, а я работал на винде и соответственно, расширение работало только на винде.

        Снова покопавшись в Live Share Audio, я обнаружил, что расширение cкачивает нужную версию электрона в рантайме с собственных серверов.

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

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

        Через некоторое время я понял, что если electron устанавливает необходимые бинарники в рантайме, то код скачивания должен быть где-то в их репозитории. Немного покопавшись, я нашёл пакет electron/get — именно он используется под капотом, когда вы устанавливаете электрон в зависимости. Также я нашёл почти готовый скрипт для установки нужной версии электрона в рантайме.

        Итог

        На этом всё. Спасибо, если смогли дочитать до самого конца, я думаю таких не много, статья получилась достаточно длинной. Если у вас есть какие-либо вопросы или предложения — обязательно пишите в личку или в комментариях. Буду признателен, если сможете поддержать проект любым способом:

        • Идеями в комментариях к статье или в ишью на гитхабе
        • Звёздочками на гитхабе
        • Отзывами в магазине расширений
        • Подпиской на мой телеграмм канал, где я рассказываю о программировании

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *