Mercurial > minori
comparison src/services/anilist.cc @ 250:c130f47f6f48
*: many many changes
e.g. the search page is actually implemented now!
| author | Paper <paper@paper.us.eu.org> |
|---|---|
| date | Sun, 04 Feb 2024 21:17:17 -0500 |
| parents | d030b30526d5 |
| children | 862d0d8619f6 |
comparison
equal
deleted
inserted
replaced
| 249:6b2441c776dd | 250:c130f47f6f48 |
|---|---|
| 242 ParseList(list.value()); | 242 ParseList(list.value()); |
| 243 } | 243 } |
| 244 return 1; | 244 return 1; |
| 245 } | 245 } |
| 246 | 246 |
| 247 /* return is a vector of anime ids */ | |
| 248 std::vector<int> Search(const std::string& search) { | |
| 249 constexpr std::string_view query = | |
| 250 "query ($search: String) {\n" | |
| 251 " Page (page: 1, perPage: 50) {\n" | |
| 252 " media (search: $search, type: ANIME) {\n" | |
| 253 " coverImage {\n" | |
| 254 " large\n" | |
| 255 " }\n" | |
| 256 " id\n" | |
| 257 " title {\n" | |
| 258 " romaji\n" | |
| 259 " english\n" | |
| 260 " native\n" | |
| 261 " }\n" | |
| 262 " format\n" | |
| 263 " status\n" | |
| 264 " averageScore\n" | |
| 265 " season\n" | |
| 266 " startDate {\n" | |
| 267 " year\n" | |
| 268 " month\n" | |
| 269 " day\n" | |
| 270 " }\n" | |
| 271 " genres\n" | |
| 272 " episodes\n" | |
| 273 " duration\n" | |
| 274 " synonyms\n" | |
| 275 " description(asHtml: false)\n" | |
| 276 " }\n" | |
| 277 " }\n" | |
| 278 "}\n"; | |
| 279 | |
| 280 // clang-format off | |
| 281 nlohmann::json json = { | |
| 282 {"query", query}, | |
| 283 {"variables", { | |
| 284 {"search", search} | |
| 285 }} | |
| 286 }; | |
| 287 // clang-format on | |
| 288 | |
| 289 auto res = SendJSONRequest(json); | |
| 290 | |
| 291 std::vector<int> ret; | |
| 292 ret.reserve(res["data"]["Page"]["media"].size()); | |
| 293 | |
| 294 for (const auto& media : res["data"]["Page"]["media"].items()) | |
| 295 ret.push_back(ParseMediaJson(media.value())); | |
| 296 | |
| 297 return ret; | |
| 298 } | |
| 299 | |
| 247 int UpdateAnimeEntry(int id) { | 300 int UpdateAnimeEntry(int id) { |
| 248 /** | 301 /** |
| 249 * possible values: | 302 * possible values: |
| 250 * | 303 * |
| 251 * int mediaId, | 304 * int mediaId, |
| 261 * bool hiddenFromStatusLists, | 314 * bool hiddenFromStatusLists, |
| 262 * string[] customLists, | 315 * string[] customLists, |
| 263 * float[] advancedScores, | 316 * float[] advancedScores, |
| 264 * Date startedAt, | 317 * Date startedAt, |
| 265 * Date completedAt | 318 * Date completedAt |
| 266 **/ | 319 **/ |
| 267 Anime::Anime& anime = Anime::db.items[id]; | 320 Anime::Anime& anime = Anime::db.items[id]; |
| 268 if (!anime.IsInUserList()) | 321 if (!anime.IsInUserList()) |
| 269 return 0; | 322 return 0; |
| 270 | 323 |
| 271 constexpr std::string_view query = "mutation ($media_id: Int, $progress: Int, $status: MediaListStatus, $score: Int, " | 324 constexpr std::string_view query = |
| 272 "$notes: String, $start: FuzzyDateInput, $comp: FuzzyDateInput, $repeat: Int) {\n" | 325 "mutation ($media_id: Int, $progress: Int, $status: MediaListStatus, $score: Int, $notes: String, $start: FuzzyDateInput, $comp: FuzzyDateInput, $repeat: Int) {\n" |
| 273 " SaveMediaListEntry (mediaId: $media_id, progress: $progress, status: $status, " | 326 " SaveMediaListEntry (mediaId: $media_id, progress: $progress, status: $status, scoreRaw: $score, notes: $notes, startedAt: $start, completedAt: $comp, repeat: $repeat) {\n" |
| 274 "scoreRaw: $score, notes: $notes, startedAt: $start, completedAt: $comp, repeat: $repeat) {\n" | 327 " id\n" |
| 275 " id\n" | 328 " }\n" |
| 276 " }\n" | 329 "}\n"; |
| 277 "}\n"; | |
| 278 // clang-format off | 330 // clang-format off |
| 279 nlohmann::json json = { | 331 nlohmann::json json = { |
| 280 {"query", query}, | 332 {"query", query}, |
| 281 {"variables", { | 333 {"variables", { |
| 282 {"media_id", anime.GetId()}, | 334 {"media_id", anime.GetId()}, |
