Пример #1
0
        async void GetStopByUri(string Uri)
        {
            try
            {
                HttpClient client = new HttpClient();
                client.BaseAddress = new Uri("http://m.sofiatraffic.bg/schedules/");
                var response = await client.GetAsync(Uri);
                var responseText = await response.Content.ReadAsStringAsync();

                StringBuilder result = new StringBuilder();
                ObservableCollection<ResultModel> resultList = new ObservableCollection<ResultModel>();
                string stop = responseText.Substring(responseText.IndexOf("Спирка (код):") + 20, responseText.IndexOf("Направлениe:") - responseText.IndexOf("Спирка (код):") - 35);
                result.Append("Спирка (код): ");
                result.Append(stop);
                result.Append("\n");
                string direction = responseText.Substring(responseText.IndexOf("Направлениe:") + 27, responseText.IndexOf("Информация") - responseText.IndexOf("Направлениe:") - 73);
                result.Append("Направлениe:");
                result.Append(direction);
                result.Append("\n");
                string time = responseText.Substring(responseText.IndexOf("Информация") + 15, 16);
                result.Append("Информация към ");
                result.Append(time);

                string firstBusNumber = responseText.Substring(responseText.IndexOf("page_title") + 25, 4);
                while (true)
                {
                    if (firstBusNumber[0] == ' ' || firstBusNumber[0] == 'у' || firstBusNumber[0] == 'с')
                    {
                        firstBusNumber = firstBusNumber.Remove(0, 1);
                    }
                    else break;
                }
                while (true)
                {
                    if (firstBusNumber[firstBusNumber.Length - 1] == '<' || firstBusNumber[firstBusNumber.Length - 1] == '/' || firstBusNumber[firstBusNumber.Length - 1] == 'b')
                    {
                        firstBusNumber = firstBusNumber.Remove(firstBusNumber.Length - 1, 1);
                    }
                    else break;
                }
                string firstBus = responseText.Substring(responseText.IndexOf("пристигане") + 24, 17);
                if(firstBus[0]=='<') firstBus="Няма информация";
                resultList.Add(new ResultModel
                {
                    Time = firstBus,
                    Number = firstBusNumber
                });

                List<char> numbers = new List<char>{'0','1','2','3','4','5','6','7','8','9'};
                if (responseText.IndexOf("Автобуси") != -1)
                {
                    int start = responseText.IndexOf("arr_info_1");
                    while (start != -1)
                    {
                        string bus = responseText.Substring(start + 90, 3);
                        if (bus[2] == '<' || bus[2] == '/') bus = bus.Remove(2, 1);
                        if (bus[1] == '<') bus = bus.Remove(1, 1);
                        string busTime = responseText.Substring(start + 115, 20);
                        while (!numbers.Contains(busTime[busTime.Length - 1]))
                        {
                            busTime= busTime.Remove(busTime.Length - 1, 1);
                        }
                        while (!numbers.Contains(busTime[0]))
                        {
                            busTime = busTime.Remove(0, 1);
                        }
                        resultList.Add(new ResultModel
                        {
                            Number = bus,
                            Time = busTime
                        });
                        start = responseText.IndexOf("arr_info_1", start + 1);
                    }
                }

                if (responseText.IndexOf("Тролейбуси") != -1)
                {
                    int start = responseText.IndexOf("arr_info_2");
                    while (start != -1)
                    {
                        string bus = responseText.Substring(start + 90, 3);
                        if (bus[2] == '<' || bus[2] == '/') bus = bus.Remove(2, 1);
                        if (bus[1] == '<') bus = bus.Remove(1, 1);
                        while (true)
                        {
                            if (bus[bus.Length - 1] == '<' || bus[bus.Length - 1] == '/') bus = bus.Remove(bus.Length - 1, 1);
                            else break;
                        }
                        string busTime = responseText.Substring(start + 115, 20);
                        while (!numbers.Contains(busTime[busTime.Length - 1]))
                        {
                            busTime = busTime.Remove(busTime.Length - 1, 1);
                        }
                        while (!numbers.Contains(busTime[0]))
                        {
                            busTime = busTime.Remove(0, 1);
                        }
                        resultList.Add(new ResultModel
                        {
                            Number = bus,
                            Time = busTime
                        });
                        start = responseText.IndexOf("arr_info_2", start + 1);
                    }
                }
                if (responseText.IndexOf("Трамваи") != -1)
                {
                    int start = responseText.IndexOf("arr_info_3");
                    while (start != -1)
                    {
                        string bus = responseText.Substring(start + 90, 3);
                        while (true)
                        {
                            if (bus[bus.Length - 1] == '<' || bus[bus.Length - 1] == '/') bus = bus.Remove(bus.Length - 1, 1);
                            else break;
                        }
                        string busTime = responseText.Substring(start + 115, 20);
                        while (!numbers.Contains(busTime[busTime.Length - 1]))
                        {
                            busTime = busTime.Remove(busTime.Length - 1, 1);
                        }
                        while (!numbers.Contains(busTime[0]))
                        {
                            busTime = busTime.Remove(0, 1);
                        }
                        resultList.Add(new ResultModel
                        {
                            Number = bus,
                            Time = busTime
                        });
                        start = responseText.IndexOf("arr_info_3", start + 1);
                    }
                }
                Posts.Text = result.ToString();
                ResultsListBox.ItemsSource = resultList;
                
            }
            catch (Exception)
            {
                Posts.Text = "Няма намерена информация";
                ResultsListBox.ItemsSource = null;
            }
        }
Пример #2
0
        private void OnBusNumbersComboBoxSelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (BusNumbers.SelectedItem != null)
            {

                bus = BusNumbers.SelectedItem as BusModel;
                Direction.ItemsSource = bus.Directions;
                Stop.ItemsSource = null;
            }
        }