Ограничения для Spotipy?

#python #spotipy

Вопрос:

Я пытаюсь получить список всех моих сохраненных песен с помощью current_user_saved_tracks(), но ограничение составляет 20 треков. Есть ли какой-либо способ получить доступ ко всем 1000 песням, которые у меня есть в учетной записи m?

Комментарии:

1. пожалуйста, укажите код, который вы уже сделали

Ответ №1:

Подпись выглядит следующим образом:

 def current_user_saved_tracks(self, limit=20, offset=0)
 

В официальной справке Spotify API (бета-версия) говорится, что максимум limit=50 . Итак, в цикле вызывайте current_user_saved_tracks , но увеличивайте offset limit каждый раз:

 def get_all_saved_tracks(user, limit_step=50):
    tracks = []
    for offset in range(0, 10000000, limit_step):
        response = user.current_user_saved_tracks(
            limit=limit_step,
            offset=offset,
        )
        print(response)
        if len(response) == 0:
            break
        tracks.extend(response)
    return tracks
 

Повторяйте цикл, пока не получите пустой ответ или исключение. Я не уверен, какой именно.

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

Ответ №2:

Да, аргумент по умолчанию таков limit=20 . Вы можете установить более высокий предел с помощью следующего кода:

 current_user_saved_tracks(limit=50)
 

Или вы можете установить смещение, чтобы получить 20 следующих треков:

 current_user_saved_tracks(offset=20)
 

Источник: https://spotipy.readthedocs.io/en/2.14.0/?highlight=current_user_saved#spotipy.client.Spotify.current_user_saved_треки