Implemented update, added a lot of things
This commit is contained in:
parent
a62784037d
commit
6331bf14a0
5 changed files with 75 additions and 10 deletions
|
@ -1,8 +1,10 @@
|
||||||
using HtmlAgilityPack;
|
using HtmlAgilityPack;
|
||||||
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using System.Xml.Linq;
|
using System.Xml.Linq;
|
||||||
|
@ -25,15 +27,63 @@ namespace Orarend
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <para>Visszatér az osztályok listájával, egy-egy kételemű tömbbel, az első elem az azonosító, a második a megjelenített név.</para>
|
/// <para>Visszatér az osztályok listájával, egy-egy kételemű tömbbel, az első elem az azonosító, a második a megjelenített név.</para>
|
||||||
|
/// <para>Lehet null, ha még nem volt sikeres <see cref="Frissítés"/>.</para>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public static async Task<IEnumerable<string[]>> Osztályok()
|
public static IEnumerable<string[]> Osztályok { get; set; }
|
||||||
{ //TODO: Tárolja el az adatokat, és csak külön hívásra frissítse; csak a frissítés legyen async, ezek nem
|
private static Órarend aktuálisÓrarend;
|
||||||
|
public static async Task Frissítés()
|
||||||
|
{
|
||||||
|
aktuálisÓrarend = new Órarend { OsztályID = "12.b|2" }; //TODO: TMP
|
||||||
HtmlDocument doc = new HtmlDocument();
|
HtmlDocument doc = new HtmlDocument();
|
||||||
var req = WebRequest.CreateHttp("http://deri.enaplo.net/ajax/orarend/orarendoszt.php");
|
var req = WebRequest.CreateHttp("http://deri.enaplo.net/ajax/orarend/orarendoszt.php" + (aktuálisÓrarend == null ? "" : "?p=" + Uri.EscapeDataString(aktuálisÓrarend.OsztályID)));
|
||||||
var resp = await req.GetResponseAsync();
|
var resp = await req.GetResponseAsync();
|
||||||
doc.Load(resp.GetResponseStream());
|
await Task.Run(() =>
|
||||||
return doc.GetElementbyId("uok").ChildNodes.Where(node => node.HasAttributes).Select(node => new string[] { node.GetAttributeValue("value", ""), node.InnerText });
|
{
|
||||||
|
using (var sr = new StreamReader(resp.GetResponseStream()))
|
||||||
|
doc.LoadHtml(Regex.Replace(Regex.Replace(sr.ReadToEnd(), "<th([^>]*)>((?:\\w|[áéóüöőúű.])+)(?=<)(?!\\/)", "<th$1>$2</th><"), "(?<!\\/tr\\>)\\<tr\\>", "</tr><tr>")); //TODO
|
||||||
|
Osztályok = doc.GetElementbyId("uok").ChildNodes.Where(node => node.HasAttributes).Select(node => new string[] { node.GetAttributeValue("value", ""), node.NextSibling.InnerText });
|
||||||
|
if (aktuálisÓrarend != null)
|
||||||
|
{
|
||||||
|
bool ahét = true;
|
||||||
|
foreach (var node in doc.GetElementbyId("oda").FirstChild.FirstChild.ChildNodes[1].ChildNodes)
|
||||||
|
{
|
||||||
|
switch (node.FirstChild.InnerText)
|
||||||
|
{
|
||||||
|
case "A":
|
||||||
|
ahét = true;
|
||||||
|
break;
|
||||||
|
case "B":
|
||||||
|
ahét = false;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
int x = int.Parse(node.FirstChild.InnerText) - 1;
|
||||||
|
aktuálisÓrarend.Órakezdetek[x] = TimeSpan.Parse(node.FirstChild.Attributes["title"].Value.Split('-')[0].Trim());
|
||||||
|
for (int i = 0; i < 5; i++) //Napok
|
||||||
|
{ //TODO: for ciklus az egy időben tartott órákhoz
|
||||||
|
var óranode = node.ChildNodes[i + 1].FirstChild;
|
||||||
|
var csoportok = óranode.FirstChild.InnerText.TrimEnd(':');
|
||||||
|
var óra = (ahét ? aktuálisÓrarend.ÓrákAHét : aktuálisÓrarend.ÓrákBHét)[i, x];
|
||||||
|
if (óra == null)
|
||||||
|
óra = new Óra();
|
||||||
|
óra.Sorszám = x + 1;
|
||||||
|
óra.Csoportok = csoportok;
|
||||||
|
óra.Név = óranode.ChildNodes[2].Attributes["title"].Value;
|
||||||
|
óra.Azonosító = óranode.ChildNodes[2].InnerText;
|
||||||
|
óra.Terem = óranode.ChildNodes[3].InnerText.Trim(' ', '(', ')');
|
||||||
|
óra.Tanár = new Tanár
|
||||||
|
{
|
||||||
|
Azonosító = óranode.ChildNodes[4].InnerText,
|
||||||
|
Név = óranode.ChildNodes[4].Attributes["title"].Value
|
||||||
|
};
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Orarend
|
namespace Orarend
|
||||||
{
|
{
|
||||||
public class Tanár
|
public struct Tanár
|
||||||
{
|
{
|
||||||
public string Azonosító { get; set; }
|
public string Azonosító { get; set; }
|
||||||
public string Név { get; set; }
|
public string Név { get; set; }
|
||||||
|
|
|
@ -13,6 +13,9 @@ namespace Orarend
|
||||||
public Tanár Tanár { get; set; }
|
public Tanár Tanár { get; set; }
|
||||||
public int Sorszám { get; set; }
|
public int Sorszám { get; set; }
|
||||||
public string Terem { get; set; }
|
public string Terem { get; set; }
|
||||||
public string Csoport { get; set; }
|
/// <summary>
|
||||||
|
/// Az órán résztvevő csoportok, pluszjelekkel elválasztva
|
||||||
|
/// </summary>
|
||||||
|
public string Csoportok { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,18 @@ namespace Orarend
|
||||||
{
|
{
|
||||||
public class Órarend
|
public class Órarend
|
||||||
{
|
{
|
||||||
public Dictionary<char, List<Óra>> Órák { get; set; }
|
/// <summary>
|
||||||
|
/// Egy 6x16 2D tömb, az első koordináta a nap indexe, a második az óráé
|
||||||
|
/// </summary>
|
||||||
|
public Óra[,] ÓrákAHét { get; } = new Óra[6, 16];
|
||||||
|
public Óra[,] ÓrákBHét { get; } = new Óra[6, 16];
|
||||||
public string Név { get; set; }
|
public string Név { get; set; }
|
||||||
|
public string OsztályID { get; set; }
|
||||||
|
public string OsztályNév { get; set; }
|
||||||
|
/// <summary>
|
||||||
|
/// Egy 16 elemű tömb az órák kezdő időpontjaival
|
||||||
|
/// </summary>
|
||||||
|
public TimeSpan[] Órakezdetek { get; } = new TimeSpan[16];
|
||||||
|
public List<string> Csoportok { get; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace OrarendAndroidApp
|
||||||
table.AddView(tr1);
|
table.AddView(tr1);
|
||||||
}*/
|
}*/
|
||||||
TableRow tr = new TableRow(this);
|
TableRow tr = new TableRow(this);
|
||||||
API.Osztályok().ContinueWith(t =>
|
/*API.Osztályok().ContinueWith(t =>
|
||||||
{
|
{
|
||||||
handler.Post(() =>
|
handler.Post(() =>
|
||||||
{
|
{
|
||||||
|
@ -49,7 +49,8 @@ namespace OrarendAndroidApp
|
||||||
addCell(osztály[0], Color.Aqua, tr);
|
addCell(osztály[0], Color.Aqua, tr);
|
||||||
table.AddView(tr);
|
table.AddView(tr);
|
||||||
});
|
});
|
||||||
});
|
});*/
|
||||||
|
API.Frissítés();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue