private bool MamRadNaDen(DateTime den, Linka linka) { lock (m_Autobusy) { foreach (Autobus bus in m_Autobusy) { if (StejneDatum(den, bus.Odjezd) && bus.Cislo == linka.Cislo && bus.Smer == linka.Smer) { return(true); } } return(false); } }
private void NactiJizdniRadLinky(Linka linka, DateTime den) { WebResponse odezva = null; HttpWebRequest pozadavek; string html; try { pozadavek = WebRequest.Create(linka.Url) as HttpWebRequest; odezva = pozadavek.GetResponse(); using (StreamReader sr = new StreamReader(odezva.GetResponseStream())) { html = sr.ReadToEnd(); } odezva.Close(); string viewState = m_ViewStateReg.Match(html).Value.Replace("__VIEWSTATE\" value=\"", String.Empty).Replace("\"", String.Empty); string eventValidation = m_EventValidationReg.Match(html).Value.Replace("__EVENTVALIDATION\" value=\"", String.Empty).Replace("\"", String.Empty); pozadavek = WebRequest.Create(linka.Url) as HttpWebRequest; pozadavek.Method = "POST"; pozadavek.ContentType = "application/x-www-form-urlencoded"; pozadavek.Referer = linka.Url; //__EVENTTARGET=& //__EVENTARGUMENT=& //__VIEWSTATE=%2FwEPDwUKLTM0MjczMjkyOA8WBh4CdHQFA3BpZB4CY2wFAUMeB1RUSW5kZXgCARYCAgIPZBYWZg8PFgIeBFRleHQFBUxpbmthZGQCAg8QDxYCHgdWaXNpYmxlaGQQFQAVABQrAwAWAGQCBA8PFgIfAwUFT2RrdWRkZAIGDxAPFgIfBGhkEBUAFQAUKwMAFgBkAggPDxYCHwMFA0thbWRkAgoPEA8WAh8EaGQQFQAVABQrAwAWAGQCDQ8QDxYCHwMFDGNlbMO9IHTDvWRlbmRkZGQCDg8WAh8EaBYCZg9kFgICAQ9kFgICAg9kFgZmD2QWCGYPZBYCZg8QDxYCHgdDaGVja2VkZ2RkZGQCAg9kFgJmDxAPFgIfBWdkZGRkAgQPZBYCZg8QDxYCHwVnZGRkZAIGD2QWAmYPEA8WAh8FZ2RkZGQCAg9kFghmD2QWAmYPEA8WAh8FZ2RkZGQCAg9kFgJmDxAPFgIfBWdkZGRkAgQPZBYCZg8QDxYCHwVnZGRkZAIGD2QWAmYPEA8WAh8FZ2RkZGQCBA9kFghmD2QWAmYPEA8WAh8FZ2RkZGQCAg9kFgJmDxAPFgIfBWdkZGRkAgQPZBYCZg8QDxYCHwVnZGRkZAIGD2QWAmYPEA8WAh8FZ2RkZGQCDw8WAh4FdmFsdWUFCHZ5aGxlZGF0ZAIQDw8WAh8DBRV6dm9saXQgb3BhxI1uw70gc23Em3JkZAIRDw8WAh8DBRhwb2Ryb2Juw6kgdnlobGVkw6F2w6Fuw61kZBgBBR5fX0NvbnRyb2xzUmVxdWlyZVBvc3RCYWNrS2V5X18WAQUMY2hrV2hvbGVXZWVr%2FG0%2BseXxiF9jK0XCJwF%2BcNOjtt8%3D& //txtLine=177& //txtFrom=Volha& //txtTo=Opatov& //txtDate=23.3.2010& //cmdSearch=vyhledat& //__EVENTVALIDATION=%2FwEWCQKwp%2FmUBgK8hKCFCgKvzsotAoX7%2BrELAsSEqIMOAqXYht4HAtvG9%2FUHAv6N82gCwbKFrgci%2BI2kXhcY%2FYzgGXJ1POBCPQWvbg%3D%3D StringBuilder sb = new StringBuilder(9); sb.Append("__EVENTTARGET=&"); sb.Append("__EVENTARGUMENT=&"); sb.Append("__VIEWSTATE=" + HttpUtility.UrlEncode(viewState) + "&"); sb.Append("txtLine=" + linka.Cislo + "&"); sb.Append("txtFrom=Volha&"); sb.Append("txtTo=" + linka.Smer.ToString() + "&"); sb.Append("txtDate=" + den.ToShortDateString() + "&"); sb.Append("cmdSearch=vyhledat&"); sb.Append("__EVENTVALIDATION=" + HttpUtility.UrlEncode(eventValidation) + "&"); string postData = sb.ToString(); pozadavek.ContentLength = postData.Length; using (StreamWriter sw = new StreamWriter(pozadavek.GetRequestStream())) { sw.Write(postData); } odezva = pozadavek.GetResponse(); using (StreamReader sr = new StreamReader(odezva.GetResponseStream())) { html = sr.ReadToEnd(); } if (m_ChybaReg.Match(html).Success) { //linka nejezdí o víkendu return; } Match datum = m_DatumReg.Match(html); if (!datum.Success) { m_Bot.Gui.VypisRadek("Datum nenalezen"); return; } if (!StejneDatum(DateTime.Parse(datum.Value.Replace("<th>", String.Empty)), den)) { m_Bot.Gui.VypisRadek("Bus nesedí datumy"); return; } MatchCollection hodiny = m_HodinaReg.Matches(html, datum.Index + datum.Length); MatchCollection minuty = m_MinutyReg.Matches(html, datum.Index + datum.Length); lock (m_Autobusy) { for (int i = 0; i < hodiny.Count; i++) { foreach (Match minuta in minuty) { if (i != hodiny.Count - 1 && minuta.Index > hodiny[i].Index && minuta.Index < hodiny[i + 1].Index) { m_Autobusy.Add(new Autobus(linka.Cislo, new DateTime(den.Year, den.Month, den.Day, int.Parse(hodiny[i].Value.Replace("<td>", String.Empty)), int.Parse(minuta.Value.Replace("<span>", String.Empty)), 0), linka.Smer)); } else if (i == hodiny.Count - 1 && minuta.Index > hodiny[i].Index) { m_Autobusy.Add(new Autobus(linka.Cislo, new DateTime(den.Year, den.Month, den.Day, int.Parse(hodiny[i].Value.Replace("<td>", String.Empty)), int.Parse(minuta.Value.Replace("<span>", String.Empty)), 0), linka.Smer)); } } } } } catch (Exception ex) { m_Bot.Gui.VypisRadek(ex.ToString()); } finally { if (odezva != null) { odezva.Close(); } } }