private static async Task ProcessaAtividades(ProjectType tipo) { var projeto = Services.Data.RecuperarDadosProjeto(tipo); var parametros = new List <string> { $"date_from=", //$"date_from={DateTime.Now.Date:yyyy-MM-dd}+00%3A00%3A00", $"date_to=", //$"date_to={DateTime.Now.Date:yyyy-MM-dd}+23%3A59%3A59", "user_id=0", $"project_id={projeto.ProjectId}", "language_id=0", "type=0", "translation_id=0", "after_build=0", "before_build=0", "request=4" }; Console.WriteLine($"Ultimo ID: {projeto.LastMessageId}"); Console.WriteLine($"Processando as atividades do {tipo.AsString(EnumFormat.Description)}"); Console.WriteLine("Criando WebRequest..."); var url = @"https://crowdin.com/backend/project_actions/activity_stream?" + string.Join("&", parametros); var requiscaoWeb = WebRequest.CreateHttp(url); requiscaoWeb.Method = "GET"; requiscaoWeb.Headers.Add(HttpRequestHeader.Cookie, "cid = p6rub4sco6ppa8u0mabaqvs5e4; csrf_token=oe8d08chu6;"); requiscaoWeb.Headers.Add("x-csrf-token", "oe8d08chu6"); Console.WriteLine("Criado WebRequest..."); Console.WriteLine("Lendo WebRequest..."); using (var resposta = requiscaoWeb.GetResponse()) { var streamDados = resposta.GetResponseStream(); Console.WriteLine("Obtido informações do WebRequest..."); StreamReader reader = new StreamReader(streamDados); object objResponse = reader.ReadToEnd(); Console.WriteLine("Lido informações do WebRequest..."); var activityStream = JsonConvert.DeserializeObject <ActivityStreamDTO>(objResponse.ToString()); Console.WriteLine("Deserializado informações do WebRequest..."); var quantidade = activityStream.Activity.Count; var skip = 0; Console.WriteLine($"Atividades encontradas: {quantidade}"); while (quantidade > skip) { var mensagens = new StringBuilder(); foreach (var atividade in activityStream.Activity.Skip(skip).Take(5)) { // Comentado temporariamente if (atividade.Id == projeto.LastMessageId) { skip = quantidade; break; } atividade.Message = $"{atividade.Message} no dia {atividade.DateTime.ToShortDateString()} às {atividade.DateTime.TimeOfDay.Add(new TimeSpan(1, 0, 0))}"; Console.WriteLine(atividade.Message); mensagens.AppendLine(Tradutor(Regex.Replace(atividade.Message, "<.*?>", string.Empty))); Console.WriteLine(mensagens.ToString()); } if (mensagens.Length == 0) { streamDados.Close(); resposta.Close(); Console.WriteLine("Não há mensagens para serem processadas!"); return; } // Comentado temporariamente Services.Data.AtualizarProjeto(tipo, activityStream.Activity.First().Id); EnviarMensagemDiscord(mensagens.ToString(), projeto.UrlDiscord, projeto.UrlCrowdin).Wait(); skip += 5; } streamDados.Close(); resposta.Close(); } Console.WriteLine("Fim do processamento da mensagem"); }