Beispiel #1
0
        public static async Task AdicionarPosts()
        {
            var paginas = PaginaFacebookDAO.ObterTodasPaginas();

            WriteLine("Para buscar posts aperte TAB e o id da pagina.\n");
            WriteLine("ID\tId Cidade\tNome");
            foreach (var page in paginas)
            {
                WriteLine($"{page.Id}\t{page.IdCidade}\t{page.name}");
            }
            if (ReadKey().Key == ConsoleKey.Tab)
            {
                var id   = ReadLine();
                var page = paginas.Find(p => p.Id == int.Parse(id));

                WriteLine("Buscar desde que data no formato DD/MM/YYYY (deixe em branco para qualquer): ");
                var data = ReadLine();

                var posts    = new Posts();
                var postlist = new List <Post>();
                WriteLine($"Procurando posts em {page.name} desde {data}...");
                WriteLine("Aguarde...");
                posts = await FacebookRestAPI.ObterPostsPaginaAsync(page.id, data);

                postlist.AddRange(posts.data);
                SetCursorPosition(0, CursorTop - 1);
                WriteLine($"{postlist.Count} posts encontrados. Aguarde...");
                while (!string.IsNullOrWhiteSpace(posts.paging.next))
                {
                    posts = await FacebookRestAPI.GetObjectAsync <Posts>(posts.paging.next);

                    postlist.AddRange(posts.data);
                    SetCursorPosition(0, CursorTop - 1);
                    WriteLine($"{postlist.Count} posts encontrados. Aguarde...");
                }
                SetCursorPosition(0, CursorTop - 1);
                WriteLine($"Fim da busca, {postlist.Count} posts encontrados.");
                WriteLine("F1 - Adicionar posts ao Banco");
                if (ReadKey().Key == ConsoleKey.F1)
                {
                    int    i     = 0;
                    int    t     = 0;
                    double total = postlist.Count;
                    foreach (var post in postlist)
                    {
                        var ok = PostFacebookDAO.AdicionarPost(post, page.IdCidade, page.Id);
                        if (ok)
                        {
                            i++;
                        }
                        t++;
                        SetCursorPosition(0, CursorTop - 1);
                        var porcento = (t / total) * 100;
                        WriteLine($"{i} adicionados. {porcento:0.0}% concluido");
                    }
                }
                WriteLine("Pressione qualquer tecla para sair");
                Read();
            }
        }
Beispiel #2
0
        public static void AnalisarLogradourosEmPosts()
        {
            WriteLine("Nome da cidade: ");
            var cidade      = ReadLine();
            var logradouros = LogradouroDAO.BuscarTodosLogradouros(cidade);
            var posts       = PostFacebookDAO.BuscarTodosPosts();
            var list        = new List <Token>();
            var relacoes    = new List <Relacao>();
            var sw          = new Stopwatch();

            sw.Start();
            foreach (var post in posts)
            {
                var formatado = Formatacao.FormatarTexto(post.message);
                foreach (var logradouro in logradouros)
                {
                    var token = Analisador.GetToken(post.message, logradouro.Nome, TipoToken.Local);
                    if (token != null)
                    {
                        list.Add(token);
                        relacoes.Add(new Relacao
                        {
                            IdLogradouro = logradouro.Id,
                            IdCidade     = logradouro.IdCidade,
                            IdPost       = post.Id,
                            IdPagina     = post.IdPagina,
                        });
                    }
                }
            }
            sw.Stop();
        }
Beispiel #3
0
        /// <summary>
        /// Busca os comentarios, posts, logradouros e bairros no banco de dados e relaciona-os
        /// </summary>
        /// <param name="cidade">Cidade a ser procurada</param>
        /// <returns>Lista de entidades encontradados no comentario ou post</returns>
        public static List <EntidadeRelacionada> ReconhecerEntididadesRelacionadas(string cidade)
        {
            Bairros     = BairroDAO.BuscarTodosBairros(cidade);
            Logradouros = LogradouroDAO.BuscarTodosLogradouros(cidade);
            PaginasFb   = PaginaFacebookDAO.ObterPaginasCidade(cidade);
            PostsFb     = new List <PostFacebookDAO>();
            foreach (var pagina in PaginasFb)
            {
                PostsFb.AddRange(PostFacebookDAO.BuscarPostsPagina(pagina.Id));
            }
            ComentariosFb = ComentarioFacebookDAO.BuscarTodosComentarios();

            var entidades_rel = new List <EntidadeRelacionada>();

            var sw = new Stopwatch();

            sw.Start();
            foreach (var comentario in ComentariosFb)
            {
                var comm_f    = Formatacao.FormatarTexto(comentario.message);
                var tokens    = Token.Tokenize(comentario.message);
                var entidades = ReconhecerEntidades(comm_f.Formatado);
                foreach (var ent in entidades)
                {
                    var ent_rel = ReconhecerEntidadeRelacionada(ent, comm_f.Original);
                    if (ent_rel != null)
                    {
                        entidades_rel.Add(ent_rel);
                    }
                }
            }

            foreach (var post in PostsFb)
            {
                var tokens    = Token.Tokenize(post.message);
                var comm_f    = Formatacao.FormatarTexto(post.message);
                var entidades = ReconhecerEntidades(comm_f.Formatado);
            }


            sw.Stop();


            return(null);
        }
