Beispiel #1
0
        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);
            }
        }
Beispiel #2
0
        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();
                }
            }
        }