public async void LoadData() { IsDataLoaded = false; OnAir = await RadioBox2Service.GetNowOnAir(Item.Channel.ToString()); Broadcast = await RadioBox2Service.GetCurrentBroadcast(Item.Channel.ToString()); if (_nowOnAirRefreshTimer == null) { _nowOnAirRefreshTimer = new DispatcherTimer(); _nowOnAirRefreshTimer.Interval = DateTime.Now.AddMilliseconds(30000) - DateTime.Now; _nowOnAirRefreshTimer.Tick += new EventHandler<object>(LoadOnAir); _nowOnAirRefreshTimer.Start(); } if (_broadcastRefreshTimer == null) { _broadcastRefreshTimer = new DispatcherTimer(); _broadcastRefreshTimer.Interval = DateTime.Now.AddMilliseconds(120000) - DateTime.Now; _broadcastRefreshTimer.Tick += new EventHandler<object>(LoadBroadcast); _broadcastRefreshTimer.Start(); } LoadProgramme(); IsDataLoaded = true; }
public async void LoadBroadcast(object sender, object e) { if (_broadcastRefreshTimer != null && _broadcastRefreshTimer.IsEnabled) { _broadcastRefreshTimer.Stop(); _broadcastRefreshTimer = null; } int Id = 0; if (Broadcast != null) { Id = Broadcast.Id; } Broadcast = await RadioBox2Service.GetCurrentBroadcast(Item.Channel.ToString()); if (Id != Broadcast.Id) LoadProgramme(); _broadcastRefreshTimer = new DispatcherTimer(); _broadcastRefreshTimer.Interval = DateTime.Now.AddMilliseconds(120000) - DateTime.Now; _broadcastRefreshTimer.Tick += new EventHandler<object>(LoadBroadcast); _broadcastRefreshTimer.Start(); }
public async static Task<Broadcast> GetCurrentBroadcast(string channelId) { var client = new HttpClient(); string message; try { Broadcast currentBroadcast = new Broadcast(); var response = await client.GetStringAsync(BASE_URL + "broadcast/search.json?q=channel.id:'" + channelId + "'%20AND%20startdatetime<NOW%20AND%20stopdatetime>NOW&t=" + DateTime.Now); try { JObject jObject = JObject.Parse(response); JObject result = (JObject)((JArray)jObject["results"])[0]; currentBroadcast.Id = (int)result["id"]; currentBroadcast.TotalResults = jObject["total-results"].ToString(); currentBroadcast.ProgrammeId = result["programme"].ToString(); currentBroadcast.ProgrammeName = result["name"].ToString(); currentBroadcast.ProgrammeImage = result["image"]["url"].ToString(); if (jObject["description"] == null) { var responseProgramme = await client.GetStringAsync(BASE_URL + "programme/rest/" + currentBroadcast.ProgrammeId + ".json"); JObject programmeObject = JObject.Parse(responseProgramme); currentBroadcast.ProgrammeDescription = WebUtility.HtmlDecode(programmeObject["description"].ToString()); } else { currentBroadcast.ProgrammeDescription = WebUtility.HtmlDecode(result["description"].ToString()); } currentBroadcast.ProgrammeDescription = Regex.Replace(currentBroadcast.ProgrammeDescription, @"<(.|\n)*?>", string.Empty); currentBroadcast.BroadcasterName = result["broadcaster"]["name"].ToString(); currentBroadcast.BroadcastStart = result["startdatetime"].ToString(); currentBroadcast.BroadcastEnd = result["stopdatetime"].ToString(); DateTime startDate = DateTime.Parse(currentBroadcast.BroadcastStart); DateTime stopDate = DateTime.Parse(currentBroadcast.BroadcastEnd); string startStopTime = RadioBox2Service.setLength(startDate.Hour.ToString(), 2) + ":" + RadioBox2Service.setLength(startDate.Minute.ToString(), 2) + " - " + RadioBox2Service.setLength(stopDate.Hour.ToString(), 2) + ":" + RadioBox2Service.setLength(stopDate.Minute.ToString(), 2); currentBroadcast.BroadcastTimes = startStopTime; currentBroadcast.Presenters = ""; if (result["presenter"] != null) { JArray presenters = (JArray)result["presenter"]; for (int i = 0; i < presenters.ToArray().Length; i++) { JObject presenter = (JObject)presenters[i]; currentBroadcast.Presenters += presenter["full_name"]; if (presenters.ToArray().Length - 2 > i) currentBroadcast.Presenters += ", "; if (presenters.ToArray().Length - 2 == i) currentBroadcast.Presenters += " & "; } } if (result["item"] != null) { foreach (JObject item in result["item"]) { currentBroadcast.Items.Add(item); } } if (currentBroadcast.ProgrammeDescription.Equals("")) { response = await client.GetStringAsync(BASE_URL + "programme/rest/" + currentBroadcast.ProgrammeId + ".json"); jObject = JObject.Parse(response); currentBroadcast.ProgrammeDescription = WebUtility.HtmlDecode(jObject["description"].ToString()); currentBroadcast.ProgrammeDescription = Regex.Replace(currentBroadcast.ProgrammeDescription, @"<(.|\n)*?>", string.Empty); } } catch { } return currentBroadcast; } catch (HttpRequestException hrex) { message = hrex.Message; } MessageBox.Show(string.Format(ResourceHelper.GetString("WebErrorMessage"), message)); return new Broadcast() { BroadcasterName = "3FM", Presenters = "Onbekend", ProgrammeName = "Onbekend", ProgrammeDescription = "Er is geen informatie beschikbaar." }; }