Git Product home page Git Product logo

Comments (25)

K1llMan avatar K1llMan commented on July 18, 2024 2

В общем, если кратко, то это проблема потока выполнения на интерфейсе. Ловится блокировка на асинхронные операции от библиотеки.
https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html

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

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024 2

Я скоро выложу новую версию, где добавил асинхронность на эти методы.

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024 1

Правильно. Это он и есть.

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

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

По поводу зависания. На любом треке виснет? Нужен идентификатор, чтобы я смог протестировать.
DashboardPage - это конструктор?

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

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

У меня почему-то да...

DashboardPage - это конструктор?

Я использую WpfUI библиотеку,это от туда.

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

А вот это я не очень понял...(

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

Ссылки я планировал получать на трек лишь в тот момент когда юзер его включает.Или все равно не вариант?
Я в данный момент просто пытаюсь тестовую площадку свою собрать,чтобы понять как дальше работать)

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

Ссылки я планировал получать на трек лишь в тот момент когда юзер его включает.Или все равно не вариант?

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

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

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

Ну вот я так и хочу,когда пользователь клацает на иконку "играть" тогда из списка треков брать его «<id альбома>:<id трека>». и по нему получать ссылку.Понимаю что будут подвисы...но имхо это выход.Но пока увы это не работает у меня.
Сижу изучаю.

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

В общем, если кратко, то это проблема потока выполнения на интерфейсе. Ловится блокировка на асинхронные операции от библиотеки. https://blog.stephencleary.com/2012/07/dont-block-on-async-code.html

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

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

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024
            var play = await _client.Playlist.OfTheDayAsync(_storage);
            foreach (var item in play.Result.Tracks)
            {
                tracks.Items.Add(item.Track.Artists[0].Name + " - " + item.Track.Title);
                    await Task.Run(() =>
                    {
                        Debug.WriteLine(_client.Track.GetFileLink(_storage, item.Track));
                    });
            }

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

from yandex.music.api.

mediaexplorer74 avatar mediaexplorer74 commented on July 18, 2024

... пишу свой аналог ЯМузыки
Сижу изучаю.

Подписался на вас. Надеюсь, однажды опенсорсните свои наработки. Своя Я.Музыка это оч круто, а то вдруг Яндекс прибьет олдскульную UWP-версию своего творения

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

Выложил версию 1.3.6. Публикуется. Проверьте по возможности.

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

Выложил версию 1.3.6. Публикуется. Проверьте по возможности.

Спасибо,сейчас обновлюсь.

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

... пишу свой аналог ЯМузыки
Сижу изучаю.

Подписался на вас. Надеюсь, однажды опенсорсните свои наработки. Своя Я.Музыка это оч круто, а то вдруг Яндекс прибьет олдскульную UWP-версию своего творения

https://t.me/YDiscordMusic
Надеюсь автор не будет ругаться)Раз интересно,там веду блог не спешно)
Я давно этим занимаюсь,но раньше юзал WebView2 а ща решил на либу перейти дабы свой UI сделать и т.п

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

@K1llMan слушай вопрос,а Волну как-то реально получать? Или нет?
Пока все остальное работает,после обновления,спасибо.

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

Моя волна это радиостанция с id "user:onyourwave".

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

Моя волна это радиостанция с id "user:onyourwave".

Да,понял,но я не очень понимаю правильно ли вызываю?

            var wave = await _client.Radio.GetStationAsync(_storage,"user", "onyourwave");
            var wave_data = wave.Result[0].GetTracks();
            foreach(var test in wave_data)
            {
                Debug.WriteLine(test.Track.Title);
            }

В итоге просто замораживает Ui и все.Я так понимаю тут похоже то же самое что было до этого в первом посте?Или нет и я просто криворукий?

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

@K1llMan

            await Task.Run(() =>
            {
                Debug.WriteLine(wave.Result[0].GetTracks()[0].Track.Title);
            });

Да,такой костыль как и раньше срабатывает,для теста вывел хардкодом один трек.Все получил.
Видимо надо async опять метод делать?)
Или же я все же тупой просто)

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

В итоге просто замораживает Ui и все.Я так понимаю тут похоже то же самое что было до этого в первом посте?Или нет и я просто криворукий?

Здесь два подхода смешались. Методы-расширения из клиента идут, и они синхронные. Надо через API получать.

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

В итоге просто замораживает Ui и все.Я так понимаю тут похоже то же самое что было до этого в первом посте?Или нет и я просто криворукий?

Здесь два подхода смешались. Методы-расширения из клиента идут, и они синхронные. Надо через API получать.

Я вот и не очень понимаю просто как)
Доку смотрю,но вижу фигу)

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

YResponse<YStationSequence> sequence = Fixture.API.Radio.GetStationTracks(Fixture.Storage, Fixture.Station.Result.First());

Только версию метода асинхронную нужно использовать.

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

YResponse<YStationSequence> sequence = Fixture.API.Radio.GetStationTracks(Fixture.Storage, Fixture.Station.Result.First());

Только версию метода асинхронную нужно использовать.

А у меня еще такой сработал вроде

            var station = await _client.Radio.GetStationAsync(_storage, "user", "onyourwave");
            var wave = await _client.Radio.GetStationTracksAsync(_storage, station.Result[0]);
            foreach(var test in wave.Result.Sequence)
            {
                Debug.WriteLine(test.Track.Title);
            }

Но это я понимаю так не правильно?

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

Правильно. Это он и есть.

А,понял,спасибо)Отлично,будем думать теперь как его обновлять по мере проходки треков и т.д
Спасибо большое за отзывчивость)

from yandex.music.api.

K1llMan avatar K1llMan commented on July 18, 2024

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

from yandex.music.api.

UrbanSide avatar UrbanSide commented on July 18, 2024

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

Хм,понял...спасибо.Ну пока хоть что то и то радует.А то народ хотел волну :D
Они и на трубе,пк бывают повторяются,так что не критично особо думаю.

from yandex.music.api.

Related Issues (19)

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.