Example #1
0
        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;
        }
Example #2
0
        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 ) );
 }