# HG changeset patch # User Paper # Date 1762440786 18000 # Node ID 83aa0ddd1a46f839acb269f54d9b0fcfe0676e75 # Parent 04a894e9635544fcb46a95f0c371bf98eff5629d kitsu: implement GetSeason diff -r 04a894e96355 -r 83aa0ddd1a46 src/services/kitsu.cc --- 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 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 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 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)