Skip to content
Snippets Groups Projects
Commit 7550b6ac authored by Jiří Kalvoda's avatar Jiří Kalvoda
Browse files

Parsers: CD_speed and CD_next_stop

parent d8b6763d
No related branches found
No related tags found
No related merge requests found
......@@ -319,3 +319,70 @@ class ParserICENextStop: Parser
}
#pragma warning restore 8602
}
[ParserName("CD_speed")]
class ParserCDSpeed: Parser
{
#pragma warning disable 8602
public void Init(ModuleParent _bar, Module _module, ConfigSection section)
{
}
public IEnumerable<Block> Parse(string data)
{
try
{
JsonObject json = JsonObject.Parse(data).AsObject();
return new Block[]{new Block($"{json["speed"].GetValue<double>()} km/h", Color: Color.White)};
}
catch(Exception e)
{
Console.Error.WriteLine(e);
return new Block[]{new Block("Speed PE", Color: Color.Red)};
}
}
#pragma warning restore 8602
}
[ParserName("CD_next_stop")]
class ParserCDNextStop: Parser
{
#pragma warning disable 8602
public void Init(ModuleParent _bar, Module _module, ConfigSection section)
{
}
public IEnumerable<Block> Parse(string data)
{
try
{
string[] lines = data.Split("\n");
JsonObject delayJson = JsonObject.Parse(lines[1]).AsObject();
int delay_min = delayJson.AsObject()["delay"]?.GetValue<int>() ?? 0;
JsonObject json = JsonObject.Parse(lines[0]).AsObject();
JsonObject nextStop = null;
foreach(var s in json["connexionTimes"].AsArray())
{
string arrivalTime = s.AsObject()["timeArrival"]?.GetValue<string>();
if(arrivalTime != null)
{
var arrival = DateTime.Parse(arrivalTime);
if(arrival.AddMinutes(delay_min) >= DateTime.Now)
{
nextStop = s.AsObject();
break;
}
}
}
string nextStopName = nextStop["station"].AsObject()["name"].GetValue<string>();
DateTime nextStopArrival = DateTime.Parse(nextStop.AsObject()["timeArrival"]?.GetValue<string>()).AddMinutes(delay_min);
long arrivalIn = (long)(nextStopArrival - DateTime.Now).TotalSeconds;
string delayStr = delay_min==0?"":$" ({TimeShow.WithSign(delay_min * 60)})";
return new Block[]{new Block($"{nextStopName} in {TimeShow.Show(arrivalIn)}"+delayStr, Color: Color.White)};
}
catch(Exception e)
{
Console.Error.WriteLine(e);
return new Block[]{new Block("CD PE", Color: Color.Red)};
}
}
#pragma warning restore 8602
}
......@@ -417,3 +417,27 @@ error_handler =
period = 20
show_old = 60
max_old = 300
# Parser: CD_speed and CD_next_stop
# -----------------------------------
# Show information about the speed or next stop and delay for České dráhy trains.
# Example usage:
[CD_speed]
_type=http
url = http://cdwifi.cz/portal/api/vehicle/realtime
period = 5
show_old = 20
max_old = 120
error_handler =
no_data_handler =
_exec = chromium http://cdwifi.cz
[CD_next_stop]
_type=http_multi
urls = http://cdwifi.cz/portal/api/timetable/connexion/current?locale=cs_CZ
http://cdwifi.cz/portal/api/vehicle/realtime
error_handler =
period = 20
show_old = 60
max_old = 300
_exec = chromium http://cdwifi.cz
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment