Browse Source

Add support to cancelled trains

master
Kenneth Bruen 2 years ago
parent
commit
a9ade801ac
Signed by: kbruen
GPG Key ID: C1980A470C3EE5B1
  1. 2
      scraper/src/Models/Station.cs
  2. 12
      scraper/src/Scrapers/Station.cs
  3. 35
      scraper/src/Utils/RoLettersToEn.cs

2
scraper/src/Models/Station.cs

@ -38,6 +38,7 @@ namespace InfoferScraper.Models.Station {
public interface IStationStatus : IStatus { public interface IStationStatus : IStatus {
new int Delay { get; } new int Delay { get; }
new bool Real { get; } new bool Real { get; }
public bool Cancelled { get; }
public string? Platform { get; } public string? Platform { get; }
} }
@ -102,6 +103,7 @@ namespace InfoferScraper.Models.Station {
internal record StationStatus : IStationStatus { internal record StationStatus : IStationStatus {
public int Delay { get; internal set; } public int Delay { get; internal set; }
public bool Real { get; internal set; } public bool Real { get; internal set; }
public bool Cancelled { get; internal set; }
public string? Platform { get; internal set; } public string? Platform { get; internal set; }
} }

12
scraper/src/Scrapers/Station.cs

@ -170,8 +170,16 @@ namespace InfoferScraper.Scrapers {
.Text() .Text()
.WithCollapsedSpaces() .WithCollapsedSpaces()
).Groups as IEnumerable<Group>).Skip(1).Select(group => group.Value); ).Groups as IEnumerable<Group>).Skip(1).Select(group => group.Value);
arrDep.ModifyableStatus.Real = string.IsNullOrEmpty(approx); if (delayMin is null && delayDiv.Text().WithCollapsedSpaces() == "anulat") {
arrDep.ModifyableStatus.Delay = delayMin.Length == 0 ? 0 : int.Parse(delayMin); arrDep.ModifyableStatus.Cancelled = true;
}
else if (delayMin is null) {
throw new Exception($"Unexpected delayDiv value: {delayDiv.Text().WithCollapsedSpaces()}");
}
else {
arrDep.ModifyableStatus.Real = string.IsNullOrEmpty(approx);
arrDep.ModifyableStatus.Delay = delayMin.Length == 0 ? 0 : int.Parse(delayMin);
}
if (statusDivComponents.Length < 2) return; if (statusDivComponents.Length < 2) return;

35
scraper/src/Utils/RoLettersToEn.cs

@ -1,24 +1,23 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Runtime.InteropServices.ComTypes;
namespace InfoferScraper { namespace InfoferScraper;
public static partial class Utils {
private static readonly Dictionary<char, char> RoToEn = new() {
{ 'ă', 'a' },
{ 'Ă', 'A' },
{ 'â', 'a' },
{ 'Â', 'A' },
{ 'î', 'i' },
{ 'Î', 'I' },
{ 'ș', 's' },
{ 'Ș', 'S' },
{ 'ț', 't' },
{ 'Ț', 'T' },
};
public static string RoLettersToEn(this string str) { public static partial class Utils {
return string.Concat(str.Select(letter => RoToEn.GetValueOrDefault(letter, letter))); private static readonly Dictionary<char, char> RoToEn = new() {
} { 'ă', 'a' },
{ 'Ă', 'A' },
{ 'â', 'a' },
{ 'Â', 'A' },
{ 'î', 'i' },
{ 'Î', 'I' },
{ 'ș', 's' },
{ 'Ș', 'S' },
{ 'ț', 't' },
{ 'Ț', 'T' },
};
public static string RoLettersToEn(this string str) {
return string.Concat(str.Select(letter => RoToEn.GetValueOrDefault(letter, letter)));
} }
} }
Loading…
Cancel
Save