Author: Adam Evyčędo <git@apiote.xyz>
enrich departures based on both stop ID and code
traffic/access.go | 2 +- traffic/berlin_vbb.go | 20 ++++++++++++-------- traffic/realtime.go | 6 +++--- traffic/realtime_gtfs.go | 2 +- traffic/realtime_lua.go | 4 ++--
diff --git a/traffic/access.go b/traffic/access.go index 94cb4c8665c441e0c36c56ad258368fa1106220e..df57e9e8eeaab141f3c6ea55f58f7e849d49fcd2 100644 --- a/traffic/access.go +++ b/traffic/access.go @@ -278,7 +278,7 @@ } func makeDeparturesRealtime(input ...interface{}) (interface{}, error) { result := input[0].(_Result) - departures, err := enrichDepartures(result.Stop.Id, result.Departures, result.Datetime, result.DeparturesType, result.Ctx, result.TripsFile, result.Location) + departures, err := enrichDepartures(result.Stop.Id, result.Stop.Code, result.Departures, result.Datetime, result.DeparturesType, result.Ctx, result.TripsFile, result.Location) result.TripsFile.Close() result.Departures = departures return result, err diff --git a/traffic/berlin_vbb.go b/traffic/berlin_vbb.go index 453d7f114449eece4a9f712f71ba9e17e2c23748..ad77afbb55e4400c2cff69cc85deb48b020c7ec4 100644 --- a/traffic/berlin_vbb.go +++ b/traffic/berlin_vbb.go @@ -66,28 +66,32 @@ message="", willNextRequestFail=false } - ibnr = "" + platform = "" + dhid = "" i = 0 - for m in string.gmatch(stopID, "([^:]+)") do - if i == 2 then - ibnr = m + for m in string.gmatch(stopID, "([^_]+)") do + if i == 0 then + dhid = m + end + if i == 1 then + platform = m break end i = i+1 end - platform = "" + ibnr = "" i = 0 - for m in string.gmatch(stopID, "([^_]+)") do + for m in string.gmatch(dhid, "([^:]+)") do if i == 2 then - platform = m + ibnr = m break end i = i+1 end response, error_message = http.get("https://v6.vbb.transport.rest/stops/" .. ibnr .. "/departures", { - query="duration=30&results=24&pretty=false", + query="duration=60&results=144&pretty=false", timeout="30s" }) diff --git a/traffic/realtime.go b/traffic/realtime.go index 25c5424a7b547935cc36b1c622d4997baed64a91..9b1ecc67884bff3ecd0fe9503d0f0535fd522eca 100644 --- a/traffic/realtime.go +++ b/traffic/realtime.go @@ -93,7 +93,7 @@ return departures, nil } -func enrichDepartures(stopID string, departures []DepartureRealtime, datetime time.Time, departuresType DeparturesType, ctx Context, tripsFile *os.File, timezone *time.Location) ([]DepartureRealtime, error) { // TODO tripsFile -> map[tripOffset]tripID +func enrichDepartures(stopID string, stopCode string, departures []DepartureRealtime, datetime time.Time, departuresType DeparturesType, ctx Context, tripsFile *os.File, timezone *time.Location) ([]DepartureRealtime, error) { // TODO tripsFile -> map[tripOffset]tripID enrichedDepartures := make([]DepartureRealtime, len(departures)) feedInfo, err := getFeedInfo(ctx.DataHome, ctx.FeedID, ctx.Version) @@ -102,7 +102,7 @@ log.Printf("while getting feedInfo: %v\n", err) feedInfo = FeedInfo{} } - var enrichMethod func(string, int, string, Context) (map[string]Update, bool, error) + var enrichMethod func(string, int, string, string, Context) (map[string]Update, bool, error) if feedInfo.Name != "" { if _, ok := feedInfo.RealtimeFeeds[TRIP_UPDATES]; ok { enrichMethod = getGtfsRealtimeUpdates @@ -136,7 +136,7 @@ updates map[string]Update areTripsInTimetable bool ) if enrichMethod != nil { - updates, areTripsInTimetable, err = enrichMethod(trips[departure.Order.TripOffset].Id, departure.Order.Sequence, stopID, ctx) + updates, areTripsInTimetable, err = enrichMethod(trips[departure.Order.TripOffset].Id, departure.Order.Sequence, stopID, stopCode, ctx) if err != nil { var ber BlockingError if isTimeout(err) || errors.As(err, &ber) || strings.Contains(err.Error(), "connection refused") { // TODO or any other connection problem diff --git a/traffic/realtime_gtfs.go b/traffic/realtime_gtfs.go index d16d3ae780368b559c0823dd385ee7b6e093c0a5..3133ee7d0beccfb82ec15d1e4fc736f0ef21935d 100644 --- a/traffic/realtime_gtfs.go +++ b/traffic/realtime_gtfs.go @@ -203,7 +203,7 @@ } return nil } -func getGtfsRealtimeUpdates(_ string, _ int, _ string, ctx Context) (map[string]Update, bool, error) { +func getGtfsRealtimeUpdates(_ string, _ int, _ string, _ string, ctx Context) (map[string]Update, bool, error) { feedInfo, err := getFeedInfo(ctx.DataHome, ctx.FeedID, ctx.Version) if err != nil { return map[string]Update{}, true, fmt.Errorf("while getting feedInfo: %w", err) diff --git a/traffic/realtime_lua.go b/traffic/realtime_lua.go index 740e8de6fb9220008be0782e488e709c06e31207..854a5d078bed31e7fc8571b3379020007f87b059 100644 --- a/traffic/realtime_lua.go +++ b/traffic/realtime_lua.go @@ -42,7 +42,7 @@ func getLuaVehiclesPath(context Context) string { return filepath.Join(context.DataHome, context.FeedID, string(context.Version), "vehicles.lua") } -func getLuaRealtimeUpdates(_ string, _ int, stopID string, ctx Context) (map[string]Update, bool, error) { +func getLuaRealtimeUpdates(_ string, _ int, stopID, stopCode string, ctx Context) (map[string]Update, bool, error) { luaUpdates := LuaUpdates{} luaError := LuaError{} filePath := getLuaUpdatesPath(ctx) @@ -69,7 +69,7 @@ if err := l.CallByParam(lua.P{ Fn: l.GetGlobal("getUpdates"), NRet: 2, Protect: true, - }, lua.LString(""), lua.LNumber(0), lua.LString(stopID)); err != nil { + }, lua.LString(""), lua.LNumber(0), lua.LString(stopCode)); err != nil { return map[string]Update{}, true, fmt.Errorf("while executing updates function: %w", err) } luaErr := l.Get(-1)