Я попытался создать простое приложение, которое будет подключаться к Deezer и воспроизводить одну песню. Я получил токен доступа и написал эту программу.
Целевая машина: linux x86_64
Версия API: v1.0.1
#include <iostream>
#include <deezer-api.h>
#include <deezer-player.h>
#define ACCESS_TOKEN "ACCESS TOKEN HERE"
int main(int argc, char **argv)
{
dz_connect_configuration cfg = {0};
cfg.app_id = "APP ID HERE";
cfg.product_id = "product_id";
cfg.product_build_id = "0.0.0";
dz_connect_handle dz_handle = dz_connect_new(&cfg);
if (dz_handle == nullptr)
{
return 100;
}
auto err_code = dz_connect_activate(dz_handle, nullptr);
if (err_code > DZ_ERROR_NO_ERROR_ASYNC)
{
return err_code;
}
err_code = dz_connect_set_access_token(dz_handle, nullptr, nullptr, ACCESS_TOKEN);
if (err_code > DZ_ERROR_NO_ERROR_ASYNC)
{
return err_code;
}
auto dz_player_handle = dz_player_new(dz_handle);
if (dz_player_handle == nullptr)
{
return 200;
}
err_code = dz_player_activate(dz_player_handle, nullptr);
if (err_code > DZ_ERROR_NO_ERROR_ASYNC)
{
return err_code;
}
err_code = dz_player_load(dz_player_handle, nullptr, nullptr, "dzmedia:///track/3135556");
if (err_code > DZ_ERROR_NO_ERROR_ASYNC)
{
return err_code;
}
err_code = dz_player_play(dz_player_handle, nullptr, nullptr, DZ_PLAYER_PLAY_CMD_START_TRACKLIST, DZ_TRACKLIST_AUTOPLAY_MANUAL, DZ_INDEX_IN_PLAYLIST_CURRENT);
if (err_code > DZ_ERROR_NO_ERROR_ASYNC)
{
return err_code;
}
std::cin.get();
return 0;
}
Внезапно я столкнулся с проблемами. Первый запуск показывает мне этот вывод:
398748:201417 dz_bufferevent: [dz_bufferevent_on_activation:561] не удалось открыть /var/tmp/settings.dat
Я создал этот файл, но подозреваю, что он не должен быть пустым. После второго запуска с созданным файлом /var/tmp/settings.dat я получил следующий вывод:
[399206:328658 dz_crash_handler: [dz_crash_handler_init:284] Доступен обработчик сбоев
DZ_CRASHREPORT_SERVER_URL_ON_READ_DATA: 436] Ошибка-Открыть сбой ошибки: 7
399206: 329590 DZCRASHREPORT-SERVER-DISK: [DZ_CRASHREPORT_SERVER_URL_ON_READ_DATA: 436] Ошибка-Открыть ошибку: 7
39206: 32966. 436] ОШИБКА — Ошибка при открытии: 7
399206:329726 не удалось прочитать URL-сервер, ошибка: 0
399206:336505 pulseaudio-engine: [dz_audioengine_set_output_gain:1184] not init
399206:336520 pulseaudio-engine: [dz_audioengine_set_output_gain:1184] not init
399206:336577 игрок: [dz_player_play_licence:1756] неизвестная ошибка 131079
Я не могу понять, что я сделал не так?
ОБНОВЛЕНИЕ:
Собственный API Deezer: v1.0.1-v00349200
Все равно не повезло. Пробовал разные варианты "user_profile_path"
:
- .
- ./
- ./user - создан в рабочем каталоге с правами 777
- /вар/темп
В папке, созданной API, не было файлов.
Еще есть ошибки:
[dz_crashreport_server_url_on_read_data:436] ОШИБКА – Ошибка при открытии: 7
[dz_crash_report_sender_retrive_server_url_on_result:213] Ошибка – не удалось прочитать URL-адрес сервера, ошибка: 0
После добавления реализации обратных вызовов я вижу это:
dz_connect_set_access_token
вызывает обратный вызовdz_activity_operation_callback
со статусомDZ_ERROR_CONNECT_SESSION_OFFLINE_MODE
dz_player_play
вызывает обратный вызовdz_player_onevent_cb
с событиемDZ_PLAYER_EVENT_PLAYLIST_TRACK_NO_RIGHT
Что ж, я проверил, что у меня есть права на воспроизведение этого трека.