Mercurial > minori
comparison src/services/anilist.cpp @ 64:fe719c109dbc
*: update
1. add media tracking ability, and it displays info on the `now playing` page
2. the `now playing` page now actually shows something
3. renamed every page class to be more accurate to what it is
4. ...
| author | Paper <mrpapersonic@gmail.com> | 
|---|---|
| date | Sun, 01 Oct 2023 23:15:43 -0400 | 
| parents | 3d2decf093bb | 
| children | 26721c28bf22 | 
   comparison
  equal
  deleted
  inserted
  replaced
| 63:3d2decf093bb | 64:fe719c109dbc | 
|---|---|
| 4 #include "core/config.h" | 4 #include "core/config.h" | 
| 5 #include "core/json.h" | 5 #include "core/json.h" | 
| 6 #include "core/session.h" | 6 #include "core/session.h" | 
| 7 #include "core/strings.h" | 7 #include "core/strings.h" | 
| 8 #include "gui/translate/anilist.h" | 8 #include "gui/translate/anilist.h" | 
| 9 #include <QDebug> | |
| 10 #include <QDesktopServices> | 9 #include <QDesktopServices> | 
| 11 #include <QInputDialog> | 10 #include <QInputDialog> | 
| 12 #include <QLineEdit> | 11 #include <QLineEdit> | 
| 13 #include <QMessageBox> | 12 #include <QMessageBox> | 
| 14 #include <QUrl> | 13 #include <QUrl> | 
| 15 #include <chrono> | 14 #include <chrono> | 
| 16 #include <curl/curl.h> | 15 #include <curl/curl.h> | 
| 17 #include <exception> | 16 #include <exception> | 
| 18 #define CLIENT_ID "13706" | 17 #define CLIENT_ID "13706" | 
| 19 | 18 | 
| 20 using nlohmann::literals::operator"" _json_pointer; | 19 using namespace nlohmann::literals::json_literals; | 
| 21 | 20 | 
| 22 namespace Services { | 21 namespace Services { | 
| 23 namespace AniList { | 22 namespace AniList { | 
| 24 | 23 | 
| 25 class Account { | 24 class Account { | 
| 37 }; | 36 }; | 
| 38 | 37 | 
| 39 static Account account; | 38 static Account account; | 
| 40 | 39 | 
| 41 static size_t CurlWriteCallback(void* contents, size_t size, size_t nmemb, void* userdata) { | 40 static size_t CurlWriteCallback(void* contents, size_t size, size_t nmemb, void* userdata) { | 
| 42 ((std::string*)userdata)->append((char*)contents, size * nmemb); | 41 reinterpret_cast<std::string*>(userdata)->append(reinterpret_cast<char*>(contents), size * nmemb); | 
| 43 return size * nmemb; | 42 return size * nmemb; | 
| 44 } | 43 } | 
| 45 | 44 | 
| 46 /* A wrapper around cURL to send requests to AniList */ | 45 /* A wrapper around cURL to send requests to AniList */ | 
| 47 std::string SendRequest(std::string data) { | 46 std::string SendRequest(std::string data) { | 
| 115 return map[anime.GetUserStatus()]; | 114 return map[anime.GetUserStatus()]; | 
| 116 } | 115 } | 
| 117 | 116 | 
| 118 Date ParseDate(const nlohmann::json& json) { | 117 Date ParseDate(const nlohmann::json& json) { | 
| 119 Date date; | 118 Date date; | 
| 119 /* JSON for Modern C++ warns here. I'm not too sure why, this code works when I set the | |
| 120 standard to C++17 :/ */ | |
| 120 if (json.contains("/year"_json_pointer) && json.at("/year"_json_pointer).is_number()) | 121 if (json.contains("/year"_json_pointer) && json.at("/year"_json_pointer).is_number()) | 
| 121 date.SetYear(JSON::GetInt(json, "/year"_json_pointer)); | 122 date.SetYear(JSON::GetInt(json, "/year"_json_pointer)); | 
| 122 else | 123 else | 
| 123 date.VoidYear(); | 124 date.VoidYear(); | 
| 124 | 125 | 
