Mercurial > minori
changeset 388:83aa0ddd1a46
kitsu: implement GetSeason
| author | Paper <paper@tflc.us> |
|---|---|
| date | Thu, 06 Nov 2025 09:53:06 -0500 |
| parents | 04a894e96355 |
| children | 1e5d922fe82b |
| files | src/services/kitsu.cc |
| diffstat | 1 files changed, 31 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/services/kitsu.cc Thu Nov 06 09:46:09 2025 -0500 +++ b/src/services/kitsu.cc Thu Nov 06 09:53:06 2025 -0500 @@ -575,7 +575,37 @@ bool GetSeason(Anime::Season season) { - return false; + static const std::map<Anime::Season::Name, std::string> map = { + {Anime::Season::Name::Winter, "winter"}, + {Anime::Season::Name::Spring, "spring"}, + {Anime::Season::Name::Summer, "summer"}, + {Anime::Season::Name::Autumn, "fall"}, + }; + + session.SetStatusBar(Strings::Translate("Kitsu: Retrieving season data...")); + + std::map<std::string, std::string> params = anime_params; + params["filter[season]"] = map.at(season.season); + params["filter[seasonYear]"] = Strings::ToUtf8String(season.year); + // ... for some reason, this seems to be buggy + //AddAnimeFilters(params); + + std::optional<nlohmann::json> response = SendJSONAPIRequest("/anime", params); + if (!response) + return false; + + const auto &json = response.value(); + + if (!json.contains("/data"_json_pointer) || !json["/data"_json_pointer].is_array()) { + session.SetStatusBar( + Strings::Translate("Kitsu: Server returned bad data when trying to retrieve search results!")); + return false; + } + + for (const auto &item : json["/data"_json_pointer]) + ParseAnimeJson(item); + + return true; } int UpdateAnimeEntry(int id)
