Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void bw2002_DoWork(object sender, DoWorkEventArgs e)
- {
- //zpracujeme argumenty
- analyzepattern inputdata = e.Argument as analyzepattern;
- logsys.WriteLogEntry("Pracovní vlákno aktivní! BW2002 pracuje...", inputdata.form);
- DirectoryInfo dir = new DirectoryInfo(inputdata.folderpath);
- FileInfo[] fi = dir.GetFiles("*.html"); //!!!HTML NEBO HTM
- Int32 p = 0; //počet zpracovaných souborů
- foreach (FileInfo file in fi)
- {
- //ověříme jestli nemáme přestat
- if (bw2002.CancellationPending)
- {
- e.Cancel = true;
- return; //proč je tu tohle?
- }
- HtmlAgilityPack.HtmlDocument dokument = new HtmlAgilityPack.HtmlDocument();
- dokument.Load(file.FullName, System.Text.Encoding.GetEncoding(28592)); //načte dokument se správným kódováním (volby.cz compatible)
- if (dokument.DocumentNode != null)
- {
- //ověření typu dokumentu
- HtmlNode nadpis = dokument.DocumentNode.SelectSingleNode("//h2"); // musí být Výsledky hlasování za územní celky
- HtmlNode citynameinput = dokument.DocumentNode.SelectSingleNode("//h3[last()]"); //prvních 6 znaků poslední H3 musí být obec...
- if (nadpis != null & citynameinput != null)
- {
- if (nadpis.InnerText.Contains("Výsledky hlasování za územní celky") & citynameinput.InnerText.Contains("Obec: "))
- {
- //zjistímě jméno a ID obce
- string cityname = citynameinput.InnerText.ToString();
- cityname = cityname.Replace(" ", " ");
- cityname = cityname.Remove(0, 7);
- cityname = cityname.Remove(cityname.Length - 1, 1);
- int cityid = dbo.getcityid(cityname);
- //zjistíme počet nevoličů
- HtmlNode volicivseznamuinput = dokument.DocumentNode.SelectSingleNode("//div[@class='tabulka1']/table//tr[3]/td[4]");
- HtmlNode platnehlasyinput = dokument.DocumentNode.SelectSingleNode("//div[@class='tabulka1']/table//tr[3]/td[8]");
- string volicivseznamu = volicivseznamuinput.InnerText.ToString();
- string platnehlasy = platnehlasyinput.InnerText.ToString();
- volicivseznamu = volicivseznamu.Replace(" ", string.Empty);
- volicivseznamu = volicivseznamu.Replace(" ", string.Empty);
- platnehlasy = platnehlasy.Replace(" ", string.Empty);
- platnehlasy = platnehlasy.Replace(" ", string.Empty);
- int pocetnevolicu = (Convert.ToInt32(volicivseznamu) - Convert.ToInt32(platnehlasy));
- //zapíšeme počet nevoličů
- if (cityid != -1)
- {
- dbo.zapisvysledek(inputdata.year, cityid, -1, pocetnevolicu); //-1 se interpretuje jako null!
- }
- else
- {
- logsys.WriteLogEntry("Nepodařilo se vytvořit řádek početnevoliču, vynechávám obec!: " + cityid + " : " + cityname + " - " + file.FullName, inputdata.form);
- continue;
- }
- //zjistíme jednotlivé výsledky
- HtmlNodeCollection radkytabulky = dokument.DocumentNode.SelectNodes("//div[@class='tabulka2']//tr");
- foreach (HtmlNode radek in radkytabulky)
- {
- int volebnistrana = -1;
- int pocethlasu = -1;
- HtmlNode stranainput = radek.SelectSingleNode("td[1]");
- if (stranainput != null)
- {
- if (!stranainput.InnerText.ToString().Contains("-"))
- {
- volebnistrana = Convert.ToInt32(stranainput.InnerText.ToString());
- }
- else
- {
- continue;
- }
- }
- else
- {
- continue;
- }
- HtmlNode hlasyinput = radek.SelectSingleNode("td[3]");
- if (hlasyinput != null)
- {
- if (!hlasyinput.InnerText.ToString().Contains("-"))
- {
- string pocethlasuinput = hlasyinput.InnerText.ToString();
- pocethlasuinput = pocethlasuinput.Replace(" ", string.Empty);
- pocethlasuinput = pocethlasuinput.Replace(" ", string.Empty);
- pocethlasu = Convert.ToInt32(pocethlasuinput);
- }
- else
- {
- continue;
- }
- }
- else
- {
- continue;
- }
- //zapíšeme výsledek
- if (cityid != -1 & volebnistrana != -1 & pocethlasu != -1)
- {
- dbo.zapisvysledek(inputdata.year, cityid, volebnistrana, pocethlasu);
- }
- }
- }
- }
- else
- {
- continue;
- }
- }
- p++;
- bw2002.ReportProgress(p);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement