Энпоинт 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/' - следовательно, полученный вами ответ - это просто данные вашего профиля.

Вернуться на верх