Exemplo n.º 1
0
        private void UpdateData(object sender, ElapsedEventArgs e)
        {
            ThreadPool.QueueUserWorkItem(async(c) =>
            {
                ChannelAuthed chanel = await TwitchApiController.GetChanel();
                Game[] gamesFromApi  = await TwitchApiController.GetAllGames();
                App.Current.Dispatcher.Invoke(() =>
                {
                    foreach (StreamGame item in GamesList)
                    {
                        if (item.Name == chanel.Game)
                        {
                            CurrentGame = item;
                        }
                    }
                });

                StreamTitle       = chanel.Status;
                StreamLink        = chanel.Url;
                ChanelViews       = chanel.Views;
                ChanelFollowers   = chanel.Followers;
                ChanelLanguage    = chanel.Language;
                ChanelUsersOnline = TwitchApiController.GetChatters().Result.Count;
            });
        }
        public async void SyncSubscribers()
        {
            try
            {   //Sync followers
                ChannelSubscribers subscribers = await TwitchApiController.GetSubscribers();

                TwitchBotGlobalObjects.ChanelData.Subscribers.Clear();
                foreach (var subscriber in subscribers.Subscriptions)
                {
                    TwitchBotGlobalObjects.ChanelData.Subscribers.Add(subscriber);
                }
                //Unfollow exist user in  date base  with was unfollow.
                var usersToUnsub = AssistantDb.Instance.Viewers.GetAll().Where(new Func <Viewer, bool>((user) =>
                {
                    return(user.IsSubscriber &&
                           !TwitchBotGlobalObjects.ChanelData.Subscribers.Any(sub => sub.User.Id == user.Id.ToString()));
                }));
                foreach (var unsub in usersToUnsub)
                {
                    unsub.IsSubscriber = false;
                }

                //Add new  followers  witch not  exist in the  date base.
                var newSubscribers = TwitchBotGlobalObjects.ChanelData.Subscribers.Where(
                    new Func <TwitchLib.Api.V5.Models.Subscriptions.Subscription, bool>(
                        (sub) =>
                {
                    return(!AssistantDb.Instance.Viewers.GetAll().Any(user => user.Id.ToString() == sub.User.Id));
                }
                        )
                    );
                foreach (var newUsers in newSubscribers)
                {
                    int    viewerId     = int.Parse(newUsers.User.Id);
                    Viewer joinedViewer = new Viewer()
                    {
                        Id = viewerId, Username = newUsers.User.Name, IsSubscriber = true
                    };
                    AssistantDb.Instance.Viewers.Add(joinedViewer);
                }
                //Update exist users follow  status.
                var existUsersToSub = AssistantDb.Instance.Viewers.GetAll().Where(
                    new Func <Viewer, bool>(
                        (user) =>
                {
                    return(!user.IsSubscriber &&
                           TwitchBotGlobalObjects.ChanelData.Subscribers.Any(sub => sub.User.Id == user.Id.ToString()));
                })
                    );
                foreach (var userToSub in existUsersToSub)
                {
                    userToSub.IsFollower = true;
                }
            }
            catch
            {
            }
        }
        public async void SyncFollowes()
        {
            //Sync followers
            List <ChannelFollow> followers = await TwitchApiController.GetFollowes();

            TwitchBotGlobalObjects.ChanelData.Followers.Clear();
            foreach (var follower in followers)
            {
                TwitchBotGlobalObjects.ChanelData.Followers.Add(follower);
            }
            //Unfollow exist user in  date base  with was unfollow.
            var usersToUnfollow = AssistantDb.Instance.Viewers.GetAll().Where(new Func <Viewer, bool>((user) =>
            {
                return(user.IsFollower &&
                       !TwitchBotGlobalObjects.ChanelData.Followers.Any(follow => follow.User.Id == user.Id.ToString()));
            }));

            foreach (var unfollower in usersToUnfollow)
            {
                unfollower.IsFollower = false;
            }

            //Add new  followers  witch not  exist in the  date base.
            var newUsersFollowers = TwitchBotGlobalObjects.ChanelData.Followers.Where(
                new Func <ChannelFollow, bool>(
                    (follow) =>
            {
                return(!AssistantDb.Instance.Viewers.GetAll().Any(user => user.Id.ToString() == follow.User.Id));
            }
                    )
                );

            foreach (var newUsers in newUsersFollowers)
            {
                int    viewerId     = int.Parse(newUsers.User.Id);
                Viewer joinedViewer = new Viewer()
                {
                    Id = viewerId, Username = newUsers.User.Name, IsFollower = true
                };
                AssistantDb.Instance.Viewers.Add(joinedViewer);
            }
            //Update exist users follow  status.
            var existUsersToFollower = AssistantDb.Instance.Viewers.GetAll().Where(
                new Func <Viewer, bool>(
                    (user) =>
            {
                return(!user.IsFollower &&
                       TwitchBotGlobalObjects.ChanelData.Followers.Any(follow => follow.User.Id == user.Id.ToString()));
            })
                );

            foreach (var userToFollower in existUsersToFollower)
            {
                userToFollower.IsFollower = true;
            }
        }