#pragma once #include #include #include #include #include #include #include #include #include namespace ytapi { // Детали видео - необработанные struct video_result { std::string yt_id; // ID на YouTube Glib::ustring title; // Название Glib::ustring description; // Описание std::string duration; // Длительность std::string author_yt_id; // ID автора на YouTube Glib::ustring author_name; // Имя автора на YouTube std::string published_at; // Когда было опубликовано }; // API ключ static std::string api_key; // Записывает ключ API в api_key void youtubeInit(std::string key); // Функция записи данных в std::ostringstream size_t write_http_data(char *ptr, size_t size, size_t nmemb, void *userdata); // Кодирует URL-строку // https://stackoverflow.com/a/154627 std::string urlencode(const std::string& decoded); // Раскодирует URL-строку std::string urldecode(const std::string& encoded); // Получает список YT_ID видео по запросу std::vector getVideoIDsByQuery(std::string query); // Возвращает объект видео, получив данные по API video_result getVideoByYTID(std::string yt_id); // Возвращает список видео id из JSON списка видео std::vector getVideoIDsFromJSON(std::string input); // Подгатавливает, настраивает и выполняет CURL запрос. Возвращает // успешность вызова bool performCurlRequest(std::string url, std::stringstream* response); }