Mercurial > minori
comparison src/anilist.cpp @ 7:07a9095eaeed
Update
Refactored some code, moved some around
| author | Paper <mrpapersonic@gmail.com> |
|---|---|
| date | Thu, 24 Aug 2023 23:11:38 -0400 |
| parents | 1d82f6e04d7d |
| children |
comparison
equal
deleted
inserted
replaced
| 6:1d82f6e04d7d | 7:07a9095eaeed |
|---|---|
| 1 #include "window.h" | 1 #include <QMessageBox> |
| 2 #include "json.h" | 2 #include <QDesktopServices> |
| 3 #include <QInputDialog> | |
| 4 #include <QLineEdit> | |
| 3 #include <curl/curl.h> | 5 #include <curl/curl.h> |
| 4 #include <chrono> | 6 #include <chrono> |
| 5 #include <exception> | 7 #include <exception> |
| 6 #include <format> | 8 #include <format> |
| 9 #include "json.h" | |
| 7 #include "anilist.h" | 10 #include "anilist.h" |
| 8 #include "anime.h" | 11 #include "anime.h" |
| 9 #include "config.h" | 12 #include "config.h" |
| 10 #include "string_utils.h" | 13 #include "string_utils.h" |
| 14 #include "session.h" | |
| 11 #define CLIENT_ID "13706" | 15 #define CLIENT_ID "13706" |
| 16 | |
| 17 CURL* AniList::curl = NULL; | |
| 18 CURLcode AniList::res = (CURLcode)0; | |
| 12 | 19 |
| 13 size_t AniList::CurlWriteCallback(void *contents, size_t size, size_t nmemb, void *userdata) { | 20 size_t AniList::CurlWriteCallback(void *contents, size_t size, size_t nmemb, void *userdata) { |
| 14 ((std::string*)userdata)->append((char*)contents, size * nmemb); | 21 ((std::string*)userdata)->append((char*)contents, size * nmemb); |
| 15 return size * nmemb; | 22 return size * nmemb; |
| 16 } | 23 } |
| 188 anime.updated = JSON::GetInt(entry.value(), "/updatedAt"_json_pointer); | 195 anime.updated = JSON::GetInt(entry.value(), "/updatedAt"_json_pointer); |
| 189 | 196 |
| 190 anime.title.native = JSON::GetString(entry.value(), "/media/title/native"_json_pointer); | 197 anime.title.native = JSON::GetString(entry.value(), "/media/title/native"_json_pointer); |
| 191 anime.title.english = JSON::GetString(entry.value(), "/media/title/english"_json_pointer); | 198 anime.title.english = JSON::GetString(entry.value(), "/media/title/english"_json_pointer); |
| 192 anime.title.romaji = JSON::GetString(entry.value(), "/media/title/romaji"_json_pointer); | 199 anime.title.romaji = JSON::GetString(entry.value(), "/media/title/romaji"_json_pointer); |
| 193 /* fallback to romaji if english is not available | |
| 194 note that this takes up more space in memory and is stinky */ | |
| 195 if (anime.title.english.empty()) | |
| 196 anime.title.english = anime.title.romaji; | |
| 197 | 200 |
| 198 anime.id = JSON::GetInt(entry.value(), "/media/id"_json_pointer); | 201 anime.id = JSON::GetInt(entry.value(), "/media/id"_json_pointer); |
| 199 anime.episodes = JSON::GetInt(entry.value(), "/media/episodes"_json_pointer); | 202 anime.episodes = JSON::GetInt(entry.value(), "/media/episodes"_json_pointer); |
| 200 anime.type = StringToAnimeFormatMap[JSON::GetString(entry.value()["media"], "/media/format"_json_pointer)]; | 203 anime.type = StringToAnimeFormatMap[JSON::GetString(entry.value()["media"], "/media/format"_json_pointer)]; |
| 201 | 204 |
| 208 anime.audience_score = JSON::GetInt(entry.value(), "/media/averageScore"_json_pointer); | 211 anime.audience_score = JSON::GetInt(entry.value(), "/media/averageScore"_json_pointer); |
| 209 anime.season = StringToAnimeSeasonMap[JSON::GetString(entry.value(), "/media/season"_json_pointer)]; | 212 anime.season = StringToAnimeSeasonMap[JSON::GetString(entry.value(), "/media/season"_json_pointer)]; |
| 210 anime.duration = JSON::GetInt(entry.value(), "/media/duration"_json_pointer); | 213 anime.duration = JSON::GetInt(entry.value(), "/media/duration"_json_pointer); |
| 211 anime.synopsis = StringUtils::TextifySynopsis(JSON::GetString(entry.value(), "/media/description"_json_pointer)); | 214 anime.synopsis = StringUtils::TextifySynopsis(JSON::GetString(entry.value(), "/media/description"_json_pointer)); |
| 212 | 215 |
| 213 if (entry.value()["media"]["genres"].is_array()) | 216 if (entry.value().contains("/media/genres"_json_pointer) && entry.value()["/media/genres"_json_pointer].is_array()) |
| 214 anime.genres = entry.value()["media"]["genres"].get<std::vector<std::string>>(); | 217 anime.genres = entry.value()["/media/genres"_json_pointer].get<std::vector<std::string>>(); |
| 218 if (entry.value().contains("/media/synonyms"_json_pointer) && entry.value()["/media/synonyms"_json_pointer].is_array()) | |
| 219 anime.synonyms = entry.value()["/media/synonyms"_json_pointer].get<std::vector<std::string>>(); | |
| 215 anime_list.Add(anime); | 220 anime_list.Add(anime); |
| 216 } | 221 } |
| 217 anime_lists->push_back(anime_list); | 222 anime_lists->push_back(anime_list); |
| 218 } | 223 } |
| 219 return 1; | 224 return 1; |
