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; } }