Энпоинт spotify api "player/currently-playing" не возвращает данные о текущей воспроизводимой песне
Я пытаюсь получить данные о песне, играющей на одном из моих устройств, из API Spotify. Я создал представление, которое получает данные из API, и часть его выглядит следующим образом:
class Song(viewsets.ModelViewSets):
....
room_code = request.data['room_code']
room = Room.objects.filter(code=room_code)[0]
host = room.host
endpoint = 'player/currently-playing'
response = execute_spotify_api_request(host, endpoint)
item = response.get('item')
duration = item.get('duration_ms')
progress = response.get('progress_ms')
album_cover = item.get('album').get('images')[0].get('url')
return Response(response, status=status.HTTP_200_OK)
execute_spotify_api_request(host, endpoint)
является функцией полезности и выглядит следующим образом:
def execute_spotify_api_request(session_id, endpoint, post_=False, put_=False):
tokens = get_user_tokens(session_id)
headers = {'Content-Type': 'application/json',
'Authorization': "Bearer " + tokens.access_token}
if post_:
post(BASE_URL + endpoint, headers=headers)
if put_:
post(BASE_URL + endpoint, headers=headers)
response = get(BASE_URL, {}, headers=headers)
try:
return response.json()
except:
return {'error': 'Could not retrieve a response'}
Полный url, с которого я получаю данные, это ""https://api.spotify.com/v1/me/player/currently-playing"
Проблема заключается в ответе, который я получаю от API, ответ - это не ошибка, а данные, которые я не ожидал получить. Я получаю ответ, который выглядит следующим образом:
response = {
"display_name": "Tanatswamanyakara",
"external_urls": {
"spotify": "https://open.spotify.com/user/dlnsysel6bndktbvduz6cl79w"
},
"followers": {
"href": null,
"total": 0
},
"href": "https://api.spotify.com/v1/users/dlnsysel6bndktbvduz6cl79w",
"id": "dlnsysel6bndktbvduz6cl79w",
"images": [],
"type": "user",
"uri": "spotify:user:dlnsysel6bndktbvduz6cl79w"
}
Я надеялся получить данные (прогресс, название, продолжительность, альбом, исполнитель и т.д.) о песне, которую я играю на моем аккаунте spotify, но вместо этого я получаю этот ответ, как мне это исправить?
N.B Мои маркеры доступа и маркеры обновления работают так, как должны. (так я думаю)
Если данные не соответствуют вашим ожиданиям, значит, что-то не так с конечной точкой API. Вы можете использовать консоль разработчика Spotify для генерации ссылки на конечную точку, стоит отладить ваш код execute_spotify_api_request
и генерируемый им url по сравнению со значением в консоли.
Перечитав ваш код в середине ответа, я заметил, что вы не добавляете переменную endpoint
к GET url:
response = get(BASE_URL, {}, headers=headers)
Это означает, что get не имеет 'player/currently-playing'
и просто возвращает базовый URL, который, вероятно, является 'https://api.spotify.com/v1/me/'
- следовательно, полученный вами ответ - это просто данные вашего профиля.