12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- #pragma once
- #include <glibmm/ustring.h>
- #include <string>
- #include <curl/curl.h>
- #include <vector>
- #include <sstream>
- #include <nlohmann/json.hpp>
- #include <Database/entities.hpp>
- #include <Database/database.hpp>
- namespace ytapi {
-
- // Детали видео - необработанные
- 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 самого большого превью
- };
-
- // Функция записи данных в 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 видео по запросу
- std::vector<std::string> getVideoIDsByQuery(std::string query);
- // Возвращает объект видео, получив данные по API
- // ytid - id видео на YouTube
- // key - ключ авторизации
- Video getVideoByYTID(std::string ytid, std::string key);
- // Возвращает список видео id из JSON списка видео
- std::vector<std::string> getVideoIDsFromJSON(std::string input);
- // Подгатавливает, настраивает и выполняет CURL запрос. Возвращает
- // успешность вызова
- // url - адрес запроса
- // key - oAuth ключ клиента
- // 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);
- }
|