Поведение Playlist.saveWithReplace при количестве треков более сотни #163
Replies: 1 comment 1 reply
-
На уровне API Spotify нельзя назначить произвольную дату добавления трека в плейлист. Почему 100 треков сохраняют дату, а остальные нет? Потому что Spotify спроектировали странное API. Одна и та же функция выполняет замену треков и сортировку на их стороне. Возникает побочный эффект, при котором существующие треки не меняют дату. По причине того, что Spotify решил проверять добавляемое и добавленное ранее, прежде чем заменять. Если трек уже есть, может выполнить сортировку (если в добавляемом у трека другое место). Если трек в первой сотне новый, то один из старых затирается. Узкое место в ограничении - один запрос замены может принять только 100 треков. Если для тысячи треков использовать функцию замены, то каждая следующая сотня будет затирать предыдущую. Поэтому для 101-го трека нужно использовать отдельную функцию добавить как новое. Из-за чего появляется новая дата добавления. Однако есть костыль. Вычислить на нашей стороне треки, которые уже есть в плейлисте и не отправлять их в запросе. Тогда дата добавления останется нетронутой. В таком случае мы идем на компромисс. Можем только добавлять новое в начало или конец плейлиста. То есть теряется возможность произвольной сортировки. Описанный костыль реализован в функции Да, функция сортировки есть в API. Но в худших случаях это тысячи запросов лишь для того, чтобы задать произвольный порядок треков с сохранением даты. Плюс нет уверенности в том, что алгоритм уложится в лимит времени выполнения. Особенно когда сбор и фильтрация занимают большую часть. Даже если все вычислить, не хватит времени это отправить. Цель совсем не соответствует затрачиваемым ресурсам. |
Beta Was this translation helpful? Give feedback.
-
Не понимаю почему применяя функцию Playlist.saveWithReplace только сто треков сохраняют изначальную дату добавления, а всё что больше сотни - сохраняется как только что добавленное. Как это исправить? Хочется, чтобы все треки сохраняли оригинальную дату добавления в плейлист. Или это ошибка?
Beta Was this translation helpful? Give feedback.
All reactions