Beispiel #4
0
        public object Get(string nome)
        {
            var cidade      = CidadeDAO.BuscarCidade(nome);
            var pags        = PaginaFacebookDAO.ObterPaginasCidade(cidade.Nome);
            var comentarios = ComentarioFacebookDAO.BuscarTodosComentariosDaCidade(cidade);
            var posts       = 0;
            var logradouros = LogradouroDAO.BuscarTodosLogradouros(nome);

            foreach (var item in pags)
            {
                posts += PostFacebookDAO.BuscarPostsPagina(item.Id).Count;
            }
            var c = new
            {
                cidade      = FirstCharToUpper(cidade.Nome),
                bairros     = cidade.BairrosDAO.Count,
                paginas     = pags.Count,
                comentarios = comentarios.Count,
                posts       = posts,
                logradouros = logradouros.Count
            };

            return(c);
        }
Beispiel #5
0
        public static async Task AdicionarComentarios()
        {
            WriteLine("Cidade referente as paginas: ");
            var cidade  = ReadLine();
            var paginas = PaginaFacebookDAO.ObterPaginasCidade(cidade);

            WriteLine($"{paginas.Count} paginas encontradas. \nObtendo posts...");
            var posts = new List <PostFacebookDAO>();

            foreach (var p in paginas)
            {
                posts.AddRange(PostFacebookDAO.BuscarPostsPagina(p.Id));
                SetCursorPosition(0, CursorTop - 1);
                WriteLine($"{posts.Count} encontrados. Aguarde...");
            }
            SetCursorPosition(0, CursorTop - 1);
            WriteLine($"Fim da busca. {posts.Count} encontrados.");

            WriteLine($"Obtendo comentarios do facebook. Aguarde...");
            double total            = 0;
            int    comentariosCount = 0;

            SetCursorPosition(0, CursorTop - 1);
            WriteLine("0 Comentários encontrados. Aguarde...");
            foreach (var post in posts)
            {
                double totalPorc = (total / posts.Count) * 100;

                var comentarios = await FacebookRestAPI.ObterComentariosPostAsync(post.id);

                comentariosCount += comentarios.Count;

                SetCursorPosition(0, CursorTop - 1);
                WriteLine($"{comentarios.Count} Comentários encontrados. {totalPorc:0.0}% concluido");

                double parcial = 0;
                int    add     = 0;
                int    addR    = 0;
                foreach (var comment in comentarios)
                {
                    long ok = ComentarioFacebookDAO.AdicionarComentario(comment, post.Id, post.IdPagina, post.IdCidade);
                    try
                    {
                        if (ok != -1)
                        {
                            add++;
                        }
                        if (comment.comments != null)
                        {
                            foreach (var com_r in comment?.comments?.data)
                            {
                                ok = ComentarioFacebookDAO.AdicionarComentario(com_r, post.Id, post.IdPagina, post.IdCidade, ok);
                                if (ok != -1)
                                {
                                    addR++;
                                }
                            }
                        }
                        parcial++;
                        double parcialPorc = (parcial / comentarios.Count) * 100;
                        //SetCursorPosition(0, CursorTop  -1);
                        //WriteLine($" | {add} comentarios e {addR} respostas foram adicionadas ao bd. {parcialPorc:0.0}% concluido");
                    }
                    catch (Exception e)
                    {
                    }
                }
                total++;
            }
            SetCursorPosition(0, CursorTop - 1);
            WriteLine($"Fim da busca. {comentariosCount} Comentários encontrados.");

            Read();
        }
