コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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;
        }
コード例 #3
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);
        }
コード例 #4
0
 private void RaiseEvent(StreamsInfo si, FavouriteGroup fg)
 {
     CurrentInfo = si;
     TimeRecieved = DateTime.Now;
     if (FoundNewStreamEvent != null)
         FoundNewStreamEvent(si, fg);
 }