diff --git a/src/panel/plex.cpp b/src/panel/plex.cpp index e25a180..a3b9e5d 100644 --- a/src/panel/plex.cpp +++ b/src/panel/plex.cpp @@ -109,11 +109,25 @@ void plex::update(){ json_string.clear(); + //make request for top users + curl_easy_setopt(api_curl, CURLOPT_URL, PLEX_URL_SOURCE_TOP_USERS); + curl_easy_perform(api_curl); + json_doc.Parse(json_string.c_str()); + + curr_entry = json_doc["response"]["data"]["categories"]; + + for(rapidjson::SizeType i = 0; i < curr_entry.Size(); i++){ + top_users[i] = truncate(curr_entry[i].GetString(), PLEX_MAX_STRING_LENGTH); + } + + json_string.clear(); + + //make request for friendly server name curl_easy_setopt(api_curl, CURLOPT_URL, PLEX_URL_SOURCE_NAME); curl_easy_perform(api_curl); - json_doc.Parse(json_string.c_str()); + friendly_name = truncate(json_doc["response"]["data"].GetString(), PLEX_MAX_STRING_LENGTH - 10); json_string.clear(); @@ -359,6 +373,26 @@ void plex::update_texture(){ board::getString(total_duration, {"Roboto_Mono/RobotoMono-Medium.ttf", 28}), NULL, &tgt); + + //draw the top users + tgt.y += tgt.h; + TTF_SizeText(board::getFont( {"Roboto_Mono/RobotoMono-Medium.ttf", 50} ), + "Top Users", + &tgt.w, &tgt.h); + SDL_RenderCopy(board::getRenderer(), + board::getString("Top Users", + {"Roboto_Mono/RobotoMono-Medium.ttf", 50}), + NULL, &tgt); + for(unsigned short i = 0; i < top_users.size(); ++i){ + tgt.y += tgt.h; + TTF_SizeText(board::getFont( {"Roboto_Mono/RobotoMono-Medium.ttf", 28} ), + top_users[i].c_str(), + &tgt.w, &tgt.h); + SDL_RenderCopy(board::getRenderer(), + board::getString(top_users[i], + {"Roboto_Mono/RobotoMono-Medium.ttf", 28}), + NULL, &tgt); + } } diff --git a/src/panel/plex.hpp b/src/panel/plex.hpp index b5a8c5f..1755da4 100644 --- a/src/panel/plex.hpp +++ b/src/panel/plex.hpp @@ -48,6 +48,7 @@ namespace dashboard::panel { }; std::array entries; + std::array top_users; std::string total_plays; std::string total_duration; std::string friendly_name; diff --git a/src/panel/plex_config.hpp b/src/panel/plex_config.hpp index a0f8e41..4e73c8e 100644 --- a/src/panel/plex_config.hpp +++ b/src/panel/plex_config.hpp @@ -16,6 +16,7 @@ namespace dashboard::panel { //Tautili endpoint constexpr char PLEX_URL_SOURCE_HISTORY[] = "http://192.168.1.104:8181/api/v2?apikey=64af06e0497342f7a5862462ddbbd309&cmd=get_history&length=5"; constexpr char PLEX_URL_SOURCE_NAME[] = "http://192.168.1.104:8181/api/v2?apikey=64af06e0497342f7a5862462ddbbd309&cmd=get_server_friendly_name"; + constexpr char PLEX_URL_SOURCE_TOP_USERS[] = "http://192.168.1.104:8181/api/v2?apikey=64af06e0497342f7a5862462ddbbd309&cmd=get_plays_by_top_10_users"; //How many characters of a show title should we show? constexpr size_t PLEX_MAX_STRING_LENGTH = 35;