void CLogitechMediaServer::GetPlayerInfo() { try { std::string sPostdata = "{\"id\":1,\"method\":\"slim.request\",\"params\":[\"\",[\"serverstatus\",0,999]]}"; Json::Value root = Query(m_IP, m_Port, sPostdata); bool bSHowedWarning = false; int totPlayers = root["player count"].asInt(); for (int ii = 0; ii < totPlayers; ii++) { if (root["players_loop"][ii]["name"].empty()) continue; int isplayer = root["players_loop"][ii]["isplayer"].asInt(); std::string name = root["players_loop"][ii]["name"].asString(); std::string model = root["players_loop"][ii]["model"].asString(); std::string ipport = root["players_loop"][ii]["ip"].asString(); std::string macaddress = root["players_loop"][ii]["playerid"].asString(); std::vector<std::string> IPPort; StringSplit(ipport, ":", IPPort); if (IPPort.size() < 2) continue; //invalid ip:port std::string ip = IPPort[0]; int port = atoi(IPPort[1].c_str()); if ( //(model == "slimp3") || //SliMP3 (model == "Squeezebox") || //Squeezebox 1 (model == "squeezebox2") || //Squeezebox 2 (model == "squeezebox3") || //Squeezebox 3 //(model == "transporter") || //Transporter (model == "receiver") || //Squeezebox Receiver (model == "boom") || //Squeezebox Boom //(model == "softsqueeze") || //Softsqueeze (model == "controller") || //Squeezebox Controller (model == "squeezeplay") || //SqueezePlay (model == "baby") || //Squeezebox Radio (model == "fab4") || //Squeezebox Touch //(model == "iPengiPod") || //iPeng iOS App (model == "squeezelite") //Max2Play SqueezePlug ) { InsertUpdatePlayer(name, ip, macaddress); } else { //show only once if (!m_bShowedUnsupported) { _log.Log(LOG_ERROR, "Logitech Media Server: model '%s' not supported.", model.c_str()); bSHowedWarning = true; } } } if (!m_bShowedUnsupported) m_bShowedUnsupported = bSHowedWarning; } catch (...) { } }
void CLogitechMediaServer::GetPlayerInfo() { try { std::string sPostdata = "{\"id\":1,\"method\":\"slim.request\",\"params\":[\"\",[\"serverstatus\",0,999]]}"; Json::Value root = Query(m_IP, m_Port, sPostdata); if (root.isNull()) { m_iMissedQueries++; if (m_iMissedQueries % 3 == 0) { _log.Log(LOG_ERROR, "Logitech Media Server: No response from server %s:%i", m_IP.c_str(), m_Port); } } else { SetHeartbeatReceived(); m_iMissedQueries = 0; int totPlayers = root["player count"].asInt(); if (totPlayers > 0) { if (!m_bShowedStartupMessage) _log.Log(LOG_STATUS, "Logitech Media Server: %i connected player(s) found.", totPlayers); for (int ii = 0; ii < totPlayers; ii++) { if (root["players_loop"][ii]["name"].empty()) continue; //int isplayer = root["players_loop"][ii]["isplayer"].asInt(); std::string name = root["players_loop"][ii]["name"].asString(); std::string model = root["players_loop"][ii]["model"].asString(); std::string ipport = root["players_loop"][ii]["ip"].asString(); std::string macaddress = root["players_loop"][ii]["playerid"].asString(); std::vector<std::string> IPPort; StringSplit(ipport, ":", IPPort); if (IPPort.size() < 2) continue; //invalid ip:port std::string ip = IPPort[0]; //int port = atoi(IPPort[1].c_str()); if ( //(model == "slimp3") || //SliMP3 (model == "Squeezebox") || //Squeezebox 1 (model == "squeezebox2") || //Squeezebox 2 (model == "squeezebox3") || //Squeezebox 3 (model == "transporter") || //Transporter (model == "receiver") || //Squeezebox Receiver (model == "boom") || //Squeezebox Boom //(model == "softsqueeze") || //Softsqueeze (model == "controller") || //Squeezebox Controller (model == "squeezeplay") || //SqueezePlay (model == "squeezeplayer") || //SqueezePlay (model == "baby") || //Squeezebox Radio (model == "fab4") || //Squeezebox Touch (model == "iPengiPod") || //iPeng iPhone App (model == "iPengiPad") || //iPeng iPad App (model == "squeezelite") //Max2Play SqueezePlug ) { InsertUpdatePlayer(name, ip, macaddress); } else { if (!m_bShowedStartupMessage) _log.Log(LOG_ERROR, "Logitech Media Server: model '%s' not supported.", model.c_str()); } } } else { if (!m_bShowedStartupMessage) _log.Log(LOG_ERROR, "Logitech Media Server: No connected players found."); } m_bShowedStartupMessage = true; } } catch (...) { } }