Skip to content

Commit

Permalink
Probably fixed issue with parsing saturday and week interval
Browse files Browse the repository at this point in the history
  • Loading branch information
wh0o7 committed Dec 16, 2023
1 parent cc711da commit 05b4b32
Showing 1 changed file with 9 additions and 13 deletions.
22 changes: 9 additions & 13 deletions StudentsTimetable/Services/ParseService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,7 @@ public class ParseService : IParseService
private const string StatePath = "last.json";
private static string LastDayHtmlContent { get; set; }
private static string LastWeekHtmlContent { get; set; }

private const int DriverTimeout = 2000;

private bool IsNewInterval;
public string[] Groups { get; init; }

public static List<Day> Timetable { get; set; } = new();
Expand Down Expand Up @@ -73,7 +70,6 @@ public class ParseService : IParseService
private async Task ParseDay()
{
Console.WriteLine("Start parse day");

var groupInfos = new List<GroupInfo>();
var (service, options, delay) = this._firefoxService.Create();
var group = string.Empty;
Expand All @@ -96,7 +92,9 @@ private async Task ParseDay()
_thHeaders.FirstOrDefault(th => th.Contains(day, StringComparison.InvariantCultureIgnoreCase)) ??
day;
var daytime = Utils.ParseDateTime(tempDay.Split(", ")[1].Trim());
if (daytime?.DayOfWeek is DayOfWeek.Saturday && !Utils.IsDateBelongsToInterval(daytime, _weekInterval))
if (daytime?.DayOfWeek is DayOfWeek.Saturday && (daytime.Value != new DateTime().AddDays(1) ||
!Utils.IsDateBelongsToInterval(daytime,
_weekInterval)))
{
Console.WriteLine("End parse day(next saturday)");
await this._botService.SendAdminMessageAsync(new SendMessageArgs(0,
Expand Down Expand Up @@ -264,7 +262,6 @@ private async Task ParseWeek()
using FirefoxDriver driver = new FirefoxDriver(service, options, delay);
driver.Manage().Timeouts().PageLoad.Add(TimeSpan.FromMinutes(2));
var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(120));
IsNewInterval = false;
driver.Navigate().GoToUrl(WeekUrl);
var element = driver.FindElement(By.XPath("/html/body/div[1]/div[2]/div/div[2]/div[1]/div"));
wait.Until(d => element.Displayed);
Expand All @@ -280,20 +277,19 @@ private async Task ParseWeek()
By.XPath("/html/body/div[1]/div[2]/div/div[2]/div[1]/div/h3"));
var weekIntervalStr = h3[0].Text;
var weekInterval = Utils.ParseDateTimeWeekInterval(weekIntervalStr);
var isIsNewInterval = IsNewInterval;
var isNewInterval = false;
if (_weekInterval is null || !string.IsNullOrEmpty(weekIntervalStr) && _weekInterval.Length == 2 &&
weekInterval is not null && weekInterval.Length == 2 && _weekInterval[1] != weekInterval[1])
{
IsNewInterval = _weekInterval is not null;
if (_weekInterval is null || _weekInterval[1] is not null && DateTime.Today == _weekInterval[1])
if (_weekInterval is null || _weekInterval[1] is not null && weekInterval?[1] != null &&
DateTime.Today.AddDays(1) == weekInterval[0]!.Value)
{
_weekInterval = weekInterval;
IsNewInterval = false;
isNewInterval = true;
Console.WriteLine("New interval is " + weekIntervalStr);
this._botService.SendAdminMessage(new SendMessageArgs(0, "New interval is " + weekIntervalStr));
}

isIsNewInterval = !isIsNewInterval && IsNewInterval;
var tempThHeaders = driver
.FindElement(By.XPath("/html/body/div[1]/div[2]/div/div[2]/div[1]/div/div[1]/table/tbody/tr[1]"))
.FindElements(By.TagName("th"));
Expand Down Expand Up @@ -323,7 +319,7 @@ private async Task ParseWeek()
using var image = Image.Load(screenshot.AsByteArray);
image.Mutate(x => x.Resize((int)(image.Width / 1.5), (int)(image.Height / 1.5)));
_ = image.SaveAsync($"./cachedImages/{groupName.Replace("*", "knor")}.png");
if (IsNewInterval)
if (isNewInterval)
foreach (var notificationUser in (await this._mongoService.Database.GetCollection<User>("Users")
.FindAsync(u => u.Groups != null && u.Notifications)).ToList())
notificationUserHashSet.Add(notificationUser);
Expand All @@ -339,7 +335,7 @@ private async Task ParseWeek()
}
}

if (isIsNewInterval)
if (isNewInterval)
_ = Task.Run(() =>
{
foreach (var user in notificationUserHashSet)
Expand Down

0 comments on commit 05b4b32

Please sign in to comment.