#pragma once #include #include #include #include #include #include #include #include namespace ytapi { // Перечисление статусов ответов которые могут произойти в библиотеке enum class Status { OK, // Запрос успешен NET_ERROR, // Ошибка подключения APIKEY_INVALID // Неверный API ключ }; // Детали видео - необработанные struct Video { 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; // Когда было опубликовано int views_count; // Количество просмотров int rating; // Моя оценка видео std::string big_thumbnail; // URL самого большого превью }; // Ответ поиска видео по запросу struct SearchResults { Status status; // Статус ответа std::vector ytids; // Вектор из YTID видео по запросу }; // Функция записи данных в std::ostringstream size_t writeHttpToString(char* ptr, size_t size, size_t nmemb, void *userdata); // Функция записи данных в файл на диске size_t writeHttpToFile(void* ptr, size_t size, size_t nmemb, FILE* userdata); // Кодирует URL-строку // https://stackoverflow.com/a/154627 std::string urlencode(const std::string& decoded); // Раскодирует URL-строку std::string urldecode(const std::string& encoded); // Получает список YT_ID видео по запросу // query - запрос // key - ключ api SearchResults getVideoIDsByQuery(std::string query, std::string key); // Возвращает объект видео, получив данные по API // ytid - id видео на YouTube // key - ключ api Video getVideoByYTID(std::string ytid, std::string key); // Подгатавливает, настраивает и выполняет CURL запрос. Возвращает // успешность вызова // url - адрес запроса // key - ключ api // response - указатель на строковый поток, в который записывается ответ // запроса bool performCurlRequest( std::string url, std::string key, std::stringstream* response); // Подгатавливает, настраивает и выполняет CURL запрос на скачивание файла // Файл сохранится в save_path bool performCurlRequest(std::string url, std::string save_path); // Скачивает превью видео и сохраняет в путь save_path void downloadMediumThumnail(std::string yt_id, std::string save_path); // Скачивает большое превью видео и сохраняет в путь save_path void downloadLargeThumnail(std::string yt_id, std::string save_path); // Скачивает файл превью и сохраняет его // url: ссылка на превью // save_path: путь сохранения на диске void downloadThumbnail(std::string url, std::string save_path); // Устанавливает оценку видео // ytid - видео с каким ytid ставится оценка // rating - оценка видео (0 - нет, 1 - лайк, 2 - дизлайк) // secret - ключ пользователя //void setVideoRating(std::string ytid, int rating, std::string secret); }