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(); } }
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(); }
/// <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); }
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); }
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(); }
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; } } }
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); } }
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"; } } }