Exemplo n.º 1
0
 public void SetNewsFileName(string fileName)
 {
     if (string.IsNullOrEmpty(fileName))
     {
         return;
     }
     robotNews = RobotNews.LoadFromFile(fileName);
     AddPendingMessage(string.Format("Прочитано новостей: {0} из {1}", robotNews.Count, fileName));
 }
Exemplo n.º 2
0
        private void SaveNewsButtonClick(object sender, EventArgs e)
        {
            var saveFileDialog = new SaveFileDialog();

            saveFileDialog.Filter = "Текстовый файл (*.txt)|*.txt";
            if (saveFileDialog.ShowDialog(MainForm.Instance) == DialogResult.Cancel)
            {
                return;
            }
            RobotNews.SaveToFile(saveFileDialog.FileName, robotNews);
        }
Exemplo n.º 3
0
 public static List<RobotNews> GrabNews(DateTime dateTime, out List<string> error)
 {
     var result = new List<RobotNews>();
     error = new List<string>();
     var startdt = DateTime.Parse("01/01/1970");
     var requestDate = dateTime.Date;
     var span = requestDate.Subtract(startdt);
     var secs = span.TotalSeconds;
     var myWebRequest =
         WebRequest.Create("http://www.alpari.ru/ru/analytics/calendar/data/list/?lang=ru&timeZone=4&time=" +
                           secs);
     var myWebResponse = myWebRequest.GetResponse();
     if (myWebResponse == null)
     {
         error.Add(DateTime.Now + ": server not responding (WebRequest.GetResponse() = null)");
         return result;
     }
     var stream = myWebResponse.GetResponseStream();
     if (stream == null)
     {
         error.Add(DateTime.Now + ": internal error (WebResponse.GetResponseStream() = null)");
         return result;
     }
     string srcStr;
     using (var sr = new StreamReader(stream, Encoding.UTF8))
         srcStr = sr.ReadToEnd();
     stream.Close();
     var rowPos = 0;
     while (true)
     {
         var row = GetTagData(srcStr, "tr", ref rowPos);
         if (row == null)
             break;
         var news = new RobotNews();
         var addNews = true;
         var cellPos = 0;
         for (var column = 0; column < 7; column++)
         {
             var cell = GetTagData(row, "td", ref cellPos);
             if (cell == null)
             {
                 error.Add(string.Format("news parse error at {0}: incomplete data ({1})", requestDate, news));
                 addNews = false;
                 break;
             }
             cellPos += cell.Length;
             var internalPos = 0;
             var txt = GetTagData(cell, "div", ref internalPos);
             if (txt != null)
                 cell = txt;
             internalPos = 0;
             txt = GetTagData(cell, "strong", ref internalPos);
             if (txt != null)
             {
                 cell = txt;
                 news.Valuable = true;
             }
             var completeText = GetTagText(cell).Trim();
             double? value;
             if (completeText == "") // skip empty cells
             {
                 addNews = false;
                 continue;
             }
             switch (column)
             {
                 case 0:
                     if (completeText.Contains("–")) // skip date period
                         addNews = false;
                     else
                         try
                         {
                             news.Time = requestDate + TimeSpan.Parse(completeText);
                         }
                         catch // (Exception e)
                         {
                             //Console.WriteLine("{0}\n{1}\n{2}", e, completeText, cell);
                             error.Add(string.Format("news parse error at {0}: bad date format ({1}, {2})",
                                                     requestDate, completeText, news));
                             addNews = false;
                             continue;
                         }
                     break;
                 case 1:
                     news.CountryCode = completeText;
                     break;
                 case 2:
                     news.Title = completeText;
                     break;
                 case 5:
                     if (completeText == "—")
                         addNews = false;
                     else
                     {
                         value = GetFirstWordAsDouble(completeText);
                         if (value == null)
                         {
                             error.Add(string.Format("news parse error at {0}: bad number format ({1}, {2})",
                                                     requestDate, completeText, news));
                             addNews = false;
                         }
                         else
                             news.ProjectedValue = value.Value;
                     }
                     break;
                 case 6:
                     if (completeText == "—")
                         addNews = false;
                     else
                     {
                         value = GetFirstWordAsDouble(completeText);
                         if (value == null)
                         {
                             error.Add(string.Format("news parse error at {0}: bad number format ({1}, {2})",
                                                     requestDate, completeText, news));
                             addNews = false;
                         }
                         else
                             news.Value = value.Value;
                     }
                     break;
             }
         }
         if (addNews)
             result.Add(news);
         rowPos += row.Length;
     }
     return result;
 }