private async Task <List <Road> > parseHtml(String Url) { string page = ""; string[] seperator = new string[] { "<tr" }; string[] tdsep = new string[] { "<td" }; string[] trSep; string[] cropped; feedList.Clear();//1.0.1.1 try { progress.IsActive = true; //Encoding iso = Encoding.GetEncoding("ISO-8859-7"); //Encoding utf8 = Encoding.UTF8; //byte[] utfBytes = utf8.GetBytes(Url); //byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes); //string msg = iso.GetString(isoBytes,0,isoBytes.Length); HttpClient http = new HttpClient(); HttpResponseMessage response = await http.GetAsync(url); //page = await response.Content.ReadAsStringAsync(); byte[] isoBytes = await http.GetByteArrayAsync(url); //Encoding utf8 = Encoding.Unicode; //System.Text.Encoding greek = ; //greek.WebName = "iso-8859-7"; //Encoding greekEnc = Encoding.GetEncoding(; //Encoding unicode = Encoding.GetEncoding("Windows-1252"); //UnicodeEncoding greek = new UnicodeEncoding(); //System.Text. Encoding unicode = Encoding.UTF8; //byte[] utfBytes = utf8.GetBytes(Url); //Encoding init = new Windows1250Encoding(); //isoBytes = Encoding.Convert(utf8, greekEnc,isoBytes); page = unicode.GetString(isoBytes, 0, isoBytes.Length); //foreach (EncodingInfo ei in Encoding.GetEncodings()) //{ // Encoding e = ei.GetEncoding(); // Console.Write("{0,-6} {1,-25} ", ei.CodePage, ei.Name); // Console.Write("{0,-8} {1,-8} ", e.IsBrowserDisplay, e.IsBrowserSave); // Console.Write("{0,-8} {1,-8} ", e.IsMailNewsDisplay, e.IsMailNewsSave); // Console.WriteLine("{0,-8} {1,-8} ", e.IsSingleByte, e.IsReadOnly); //} progress.IsActive = false; offlineMode = false; try { Stream stream; StreamWriter writer; stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync("offlineAthens.txt", CreationCollisionOption.ReplaceExisting); stream.Flush(); writer = new StreamWriter(stream); await writer.WriteLineAsync(page); writer.Flush(); stream.Dispose(); } catch (Exception) { Debug.WriteLine("-----------------------------------------------------------"); } } catch (HttpRequestException) { progress.IsActive = false; } if (page.Length == 0) { Stream stream; StreamReader reader; try { stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("offlineAthens.txt");//------------peirazw debugging reader = new StreamReader(stream); page = reader.ReadToEnd(); offlineMode = true; } catch (FileNotFoundException)//********periptwsi pou anoigei xwris internet den vriskei to offline.txt********* { Road error = new Road(); error.labeling = "Παρουσιάστηκε σφάλμα στην φόρτωση των δεδομένων παρακαλώ βεβαιωθείτε ότι έχετε ενεργοποιήσει την κίνηση δεδομένων"; feedList.Add(error); return(feedList); } } trSep = page.Split(seperator, StringSplitOptions.RemoveEmptyEntries); //---------------------------------------------------------------------------------------------pairnei tin teleutaia enimerwsi try { trSep[0] = trSep[0].Split(new string[] { "<b>", "</b>" }, StringSplitOptions.None)[5]; foreach (char c in trSep[0]) { if ((c >= '0' && c <= '9') || c == '/' || c == '-' || c == ' ' || c == ':') { continue; } else { throw new IndexOutOfRangeException(); } } } catch (IndexOutOfRangeException) { trSep[0] = "Αγνωστο"; } //Debug.WriteLine("Τελευταία ενημέρωση: " + trSep[0]); showDate(trSep[0]); //---------------------------------------------------------------------------------------------end teleutaia enimerwsi for (int i = 3; i < trSep.Length; i++)// mama for gia olous tous dromous { Road road = new Road(); cropped = trSep[i].Split(tdsep, StringSplitOptions.RemoveEmptyEntries); cropped[1] = cropped[1].Split(new string[] { "<", ">" }, StringSplitOptions.RemoveEmptyEntries)[1]; //pairnei to dromo if (!cropped[1].Contains("/td") && cropped[1].Trim().Length > 3) //proste8ike ekdosi 1.0.1.1 { road.name = cropped[1]; } else { continue; } //---------------------------------------------------------------------------------------------status dromou if (cropped[2].Length > cropped[3].Length && cropped[2].Length > cropped[4].Length) { road.status = "Κανονική ροή"; } else if (cropped[3].Length > cropped[4].Length) { road.status = "Αυξημένη ροή"; } else if (cropped[2].Length == cropped[3].Length && cropped[3].Length == cropped[4].Length) { road.status = ""; } else { road.status = "Πολύ αυξημένη ροή"; } //---------------------------------------------------------------------------------------------end status //---------------------------------------------------------------------------------------------------------------------labeling dromou cropped[5] = cropped[5].Split(new string[] { "<", ">" }, StringSplitOptions.None)[1]; if (cropped[5].Trim().Length == 0) { road.labeling = "";//"Δεν υπάρχουν διαθέσιμες πληροφορίες για τον δρόμο"; //1.0.1.1 } else { road.labeling = cropped[5]; } //-----------------------------------------------------------------------------------------------------------------------end labeling //*****debugging***** //road.name = "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ." + // "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ."; //road.status = "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ." + // "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ."; //road.labeling = "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ." + // "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ."; //*****end debugging***** //if (road.status.Length == 0 || road.status.Equals("Πολύ αυξημένη ροή") || road.status.Equals("Αυξημένη ροή") || road.labeling.Length != 0)//1.0.1.1 feedList.Add(road); //fortwnei tin lista pou periexei mono au3imeni kinisi } if (feedList.Count == 0) { Road r = new Road(); r.name = "Όλοι οι οδικοί άξονες παρουσιάζουν ομαλή ροή οχημάτων"; feedList.Add(r); } if (feedList.Count == 0)//1.0.1.1 { Road r = new Road(); r.name = "Παρουσιάστηκε κάποιο πρόβλημα με την φόρτωση των δεδομένων παρακαλώ προσπαθήστε ξανά σε λίγο"; feedList.Add(r); } return(feedList); }
private async Task<List<Road>> parseHtml(String Url) { string page = ""; string[] seperator = new string[] { "<tr" }; string[] tdsep = new string[] { "<td" }; string[] trSep; string[] cropped; feedList.Clear();//1.0.1.1 try { progress.IsActive = true; //Encoding iso = Encoding.GetEncoding("ISO-8859-7"); //Encoding utf8 = Encoding.UTF8; //byte[] utfBytes = utf8.GetBytes(Url); //byte[] isoBytes = Encoding.Convert(utf8, iso, utfBytes); //string msg = iso.GetString(isoBytes,0,isoBytes.Length); HttpClient http = new HttpClient(); HttpResponseMessage response = await http.GetAsync(url); //page = await response.Content.ReadAsStringAsync(); byte[] isoBytes = await http.GetByteArrayAsync(url); //Encoding utf8 = Encoding.Unicode; //System.Text.Encoding greek = ; //greek.WebName = "iso-8859-7"; //Encoding greekEnc = Encoding.GetEncoding(; Encoding unicode = Encoding.GetEncoding("Windows-1252"); //UnicodeEncoding greek = new UnicodeEncoding(); //System.Text. //Encoding unicode = Encoding.UTF8; //byte[] utfBytes = utf8.GetBytes(Url); //Encoding init = new Windows1250Encoding(); //isoBytes = Encoding.Convert(utf8, greekEnc,isoBytes); page = unicode.GetString(isoBytes, 0, isoBytes.Length); //foreach (EncodingInfo ei in Encoding.GetEncodings()) //{ // Encoding e = ei.GetEncoding(); // Console.Write("{0,-6} {1,-25} ", ei.CodePage, ei.Name); // Console.Write("{0,-8} {1,-8} ", e.IsBrowserDisplay, e.IsBrowserSave); // Console.Write("{0,-8} {1,-8} ", e.IsMailNewsDisplay, e.IsMailNewsSave); // Console.WriteLine("{0,-8} {1,-8} ", e.IsSingleByte, e.IsReadOnly); //} progress.IsActive = false; offlineMode = false; try { Stream stream; StreamWriter writer; stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync("offlineAthens.txt", CreationCollisionOption.ReplaceExisting); stream.Flush(); writer = new StreamWriter(stream); await writer.WriteLineAsync(page); writer.Flush(); stream.Dispose(); } catch (Exception) { Debug.WriteLine("-----------------------------------------------------------"); } } catch (HttpRequestException) { progress.IsActive = false; } if (page.Length == 0) { Stream stream; StreamReader reader; try { stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync("offlineAthens.txt");//------------peirazw debugging reader = new StreamReader(stream); page = reader.ReadToEnd(); offlineMode = true; } catch (FileNotFoundException)//********periptwsi pou anoigei xwris internet den vriskei to offline.txt********* { Road error = new Road(); error.labeling = "Παρουσιάστηκε σφάλμα στην φόρτωση των δεδομένων παρακαλώ βεβαιωθείτε ότι έχετε ενεργοποιήσει την κίνηση δεδομένων"; feedList.Add(error); return feedList; } } trSep = page.Split(seperator, StringSplitOptions.RemoveEmptyEntries); //---------------------------------------------------------------------------------------------pairnei tin teleutaia enimerwsi try { trSep[0] = trSep[0].Split(new string[] { "<b>", "</b>" }, StringSplitOptions.None)[5]; foreach (char c in trSep[0]) { if ((c >= '0' && c <= '9') || c == '/' || c == '-' || c == ' ' || c == ':') continue; else throw new IndexOutOfRangeException(); } } catch (IndexOutOfRangeException) { trSep[0] = "Αγνωστο"; } //Debug.WriteLine("Τελευταία ενημέρωση: " + trSep[0]); showDate(trSep[0]); //---------------------------------------------------------------------------------------------end teleutaia enimerwsi for (int i = 3; i < trSep.Length; i++)// mama for gia olous tous dromous { Road road = new Road(); cropped = trSep[i].Split(tdsep, StringSplitOptions.RemoveEmptyEntries); cropped[1] = cropped[1].Split(new string[] { "<", ">" }, StringSplitOptions.RemoveEmptyEntries)[1];//pairnei to dromo if (!cropped[1].Contains("/td") && cropped[1].Trim().Length > 3)//proste8ike ekdosi 1.0.1.1 { road.name = cropped[1]; } else { continue; } //---------------------------------------------------------------------------------------------status dromou if (cropped[2].Length > cropped[3].Length && cropped[2].Length > cropped[4].Length) { road.status = "Κανονική ροή"; } else if (cropped[3].Length > cropped[4].Length) { road.status = "Αυξημένη ροή"; } else if (cropped[2].Length == cropped[3].Length && cropped[3].Length == cropped[4].Length) { road.status = ""; } else { road.status = "Πολύ αυξημένη ροή"; } //---------------------------------------------------------------------------------------------end status //---------------------------------------------------------------------------------------------------------------------labeling dromou cropped[5] = cropped[5].Split(new string[] { "<", ">" }, StringSplitOptions.None)[1]; if (cropped[5].Trim().Length == 0) { road.labeling = "";//"Δεν υπάρχουν διαθέσιμες πληροφορίες για τον δρόμο"; //1.0.1.1 } else { road.labeling = cropped[5]; } //-----------------------------------------------------------------------------------------------------------------------end labeling //*****debugging***** //road.name = "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ." + // "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ."; //road.status = "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ." + // "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ."; //road.labeling = "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ." + // "ΚΛΕΙΣΤΗ Η ΛΕΩΦ. ΔΕΚΕΛΕΙΑΣ ΣΤΗ Ν.ΦΙΛΑΔΕΛΦΕΙΑ, ΛΟΓΩ ΕΟΡΤΑΣΜΟΥ ΤΗΣ ΠΡΩΤΟΜΑΓΙΑΣ ΑΠΌ ΤΟ ΥΨΟΣ ΤΗΣ ΧΑΛΚΙΔΟΣ ΕΩΣ ΕΛ.ΒΕΝΙΖΕΛΟΥ (ΦΑΝΑΡΙΑ ΤΟΥ ΒΛΑΧΟΥ) ΚΑΙ Η ΧΑΛΚΙΔΟΣ ΑΠΌ ΠΑΤΗΣΙΩΝ ΕΩΣ ΔΕΚΕΛΕΙΑΣ."; //*****end debugging***** //if (road.status.Length == 0 || road.status.Equals("Πολύ αυξημένη ροή") || road.status.Equals("Αυξημένη ροή") || road.labeling.Length != 0)//1.0.1.1 feedList.Add(road);//fortwnei tin lista pou periexei mono au3imeni kinisi } if (feedList.Count == 0) { Road r = new Road(); r.name = "Όλοι οι οδικοί άξονες παρουσιάζουν ομαλή ροή οχημάτων"; feedList.Add(r); } if (feedList.Count == 0)//1.0.1.1 { Road r = new Road(); r.name = "Παρουσιάστηκε κάποιο πρόβλημα με την φόρτωση των δεδομένων παρακαλώ προσπαθήστε ξανά σε λίγο"; feedList.Add(r); } return feedList; }