public void HandleResponse(Message response) { _logger.Info("[TVHclient] GetEventsResponseHandler.handleResponse: received answer from TVH server\n" + response.ToString()); if (response.containsField("events")) { IList events = response.getList("events"); foreach (Message currEventMessage in events) { ProgramInfo pi = new ProgramInfo(); if (currEventMessage.containsField("start")) { long currStartTimeUnix = currEventMessage.getLong("start"); DateTime currentStartDateTimeUTC = _initialDateTimeUTC.AddSeconds(currStartTimeUnix).ToUniversalTime(); int compResult = DateTime.Compare(currentStartDateTimeUTC, _endDateTimeUtc); if (compResult > 0) { _logger.Info("[TVHclient] GetEventsResponseHandler.handleResponse: start value of event larger query stop value - skipping! \n" + "Query start UTC dateTime: " + _startDateTimeUtc + "\n" + "Query end UTC dateTime: " + _endDateTimeUtc + "\n" + "Event start UTC dateTime: " + currentStartDateTimeUTC + "\n" + currEventMessage.ToString()); continue; } pi.StartDate = currentStartDateTimeUTC; } else { _logger.Info("[TVHclient] GetEventsResponseHandler.handleResponse: no start value for event - skipping! \n" + currEventMessage.ToString()); continue; } if (currEventMessage.containsField("stop")) { long currEndTimeUnix = currEventMessage.getLong("stop"); DateTime currentEndDateTimeUTC = _initialDateTimeUTC.AddSeconds(currEndTimeUnix).ToUniversalTime(); int compResult = DateTime.Compare(currentEndDateTimeUTC, _startDateTimeUtc); if (compResult < 0) { _logger.Info("[TVHclient] GetEventsResponseHandler.handleResponse: stop value of event smaller query start value - skipping! \n" + "Query start UTC dateTime: " + _startDateTimeUtc + "\n" + "Query end UTC dateTime: " + _endDateTimeUtc + "\n" + "Event start UTC dateTime: " + currentEndDateTimeUTC + "\n" + currEventMessage.ToString()); continue; } pi.EndDate = currentEndDateTimeUTC; } else { _logger.Info("[TVHclient] GetEventsResponseHandler.handleResponse: no stop value for event - skipping! \n" + currEventMessage.ToString()); continue; } if (currEventMessage.containsField("channelId")) { pi.ChannelId = "" + currEventMessage.getInt("channelId"); } if (currEventMessage.containsField("eventId")) { pi.Id = "" + currEventMessage.getInt("eventId"); } if (currEventMessage.containsField("title")) { pi.Name = currEventMessage.getString("title"); } if (currEventMessage.containsField("description")) { pi.Overview = currEventMessage.getString("description"); } if (currEventMessage.containsField("summary")) { pi.EpisodeTitle = currEventMessage.getString("summary"); } if (currEventMessage.containsField("firstAired")) { long firstAiredUtcLong = currEventMessage.getLong("firstAired"); pi.OriginalAirDate = _initialDateTimeUTC.AddSeconds(firstAiredUtcLong).ToUniversalTime(); } if (currEventMessage.containsField("starRating")) { pi.OfficialRating = "" + currEventMessage.getInt("starRating"); } if (currEventMessage.containsField("image")) { pi.HasImage = true; pi.ImageUrl = "" + currEventMessage.getString("image"); } else { pi.HasImage = false; } if (currEventMessage.containsField("contentType")) { var genre = currEventMessage.getInt("contentType"); if (genre > 16 && genre < 21) pi.IsMovie = true; if (genre > 33 && genre < 38) pi.IsLive = true; if (genre > 50 && genre < 64) pi.IsSports = true; if (genre > 63 && genre < 80) pi.IsMovie = true; if (genre > 80 && genre < 83) pi.IsKids = true; if (genre > 97 && genre < 100) pi.IsNews = true; if (genre > 112 && genre < 126) pi.IsSeries = true; } //pi.IsSeries - bool //pi.CommunityRating - float //pi.IsHD - bool //pi.IsPremiere - bool //pi.IsRepeat - bool //pi.ImagePath - string //pi.Audio - MediaBrowser.Model.LiveTv.ProgramAudio //pi.ProductionYear - int _logger.Info("[TVHclient] GetEventsResponseHandler.handleResponse: add event\n" + currEventMessage.ToString() + "\n" + createPiInfo(pi)); _result.Add(pi); } } _dataReady = true; }