szczanieckiej.git

commit 8732ff46d43d37455eafc18dcebfab3c58138215

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)