Mercurial > minori
comparison src/services/anilist.cc @ 286:53e3c015a973
anime: initial cross-service support
currently the Kitsu and MAL services don't work when chosen in the
GUI. This is because they haven't been implemented yet :)
author | Paper <paper@paper.us.eu.org> |
---|---|
date | Wed, 08 May 2024 16:44:27 -0400 |
parents | e66ffc338d82 |
children | 9a88e1725fd2 |
comparison
equal
deleted
inserted
replaced
285:65df2813d0de | 286:53e3c015a973 |
---|---|
24 using namespace nlohmann::literals::json_literals; | 24 using namespace nlohmann::literals::json_literals; |
25 | 25 |
26 namespace Services { | 26 namespace Services { |
27 namespace AniList { | 27 namespace AniList { |
28 | 28 |
29 constexpr int CLIENT_ID = 13706; | 29 static constexpr int CLIENT_ID = 13706; |
30 | 30 |
31 class Account { | 31 class Account { |
32 public: | 32 public: |
33 int UserId() const { return session.config.auth.anilist.user_id; } | 33 int UserId() const { return session.config.auth.anilist.user_id; } |
34 void SetUserId(const int id) { session.config.auth.anilist.user_id = id; } | 34 void SetUserId(const int id) { session.config.auth.anilist.user_id = id; } |
35 | 35 |
36 std::string AuthToken() const { return session.config.auth.anilist.auth_token; } | 36 std::string AuthToken() const { return session.config.auth.anilist.auth_token; } |
37 void SetAuthToken(std::string const& auth_token) { session.config.auth.anilist.auth_token = auth_token; } | 37 void SetAuthToken(const std::string& auth_token) { session.config.auth.anilist.auth_token = auth_token; } |
38 | 38 |
39 bool Authenticated() const { return !AuthToken().empty(); } | 39 bool Authenticated() const { return !AuthToken().empty(); } |
40 bool IsValid() const { return UserId() && Authenticated(); } | 40 bool IsValid() const { return UserId() && Authenticated(); } |
41 }; | 41 }; |
42 | 42 |
128 if (!id) | 128 if (!id) |
129 return 0; | 129 return 0; |
130 | 130 |
131 Anime::Anime& anime = Anime::db.items[id]; | 131 Anime::Anime& anime = Anime::db.items[id]; |
132 anime.SetId(id); | 132 anime.SetId(id); |
133 anime.SetServiceId(Anime::Service::AniList, Strings::ToUtf8String(id)); | |
134 anime.SetServiceId(Anime::Service::MyAnimeList, Strings::ToUtf8String(JSON::GetNumber(json, "/id_mal"_json_pointer))); | |
133 | 135 |
134 ParseTitle(json.at("/title"_json_pointer), anime); | 136 ParseTitle(json.at("/title"_json_pointer), anime); |
135 | 137 |
136 anime.SetEpisodes(JSON::GetNumber(json, "/episodes"_json_pointer, 0)); | 138 anime.SetEpisodes(JSON::GetNumber(json, "/episodes"_json_pointer, 0)); |
137 anime.SetFormat(Translate::AniList::ToSeriesFormat(JSON::GetString<std::string>(json, "/format"_json_pointer, ""))); | 139 anime.SetFormat(Translate::AniList::ToSeriesFormat(JSON::GetString<std::string>(json, "/format"_json_pointer, ""))); |
264 " media (search: $search, type: ANIME) {\n" | 266 " media (search: $search, type: ANIME) {\n" |
265 " coverImage {\n" | 267 " coverImage {\n" |
266 " large\n" | 268 " large\n" |
267 " }\n" | 269 " }\n" |
268 " id\n" | 270 " id\n" |
271 " id_mal\n" | |
269 " title {\n" | 272 " title {\n" |
270 " romaji\n" | 273 " romaji\n" |
271 " english\n" | 274 " english\n" |
272 " native\n" | 275 " native\n" |
273 " }\n" | 276 " }\n" |