private void update_db_Click(object sender, EventArgs e) { Cursor = Cursors.WaitCursor; string filename = Crawler.OSYMdenGetir(); if (filename != null) { Cursor = Cursors.Default; string[] takvimler = Directory.GetFiles(".\\takvim_data", "*.json", SearchOption.AllDirectories); cbTakvimSec.Items.Clear(); foreach (string takvim in takvimler) { FileInfo f_takvim = new FileInfo(takvim); cbTakvimSec.Items.Add(f_takvim.Name); } SinavTakvimi tk = Takvim.DosyadanYukle(filename); this.Text = tk.Baslik + "(" + tk.Donem + ")"; txtDonem.Text = tk.Donem.ToString(); Takvim.Goster(tk, dgvTakvim); MessageBox.Show("Takvim veritabanı güncellendi!", this.Text); } else { Cursor = Cursors.Default; MessageBox.Show("Takvim veritabanı güncelleneMEdi! Lütfen detaylar için günlük kaydına (app.log) bakın.", this.Text); } }
public static SinavTakvimi DosyadanYukle(string filename) { StreamReader sr = new StreamReader(new FileStream(filename, FileMode.Open)); SinavTakvimi sinav_takvimi = JsonConvert.DeserializeObject <SinavTakvimi>(sr.ReadToEnd()); sr.Close(); return(sinav_takvimi); }
private void cbTakvimSec_SelectedIndexChanged(object sender, EventArgs e) { string filename = ".\\takvim_data\\" + cbTakvimSec.SelectedItem.ToString(); SinavTakvimi takvim = Takvim.DosyadanYukle(filename); this.Text = takvim.Baslik + "(" + takvim.Donem + ")"; txtDonem.Text = takvim.Donem.ToString(); StringBuilder sb = new StringBuilder(); foreach (string item in takvim.Uyarilar) { sb.Append(item).Append("\r\n"); } txtUyarilar.Text = sb.ToString(); Takvim.Goster(takvim, dgvTakvim); }
public static void Goster(SinavTakvimi sinav_takvimi, DataGridView gridview) { gridview.Rows.Clear(); gridview.Columns.Clear(); try { List <Sinav> sinavlar = sinav_takvimi.Sinavlar.ToList(); DataGridViewTextBoxColumn sirano_kolonu = new DataGridViewTextBoxColumn(); sirano_kolonu.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; sirano_kolonu.FillWeight = 20; sirano_kolonu.DefaultCellStyle.WrapMode = DataGridViewTriState.True; gridview.Columns.Add(sirano_kolonu); foreach (Kolon kolon in sinav_takvimi.Kolonlar) { DataGridViewTextBoxColumn text_kolonu = new DataGridViewTextBoxColumn(); text_kolonu.Name = kolon.Etiketi; text_kolonu.AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; text_kolonu.DefaultCellStyle.WrapMode = DataGridViewTriState.True; gridview.Columns.Add(text_kolonu); } foreach (Sinav sinav in sinavlar) { int satir_no = gridview.Rows.Add(); DataGridViewRow satir = gridview.Rows[satir_no]; satir.Cells[0].Value = satir_no + 1; satir.Cells[1].Value = sinav.Adi + " (" + sinav.KisaAdi + ")" + "\r\n" + sinav.Aciklama; if (sinav.Tarihi.HasValue) { int zaman_farki = (sinav.Tarihi.Value - DateTime.Now).Days; int zaman_farki_ay = (zaman_farki / 30); string uyari = " ("; if (zaman_farki < 0) { zaman_farki = Math.Abs(zaman_farki); zaman_farki_ay = Math.Abs(zaman_farki_ay); if (zaman_farki < 30) { uyari += zaman_farki + " gün geçmiş)"; } else { uyari += zaman_farki_ay + " ay geçmiş)"; } } else { if (zaman_farki == 0) { uyari += "Sınav bugün!)"; } else if (zaman_farki < 30) { uyari += zaman_farki + " gün var)"; } else { zaman_farki_ay = (zaman_farki / 30); uyari += zaman_farki_ay + " ay var)"; } } satir.Cells[2].Value = sinav.Tarihi.Value.ToShortDateString() + uyari; } if (sinav.Basvuru != null) { foreach (Basvuru basvuru in sinav.Basvuru) { satir.Cells[3].Value += basvuru.Turu + (basvuru.Turu != null ? "\r\n" : ""); int zaman_farki = (basvuru.BaslangicTarihi.Value - DateTime.Now).Days; string uyari = " ("; if (zaman_farki < 0) { uyari += "Başvurular başlamış)"; } else { if (zaman_farki == 0) { uyari += "Bugün başladı!)"; } else if (zaman_farki < 30) { uyari += zaman_farki + " gün var)"; } else { int zaman_farki_ay = (zaman_farki / 30); uyari += zaman_farki_ay + " ay var)"; } } satir.Cells[3].Value += basvuru.BaslangicTarihi.Value.ToShortDateString() + uyari + "\r\n"; zaman_farki = (basvuru.BitisTarihi.Value - DateTime.Now).Days; uyari = " ("; if (zaman_farki < 0) { uyari += "Başvurular bitmiş!)"; } else { if (zaman_farki == 0) { uyari += "Bugün son gün!)"; } else if (zaman_farki < 30) { uyari += zaman_farki + " gün var)"; } else { int zaman_farki_ay = (zaman_farki / 30); uyari += zaman_farki_ay + " ay var)"; } } satir.Cells[3].Value += basvuru.BitisTarihi.Value.ToShortDateString() + uyari + ((basvuru.Turu != null && sinav.Basvuru.Last() != basvuru) ? "\r\n" : ""); } } if (sinav.GecBasvuru != null) { foreach (Basvuru basvuru in sinav.GecBasvuru) { satir.Cells[4].Value += basvuru.Turu + (basvuru.Turu != null ? "\r\n" : ""); int zaman_farki = (basvuru.BaslangicTarihi.Value - DateTime.Now).Days; string uyari = " ("; if (zaman_farki < 0) { uyari += "Başvurular başlamış)"; } else { if (zaman_farki == 0) { uyari += "Bugün başladı!)"; } else if (zaman_farki < 30) { uyari += zaman_farki + " gün var)"; } else { int zaman_farki_ay = (zaman_farki / 30); uyari += zaman_farki_ay + " ay var)"; } } satir.Cells[4].Value += basvuru.BaslangicTarihi.Value.ToShortDateString() + uyari + "\r\n"; zaman_farki = (basvuru.BitisTarihi.Value - DateTime.Now).Days; uyari = " ("; if (zaman_farki < 0) { uyari += "Başvurular bitmiş!)"; } else { if (zaman_farki == 0) { uyari += "Bugün son gün!)"; } else if (zaman_farki < 30) { uyari += zaman_farki + " gün var)"; } else { int zaman_farki_ay = (zaman_farki / 30); uyari += zaman_farki_ay + " ay var)"; } } satir.Cells[4].Value += basvuru.BitisTarihi.Value.ToShortDateString() + uyari + ((basvuru.Turu != null && sinav.GecBasvuru.Last() != basvuru) ? "\r\n" : ""); } } if (sinav.SonucAciklamaTarihi.HasValue) { int zaman_farki = (sinav.SonucAciklamaTarihi.Value - DateTime.Now).Days; string uyari = " ("; if (zaman_farki < 0) { uyari += "Açıklanmış!)"; } else { if (zaman_farki == 0) { uyari += "Bu gün açıklanıyor!)"; } else if (zaman_farki < 30) { uyari += zaman_farki + " gün var)"; } else { int zaman_farki_ay = (zaman_farki / 30); uyari += zaman_farki_ay + " ay var)"; } } satir.Cells[5].Value = sinav.SonucAciklamaTarihi.Value.ToShortDateString() + uyari; } satir.Tag = sinav; } } catch (Exception ex) { Log.e(ex.Message); } }
public static string OSYMdenGetir() { try { HtmlWeb web = new HtmlWeb(); string osym_link = "http://www.osym.gov.tr"; HtmlDocument document = web.Load(osym_link); HtmlNode sinav_takivimi_linki_nodu = document.DocumentNode.SelectSingleNode("//a[@id='DalLink2']"); StringBuilder link_builder = new StringBuilder(); link_builder.Append(osym_link); link_builder.Append(sinav_takivimi_linki_nodu.Attributes["href"].Value); HtmlDocument takvim_document = web.Load(link_builder.ToString()); string takvim_basligi = takvim_document.DocumentNode.SelectSingleNode("//div[@id='upTakvim']/div/div[1]/h1").InnerText.Trim(); HtmlNode[] takvim_tablosu = takvim_document.DocumentNode.SelectNodes("//div[@id='pnlSinavTakvimiBaslik']/following-sibling::div[@class='row']").ToArray(); HtmlNode[] uyarilar = takvim_document.DocumentNode.SelectNodes("//div[@id='upTakvim']/div/div[3]/p").ToArray(); SinavTakvimi sinav_takvimi = new SinavTakvimi(); sinav_takvimi.Baslik = takvim_basligi; HtmlNode baslik_satiri = takvim_document.DocumentNode.SelectNodes("//div[@id='pnlSinavTakvimiBaslik']//div").FirstOrDefault(); //q_takvim_tablosu.Dequeue(); int baslik_say = baslik_satiri.ChildNodes.Count; List <Kolon> kolonlar = new List <Kolon>(); foreach (HtmlNode baslik in baslik_satiri.ChildNodes) { string baslik_text = baslik.InnerText.Trim(); if (!baslik_text.Equals(string.Empty)) { Log.i("Başlık Etiketi: " + baslik_text, false); string baslik_adi = baslik_text.ToLower() .Replace('*', ' ').Trim() .Replace('ğ', 'g') .Replace('ü', 'u') .Replace('ş', 's') .Replace('ı', 'i') .Replace('ö', 'o') .Replace('ç', 'c') .Replace('-', '_') .Replace(' ', '_'); Log.i("Başlık Adı: " + baslik_adi, false); kolonlar.Add(new Kolon() { Adi = baslik_adi, Etiketi = baslik_text }); } } Log.i("Başlık Kolonları sayısı: " + kolonlar.Count, false); sinav_takvimi.Kolonlar = kolonlar; List <Sinav> sinavlar = new List <Sinav>(); foreach (HtmlNode item in takvim_tablosu) { if (item.ChildNodes.Count > 1) { Sinav sinav = new Sinav(); HtmlNode[] sutunlar = item.Elements("div").ToArray(); HtmlNode sinavin_adi_nodu = sutunlar[0]; HtmlNode sinavin_tarihi_nodu = sutunlar[1]; HtmlNode basvuru_nodu = sutunlar[2]; HtmlNode gec_basvuru_nodu = sutunlar[3]; HtmlNode sonuc_tarihi_nodu = sutunlar[4]; sinav.Adi = sinavin_adi_nodu.SelectSingleNode(".//br/following-sibling::text()[1]").InnerText.Trim(); sinav.KisaAdi = sinavin_adi_nodu.Element("strong").InnerText.Trim(); sinav.Aciklama = sinavin_adi_nodu.SelectSingleNode(".//br/following-sibling::text()[2]").InnerText.Trim(); sinav.Baglanti = osym_link + sinavin_adi_nodu.Element("strong").Element("a").Attributes["href"].Value; if (!sinavin_tarihi_nodu.InnerText.Trim().Equals(String.Empty)) { sinav.Tarihi = DateTime.Parse(sinavin_tarihi_nodu.InnerText.Trim()); } else { sinav.Tarihi = null; } if (!basvuru_nodu.InnerText.Trim().Equals(String.Empty)) { Basvuru basvuru = new Basvuru(); string basvuru_baslangic_tarihi = basvuru_nodu.SelectSingleNode(".//br/preceding-sibling::text()").InnerText.Trim(); string basvuru_bitis_tarihi = basvuru_nodu.SelectSingleNode(".//br/following-sibling::text()").InnerText.Trim(); basvuru.BaslangicTarihi = DateTime.Parse(basvuru_baslangic_tarihi); basvuru.BitisTarihi = DateTime.Parse(basvuru_bitis_tarihi); sinav.Basvuru = new List <Basvuru>() { basvuru }; } else { sinav.Basvuru = null; } if (!gec_basvuru_nodu.InnerText.Trim().Equals(String.Empty)) { Basvuru gecbasvuru = new Basvuru(); string gec_basvuru_baslangic_tarihi = gec_basvuru_nodu.SelectSingleNode(".//br/preceding-sibling::text()").InnerText.Trim(); string gec_basvuru_bitis_tarihi = gec_basvuru_nodu.SelectSingleNode(".//br/following-sibling::text()").InnerText.Trim(); gecbasvuru.BaslangicTarihi = DateTime.Parse(gec_basvuru_baslangic_tarihi); gecbasvuru.BitisTarihi = DateTime.Parse(gec_basvuru_bitis_tarihi); sinav.GecBasvuru = new List <Basvuru>() { gecbasvuru }; } else { sinav.GecBasvuru = null; } if (!sonuc_tarihi_nodu.InnerText.Trim().Equals(String.Empty)) { sinav.SonucAciklamaTarihi = DateTime.Parse(sonuc_tarihi_nodu.InnerText.Trim()); } else { sinav.SonucAciklamaTarihi = null; } sinavlar.Add(sinav); } } sinav_takvimi.Sinavlar = sinavlar; List <string> uyarilar_list = new List <string>(); foreach (HtmlNode node in uyarilar) { string uyari = node.InnerText.Trim(); uyarilar_list.Add(uyari); } sinav_takvimi.Uyarilar = uyarilar_list; string filename = ".\\takvim_data\\"; filename += string.Format("sinav-takvimi-{0}.json", sinav_takvimi.Donem); string json = JsonConvert.SerializeObject(sinav_takvimi); StreamWriter sw = new StreamWriter(new FileStream(filename, FileMode.Create)); sw.Write(json); sw.Close(); Log.i("Takvim başarılı bir şekilde güncellendi." + String.Format("Dönem ({0})", sinav_takvimi.Donem), true); return(filename); } catch (Exception ex) { Log.e(ex.Message); } return(null); }