using System.Collections.Generic;
using System.Threading.Tasks;
namespace DagRoosterScraper
public class WijzigingInfo
public string wijzigingen;
static async Task<string> GetPage()
HttpClient client = new HttpClient();
var response = await client.GetAsync("https://college.nl/leerlingen/roosters/dagrooster");
return await response.Content.ReadAsStringAsync();
static async Task<string> Say(string inputText)
string apiToken = "1026668706:AAEQPH4w-D0_H6Q9F4Is5OeUA2hfxmbfyls";
string chatId = "-551541836";
string text = System.Net.WebUtility.UrlEncode(inputText);
HttpClient client = new HttpClient();
var response = await client.GetAsync($"https://api.telegram.org/bot{apiToken}/sendMessage?chat_id={chatId}&text={text}");
return await response.Content.ReadAsStringAsync();
public static Stream GenerateStreamFromString(string s)
var stream = new MemoryStream();
var writer = new StreamWriter(stream);
static async Task DoHet()
var pageContents = await GetPage();
var document = await BrowsingContext.New().OpenAsync(m =>
m.Content(pageContents));
var changes = document.QuerySelectorAll("div .snippet.index.w-s-rooster tr");
List<WijzigingInfo> allChanges = new List<WijzigingInfo>();
foreach (var l in changes)
var fields = l.QuerySelectorAll("td");
Console.WriteLine(l.InnerHtml);
var wi = new WijzigingInfo();
wi.klas = fields[0].InnerHtml;
wi.blok = fields[1].InnerHtml;
wi.vak = fields[2].InnerHtml;
wi.vervanger = fields[3].InnerHtml;
wi.lokaal = fields[4].InnerHtml;
wi.wijzigingen = fields[5].InnerHtml;
Console.WriteLine($"Parsed: {wi.klas} {wi.blok} {wi.vak} {wi.vervanger} {wi.lokaal} {wi.wijzigingen}");
if (wi.klas.ToLower().Contains("g1a"))
foreach (var wi in allChanges)
var whattosay = $"{DateTime.Now}\nKlas: {wi.klas}\nBlok: {wi.blok}\nVak: {wi.vak}\nVervanger: {wi.vervanger}\nLokaal: {wi.lokaal}\nWijzigingen: {wi.wijzigingen}";
if (allChanges.Count == 0)
var whattosay = $"{DateTime.Now}\nGeen wijzigingen gevonden.";
await Say($"{DateTime.Now}\nEXCEPTIE: KIJK ONLINE\n{ex.Message}");
public static async Task Main()