public async Task<Dictionary<string, PostAnalysisResults>> Analyze( List<rs.Post> posts ) { var toReturn = new Dictionary<string, PostAnalysisResults>(); var youTubePosts = new Dictionary<string, List<rs.Post>>(); var amWrangler = new BotFunctions.AutoModWrangler( Program.Client.GetSubreddit( Program.Subreddit ) ); var bannedChannels = amWrangler.GetBannedList( Models.BannedEntity.EntityType.Channel ); foreach ( var post in posts ) { //TODO error handling toReturn.Add( post.Id, new PostAnalysisResults( post, ModuleEnum ) ); string postYTID = YouTubeHelpers.ExtractVideoId( post.Url.ToString() ); if ( !string.IsNullOrWhiteSpace( postYTID ) ) { if ( !youTubePosts.ContainsKey( postYTID ) ) youTubePosts.Add( postYTID, new List<rs.Post>() ); youTubePosts[postYTID].Add( post ); } } var yt = new YouTubeService( new BaseClientService.Initializer { ApiKey = YouTubeAPIKey } ); var req = yt.Videos.List( "snippet" ); for ( var i = 0; i < youTubePosts.Keys.Count; i += 50 ) { req.Id = string.Join( ",", youTubePosts.Keys.Skip( i ).Take( 50 ) ); var response = req.ExecuteAsync(); await Task.WhenAll( response, bannedChannels ); foreach ( var vid in response.Result.Items ) { //if the channel is banned var chan = bannedChannels.Result.Where( c => c.EntityString == vid.Snippet.ChannelId ).FirstOrDefault(); if ( chan != null ) { foreach ( var ytPost in youTubePosts[vid.Id] ) { //ring 'er up toReturn[ytPost.Id].Scores.Add( new AnalysisScore( 9999, $"Channel ID: {chan.EntityString} was banned by {chan.BannedBy} on {chan.BanDate} for reason: {chan.BanReason}", "Banned Channel", ModuleName ) ); } } } } return toReturn; }
public async Task <Dictionary <string, PostAnalysisResults> > Analyze(List <rs.Post> posts) { var toReturn = new Dictionary <string, PostAnalysisResults>(); var youTubePosts = new Dictionary <string, List <rs.Post> >(); var amWrangler = new BotFunctions.AutoModWrangler(Program.Client.GetSubreddit(Program.Subreddit)); var bannedChannels = amWrangler.GetBannedList(Models.BannedEntity.EntityType.Channel); foreach (var post in posts) //TODO error handling { toReturn.Add(post.Id, new PostAnalysisResults(post, ModuleEnum)); string postYTID = YouTubeHelpers.ExtractVideoId(post.Url.ToString()); if (!string.IsNullOrWhiteSpace(postYTID)) { if (!youTubePosts.ContainsKey(postYTID)) { youTubePosts.Add(postYTID, new List <rs.Post>()); } youTubePosts[postYTID].Add(post); } } var yt = new YouTubeService(new BaseClientService.Initializer { ApiKey = YouTubeAPIKey }); var req = yt.Videos.List("snippet"); for (var i = 0; i < youTubePosts.Keys.Count; i += 50) { req.Id = string.Join(",", youTubePosts.Keys.Skip(i).Take(50)); var response = req.ExecuteAsync(); await Task.WhenAll(response, bannedChannels); foreach (var vid in response.Result.Items) { //if the channel is banned var chan = bannedChannels.Result.Where(c => c.EntityString == vid.Snippet.ChannelId).FirstOrDefault(); if (chan != null) { foreach (var ytPost in youTubePosts[vid.Id]) { //ring 'er up toReturn[ytPost.Id].Scores.Add(new AnalysisScore(9999, $"Channel ID: {chan.EntityString} was banned by {chan.BannedBy} on {chan.BanDate} for reason: {chan.BanReason}", "Banned Channel", ModuleName)); } } } } return(toReturn); }
public AutomodWranglerController() { wrangler = new BotFunctions.AutoModWrangler(Program.Client.GetSubreddit(Program.Subreddit)); }
public AutomodWranglerController() { wrangler = new BotFunctions.AutoModWrangler( Program.Client.GetSubreddit( Program.Subreddit ) ); }