Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Обновление списка треков в потоке #6

Open
spochipov opened this issue Apr 12, 2022 · 17 comments
Open

Обновление списка треков в потоке #6

spochipov opened this issue Apr 12, 2022 · 17 comments
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@spochipov
Copy link

Проблема: для продолжения прослушивания после достижения финальной композиции не происходит автоматической подгрузки треков
image

@feschukov
Copy link
Owner

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

@feschukov feschukov added the enhancement New feature or request label Apr 12, 2022
@feschukov feschukov added the help wanted Extra attention is needed label Jun 7, 2022
@feschukov feschukov changed the title Обновление списка для "Моя волна" Обновление списка треков в потоке Jun 18, 2022
@feschukov
Copy link
Owner

Первая попытка решения данного вопроса сделана 8aadba2
Пока топорно, но должно работать. Есть вероятность, что в какой-то момент поток всё таки остановится из-за отсутствия новых треков в списке. Поэтому пока идёт тестирование функции, не закрываю данную тему.

@feschukov
Copy link
Owner

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

@feschukov feschukov reopened this Jun 20, 2022
@tranrn
Copy link

tranrn commented Jun 23, 2022

А что такое "определенный момент"? Из приложения тоже не бесконечно играет.

@feschukov
Copy link
Owner

А что такое "определенный момент"? Из приложения тоже не бесконечно играет.

Как я писал ранее, в какой-то момент функция client.rotor_station_tracks начинает выдавать один и тот же список треков, которые уже есть в списке. Когда наступает этот момент, невозможно точно сказать. Часа на 2-3 хватает из моих наблюдений.

@tranrn
Copy link

tranrn commented Jun 23, 2022

По часам ответить не могу, но приложение на андроиде или браузерная версия у меня тоже в иной момент прекращает петь, думая, что я умер. 2-3 часа - уже отличный результат. Можно прикрутить какую-то кнопку "начать сначала"? Будто закрыли клиента и запросили заново список? И с этим уже жить можно.
Большое спасибо за проделанную работу. Управлять rhythmbox через KDE connect хоть можно, браузерный плеер не дает кнопок перемотки. Ну и умный дом теперь видит, что я слушаю и имеет власть над музыкой.

@tranrn
Copy link

tranrn commented Jun 23, 2022

Я вот пока тестирую эту фичу, и вижу, что она слишком часто запрашивает песни. Я слушаю только 7 песню в потоке, а она уже догрузила 20 будущих. Офф приложение вроде так не спешит. Как я понимаю, надо иметь в памяти сколько есть в запасе и не грузить следующие (28ю) при перемотке с 6 на 7.

@feschukov
Copy link
Owner

Я вот пока тестирую эту фичу, и вижу, что она слишком часто запрашивает песни. Я слушаю только 7 песню в потоке, а она уже догрузила 20 будущих. Офф приложение вроде так не спешит. Как я понимаю, надо иметь в памяти сколько есть в запасе и не грузить следующие (28ю) при перемотке с 6 на 7.

Я уже некоторое время тестирую вариант запроса треков только если в списке остался 1 трек. Вроде работает более менее стабильно, но иногда бывает, что поток останавливается из-за того, что новых треков из потока не было получено. Добавил это изменение в ветку main 0784d2d. Прошу вас протестировать это изменение и также отписаться появились ли какие-то проблемы с потоками или нет.

@lowitea
Copy link
Contributor

lowitea commented Aug 12, 2022

@feschukov у меня играет песен 25 примерно и останавливается поток, может добавить там несколько ретраев если первый запрос обломался?

@DeadMozay
Copy link

У меня пока ни разу не прерывался поток, правда я пока пробовал только Моя волна, остальные потоки вроде и так ограничены даже в браузере, не раз видел что некоторые потоки по 25-30 треков, полагаю что это нормально, если это и баг, то скорей всего не плагина, а самой яндекс музыки

@lowitea
Copy link
Contributor

lowitea commented Aug 12, 2022

Тоже Мою волну слушаю, она и останавливается переодически, может у меня сеть конечно нестабильная просто, но кажется поретраить стоит всё таки, и может запрашивать не за один трек, а за парочку, чтобы точно успеть новую пачку получить

@tranrn
Copy link

tranrn commented Aug 13, 2022

Первый же раз стопнулось на 30 песне

@tranrn
Copy link

tranrn commented Aug 13, 2022

Второй раз на 23й стопнулось. Прошлая сборка работала надёжнее :)

@lowitea
Copy link
Contributor

lowitea commented Nov 16, 2022

Дебагом выяснил что происходит примерно. При обновлении фида, в self.last_track пишется трек который уже был проигран ранее (подозреваю потому что он просто вернулся из апишки ещё раз). Соответственно он по факту не last, и когда воспроизведение доходит до настоящего последнего трека, обновление не происходит, потому что сравнивается текущий трек и неправильный из self.last_track. Кажется нужно иначе определять что мы дошли до конца списка воспроизведения.

@lowitea
Copy link
Contributor

lowitea commented Nov 16, 2022

Попробовал улучшить обновление фида: #36
Но решение не идеально, подробности в реквесте.

@feschukov
Copy link
Owner

Попробовал улучшить обновление фида: #36 Но решение не идеально, подробности в реквесте.

Предлагаю протестировать публично ваше решение. Это изменение уж точно ничего не поломает. Теоретически может помочь. Принял PR, спасибо за помощь.

@lowitea
Copy link
Contributor

lowitea commented Nov 17, 2022

@feschukov сейчас появилась другая идея, может быть удалять из db треки которые пришли повторно и снова их добавлять? Если сработает тогда повторения не страшны и по идее поток станет гарантированно бесконечным

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

5 participants