/// <summary> /// Check if a stream exists within a group in the xml doc. /// </summary> /// <param name="name">The stream to search for</param> /// <param name="result">This defaults to null on failure</param> /// <returns>isSuccess</returns> public static bool TryGetFavourite(string name, out FavouriteGroup result) { if (!File.Exists(xmldocpath)) { CreateFavoriteConfig(ConfigMgnr.I.FolderPath); } var xdoc = XDocument.Load(xmldocpath); var query = from x in xdoc.Root.Elements("group").Elements("stream") where x.Value.Equals(name) select x; var bufferresult = query.ToArray(); if (bufferresult.Length > 0) { var xgp = bufferresult[0].Parent; var _result = new FavouriteGroup(); int tempint; string tempints; _result.Name = xgp.Attribute("name").Value; _result.Soundfile = xgp.Attribute("soundfile").Value; tempints = xgp.Attribute("priority").Value; if (int.TryParse(tempints, out tempint)) { _result.Priority = tempint; } tempints = xgp.Attribute("poptime").Value; if (int.TryParse(tempints, out tempint)) { _result.Poptime = tempint; } result = _result; return(true); } result = null; return(false); }
/// <summary> /// Check if a stream exists within a group in the xml doc. /// </summary> /// <param name="name">The stream to search for</param> /// <param name="result"></param> /// <returns>Returns 1 if true, 0 if false.</returns> public static int TryGetFavourite(string name, out FavouriteGroup result) { // TODO add error handling for missing doc var xdoc = XDocument.Load(xmldocpath); var query = from x in xdoc.Root.Elements("group").Elements("stream") where x.Value.Equals(name) select x; var bufferresult = query.ToArray(); if (bufferresult.Length > 0) { var xgp = bufferresult[0].Parent; var _result = new FavouriteGroup(); int tempint; string tempints; _result.Name = xgp.Attribute("name").Value; _result.Soundfile = xgp.Attribute("soundfile").Value; tempints = xgp.Attribute("priority").Value; if (int.TryParse(tempints, out tempint)) _result.Priority = tempint; tempints = xgp.Attribute("poptime").Value; if (int.TryParse(tempints, out tempint)) _result.Poptime = tempint; result = _result; return 1; } result = null; return 0; }
public async Task <UpdateResult> Update() { // If no token assigned, don't do anything if (ConfigMgnr.I.Token.Equals("0")) { return(UpdateResult.Nothing); } // Get user id if not assigned if (ConfigMgnr.I.User.Equals("0")) { var ussr = Helix.HelixAPI.GetUser(ConfigMgnr.I.Token); if (ussr.Result.IsOk) { ConfigMgnr.I.User = ussr.Result.User[0].Id; } } if (currentFollows == null) { var tempF = await HelixAPI.GetFollows(ConfigMgnr.I.User); if (!tempF.IsOk) { return(UpdateResult.Nothing); } currentFollows = tempF; } // Get live streams from follows var tempS = await HelixAPI.GetStreams(currentFollows.GenerateUserIds()); if (!tempS.IsOk) { return(UpdateResult.Nothing); } var s = await AddGames(tempS); // First check if (currentStreams == null) { currentStreams = s; return(UpdateResult.Update); } // Compare FavouriteGroup kingOfTheFill = null; FavouriteGroup contenderOfTheFill = null; bool foundNew = false; foreach (var item in s.Stream) { if (!currentStreams.Stream.Exists(x => x.Channel.Equals(item.Channel))) { foundNew = true; if (MiscOperations.TryGetFavourite(item.Channel, out contenderOfTheFill)) { if (kingOfTheFill == null || kingOfTheFill.Priority < contenderOfTheFill.Priority) { kingOfTheFill = contenderOfTheFill; } } } } // Results currentStreams = s; if (!foundNew) { return(UpdateResult.Nothing); } if (kingOfTheFill != null) { currentFavorites = kingOfTheFill; return(UpdateResult.Favorite); } return(UpdateResult.Update); }
private void RaiseEvent(StreamsInfo si, FavouriteGroup fg) { CurrentInfo = si; TimeRecieved = DateTime.Now; if (FoundNewStreamEvent != null) FoundNewStreamEvent(si, fg); }