Beispiel #6
0
        static void Main(string[] args)
        {
            //args = new string[] { "servico"};
            if (args.Length > 0)
            {
                switch (args[0])
                {
                case "servico":
                    Console.WriteLine("Iniciando serviço...");
                    var servico = new Servico();
                    servico.InitAsync().Wait();
                    break;

                default:
                    break;
                }
                return;
            }
            bool loop = true;

            while (loop)
            {
                Console.WriteLine("F1 - Inserir Cidade");
                Console.WriteLine("F2 - Buscar Logradouros do Bairro/Cidade pelo Crawler dos Correios");
                Console.WriteLine("F3 - Obter Coordenadas do logradouro");
                Console.WriteLine("====================================");
                Console.WriteLine("F4 - Adicionar página de facebook");
                Console.WriteLine("F6 - Adicionar posts página de facebook");
                Console.WriteLine("F7 - Adicionar comentarios de posts da página de facebook");
                Console.WriteLine("====================================");
                Console.WriteLine("F8 - Procurar locais em posts");
                Console.WriteLine("F9 - Procurar locais em comentarios");
                Console.WriteLine("F12 - Tokenize bairro x post");
                Console.WriteLine("====================================");
                Console.WriteLine("Espaço - Novo Menu");
                Console.WriteLine("\n\nESC - SAIR");
                var key = Console.ReadKey();
                switch (key.Key)
                {
                case ConsoleKey.F1:
                    InserirCidade();
                    break;

                case ConsoleKey.F2:
                    BuscarLogradouros();
                    break;

                case ConsoleKey.F3:
                    break;

                case ConsoleKey.F4:
                    Facebook.AdicionarPagina().Wait();
                    break;

                case ConsoleKey.F6:
                    Facebook.AdicionarPosts().Wait();
                    break;

                case ConsoleKey.F7:
                    Facebook.AdicionarComentarios().Wait();
                    break;

                case ConsoleKey.F8:
                    var postsDao = PostFacebookDAO.BuscarTodosPosts();
                    var posts    = new List <Nucleo.Model.Facebook.Post>();
                    foreach (var post in postsDao)
                    {
                        var p = new Nucleo.Model.Facebook.Post();
                        p = post;
                        posts.Add(p);
                    }
                    Analisador.ContaLocalNoPost(posts, new Status());
                    break;

                case ConsoleKey.F9:
                    //List<Nucleo.Model.Facebook.Comment> comentarios = ComentarioFacebookDAO.BuscarTodosComentarios();
                    //Analisador.ContaLocalNosComentarios(comentarios, new Status());
                    break;

                case ConsoleKey.F12:
                    Model.Analise.AnalisarLogradourosEmPosts();
                    break;

                case ConsoleKey.Escape:
                    loop = false;
                    break;

                case ConsoleKey.Spacebar:
                    //var cidade = "rio das ostras";
                    //Analise.EntidadeRelacionada.ReconhecerEntididadesRelacionadas(cidade);
                    MenuSettings.Menu();
                    break;

                default:
                    break;
                }
            }
        }
