Mercurial > minori
comparison src/services/anilist.cpp @ 11:fc1bf97c528b
*: use C++11 standard
I've been meaning to do this for a while, but I didn't want to reimplement
the filesystem code. Now we are on C++11 and most compilers from the past 5 centuries should support this now
author | Paper <mrpapersonic@gmail.com> |
---|---|
date | Sun, 17 Sep 2023 06:14:30 -0400 |
parents | 4b198a111713 |
children | cde8f67a7c7d |
comparison
equal
deleted
inserted
replaced
10:4b198a111713 | 11:fc1bf97c528b |
---|---|
13 #include <chrono> | 13 #include <chrono> |
14 #include <curl/curl.h> | 14 #include <curl/curl.h> |
15 #include <exception> | 15 #include <exception> |
16 #include <format> | 16 #include <format> |
17 #define CLIENT_ID "13706" | 17 #define CLIENT_ID "13706" |
18 | |
19 using nlohmann::literals::operator "" _json_pointer; | |
18 | 20 |
19 namespace Services::AniList { | 21 namespace Services::AniList { |
20 | 22 |
21 class Account { | 23 class Account { |
22 public: | 24 public: |
117 {"ONE_SHOT", Anime::SeriesFormat::ONE_SHOT} | 119 {"ONE_SHOT", Anime::SeriesFormat::ONE_SHOT} |
118 }; | 120 }; |
119 | 121 |
120 Date ParseDate(const nlohmann::json& json) { | 122 Date ParseDate(const nlohmann::json& json) { |
121 Date date; | 123 Date date; |
122 if (json.contains("/year"_json_pointer) && json["/year"_json_pointer].is_number()) | 124 if (json.contains("/year"_json_pointer) && json.at("/year"_json_pointer).is_number()) |
123 date.SetYear(JSON::GetInt(json, "/year"_json_pointer)); | 125 date.SetYear(JSON::GetInt(json, "/year"_json_pointer)); |
124 else | 126 else |
125 date.VoidYear(); | 127 date.VoidYear(); |
126 | 128 |
127 if (json.contains("/month"_json_pointer) && json["/month"_json_pointer].is_number()) | 129 if (json.contains("/month"_json_pointer) && json.at("/month"_json_pointer).is_number()) |
128 date.SetMonth(JSON::GetInt(json, "/month"_json_pointer)); | 130 date.SetMonth(JSON::GetInt(json, "/month"_json_pointer)); |
129 else | 131 else |
130 date.VoidMonth(); | 132 date.VoidMonth(); |
131 | 133 |
132 if (json.contains("/day"_json_pointer) && json["/day"_json_pointer].is_number()) | 134 if (json.contains("/day"_json_pointer) && json.at("/day"_json_pointer).is_number()) |
133 date.SetDay(JSON::GetInt(json, "/day"_json_pointer)); | 135 date.SetDay(JSON::GetInt(json, "/day"_json_pointer)); |
134 else | 136 else |
135 date.VoidDay(); | 137 date.VoidDay(); |
136 return date; | 138 return date; |
137 } | 139 } |
147 if (!id) | 149 if (!id) |
148 return 0; | 150 return 0; |
149 Anime::Anime& anime = Anime::db.items[id]; | 151 Anime::Anime& anime = Anime::db.items[id]; |
150 anime.SetId(id); | 152 anime.SetId(id); |
151 | 153 |
152 ParseTitle(json["/title"_json_pointer], anime); | 154 ParseTitle(json.at("/title"_json_pointer), anime); |
153 | 155 |
154 anime.SetEpisodes(JSON::GetInt(json, "/episodes"_json_pointer)); | 156 anime.SetEpisodes(JSON::GetInt(json, "/episodes"_json_pointer)); |
155 anime.SetFormat(AniListStringToAnimeFormatMap[JSON::GetString(json, "/format"_json_pointer)]); | 157 anime.SetFormat(AniListStringToAnimeFormatMap[JSON::GetString(json, "/format"_json_pointer)]); |
156 | 158 |
157 anime.SetAiringStatus(AniListStringToAnimeAiringMap[JSON::GetString(json, "/status"_json_pointer)]); | 159 anime.SetAiringStatus(AniListStringToAnimeAiringMap[JSON::GetString(json, "/status"_json_pointer)]); |