comparison src/services/kitsu.cc @ 388:83aa0ddd1a46

kitsu: implement GetSeason
author Paper <paper@tflc.us>
date Thu, 06 Nov 2025 09:53:06 -0500
parents 04a894e96355
children 1e5d922fe82b
comparison
equal deleted inserted replaced
387:04a894e96355 388:83aa0ddd1a46
573 return ids; 573 return ids;
574 } 574 }
575 575
576 bool GetSeason(Anime::Season season) 576 bool GetSeason(Anime::Season season)
577 { 577 {
578 return false; 578 static const std::map<Anime::Season::Name, std::string> map = {
579 {Anime::Season::Name::Winter, "winter"},
580 {Anime::Season::Name::Spring, "spring"},
581 {Anime::Season::Name::Summer, "summer"},
582 {Anime::Season::Name::Autumn, "fall"},
583 };
584
585 session.SetStatusBar(Strings::Translate("Kitsu: Retrieving season data..."));
586
587 std::map<std::string, std::string> params = anime_params;
588 params["filter[season]"] = map.at(season.season);
589 params["filter[seasonYear]"] = Strings::ToUtf8String(season.year);
590 // ... for some reason, this seems to be buggy
591 //AddAnimeFilters(params);
592
593 std::optional<nlohmann::json> response = SendJSONAPIRequest("/anime", params);
594 if (!response)
595 return false;
596
597 const auto &json = response.value();
598
599 if (!json.contains("/data"_json_pointer) || !json["/data"_json_pointer].is_array()) {
600 session.SetStatusBar(
601 Strings::Translate("Kitsu: Server returned bad data when trying to retrieve search results!"));
602 return false;
603 }
604
605 for (const auto &item : json["/data"_json_pointer])
606 ParseAnimeJson(item);
607
608 return true;
579 } 609 }
580 610
581 int UpdateAnimeEntry(int id) 611 int UpdateAnimeEntry(int id)
582 { 612 {
583 return 0; 613 return 0;