Beispiel #7
0
        public async Task InitAsync()
        {
            while (true)
            {
                int dias = 30;
                MessageLoop = "Buscando cidades no MySQL...";
                var cidades = await CidadeDAO.BuscarCidadesAsync();

                MessageLoop = $"{cidades.Count} cidades encontradas";
                foreach (var cidade in cidades)
                {
                    var paginas = await PaginaFacebookDAO.ObterPaginasCidadeAsync(cidade.Nome);

                    MessageLoop = $"{paginas.Count} páginas encontradas de {cidade.Nome}";
                    var dataRecente = $"{DateTime.Now.AddDays(-dias):dd/MM/yyyy}";
                    foreach (var pagina in paginas)
                    {
                        MessageLoop = "Procurando posts na API do Facebook";
                        var posts = await FacebookRestAPI.ObterPostsPaginaAsync(pagina.id, dataRecente);

                        MessageLoop = $"{posts.data.Count} encontrados nos ultimos {dias} dias";
                        int postsatt = 0;
                        foreach (var post in posts.data)
                        {
                            // Adiciona os novos posts ao mysql
                            var idPost = await PostFacebookDAO.AdicionarPostIdAsync(post, cidade.Id, pagina.Id);

                            if (idPost != -1)
                            {
                                postsatt++;
                            }
                        }
                        MessageLoop = $"{postsatt} novos posts adicionados ao MySQL\nObtendo posts do MySQL";
                        // Busca todos os posts do mysql
                        var postsBd = PostFacebookDAO.BuscarPostsPagina(pagina.Id, dias);
                        MessageLoop = $"{postsBd.Count} posts encontrados\nAtualizando comentarios...\n";
                        int comentatt = 0;
                        foreach (var post in postsBd)
                        {
                            Progresso(postsBd.Count, postsBd.IndexOf(post) + 1, "Posts verificados.");
                            var idPost      = post.Id;
                            var comentarios = await FacebookRestAPI.ObterComentariosPostAsync(post.id, dataRecente);

                            foreach (var comentario in comentarios)
                            {
                                var idComentario = await ComentarioFacebookDAO.AdicionarComentarioAsync(comentario, idPost, pagina.Id, cidade.Id);

                                if (idComentario != -1)
                                {
                                    comentatt++;
                                }
                                if (comentario.comments != null && comentario.comments.data.Count > 0)
                                {
                                    foreach (var comentRespondido in comentario.comments?.data)
                                    {
                                        idComentario = await ComentarioFacebookDAO.AdicionarComentarioAsync(comentRespondido, idPost, pagina.Id, cidade.Id, idComentario);

                                        if (idComentario != -1)
                                        {
                                            comentatt++;
                                        }
                                    }
                                }
                            }
                        }
                        MessageLoop = $"{comentatt} novos comentarios adicionados ao MySQL";
                        var comentariosCidade = ComentarioFacebookDAO.BuscarTodosComentariosDaCidade(cidade, dias);
                        int catt = 0, catual = 0;
                        foreach (var comentario in comentariosCidade)
                        {
                            catual++;
                            if (MongoConector.AcessoDados.SalvarUmComentarioSeNaoExistir(comentario, "comentarios"))
                            {
                                catt++;
                            }
                            Progresso(comentariosCidade.Count, catual, "Comentarios analisados no mongo");
                        }
                        MessageLoop = $"{catt} novos comentarios adicionados ao MongoDB";
                        ReadKey();
                    }
                }
                MessageLoop = "Dormindo por 1 hora...";
                await Task.Delay(1000 * 60 * 60);
            }
        }
Beispiel #8
0
        public async void InitAsync()
        {
            int dias = 30;

            MessageLoop = "Buscando cidades no MySQL...";
            var cidades = await CidadeDAO.BuscarCidadesAsync();

            MessageLoop = $"{cidades.Count} cidades encontradas";
            foreach (var cidade in cidades)
            {
                var paginas = await PaginaFacebookDAO.ObterPaginasCidadeAsync(cidade.Nome);

                MessageLoop = $"{paginas.Count} páginas encontradas de {cidade.Nome}";
                var dataRecente = $"{DateTime.Now.AddDays(-dias):dd/MM/yyyy}";
                foreach (var pagina in paginas)
                {
                    var posts = await FacebookRestAPI.ObterPostsPaginaAsync(pagina.id, dataRecente);

                    MessageLoop = $"{posts.data.Count} encontrados nos ultimos {dias} dias";
                    int postsatt = 0;
                    foreach (var post in posts.data)
                    {
                        // Adiciona os novos posts ao mysql
                        var idPost = await PostFacebookDAO.AdicionarPostIdAsync(post, cidade.Id, pagina.Id);

                        if (idPost != -1)
                        {
                            postsatt++;
                        }
                    }
                    MessageLoop = $"{postsatt} novos posts adicionados ao MySQL";
                    // Busca todos os posts do mysql
                    var postsBd   = PostFacebookDAO.BuscarPostsPagina(pagina.Id);
                    int comentatt = 0;
                    foreach (var post in postsBd)
                    {
                        var idPost      = post.Id;
                        var comentarios = await FacebookRestAPI.ObterComentariosPostAsync(post.id, dataRecente);

                        foreach (var comentario in comentarios)
                        {
                            var idComentario = await ComentarioFacebookDAO.AdicionarComentarioAsync(comentario, idPost, pagina.Id, cidade.Id);

                            if (idComentario != -1)
                            {
                                comentatt++;
                            }
                            if (comentario.comments != null && comentario.comments.data.Count > 0)
                            {
                                foreach (var comentRespondido in comentario.comments?.data)
                                {
                                    idComentario = await ComentarioFacebookDAO.AdicionarComentarioAsync(comentRespondido, idPost, pagina.Id, cidade.Id, idComentario);

                                    if (idComentario != -1)
                                    {
                                        comentatt++;
                                    }
                                }
                            }
                        }
                    }
                    MessageLoop = $"{comentatt} novos comentarios adicionados ao MySQL";
                }
            }
        }