Author: Adam Evyčędo <git@apiote.xyz>
unify feed IDs
traffic/berlin_vbb.go | 26 ++++++++++++++------------ traffic/brussels_stib_mivb.go | 24 ++++++++++++------------ traffic/feeds.go | 8 ++++---- traffic/gzm_ztm.go | 19 +++++++++---------- traffic/krakow_ztp.go | 28 ++++++++++++++-------------- traffic/poznan_ztm.go | 24 ++++++++++++------------
diff --git a/traffic/berlin_vbb.go b/traffic/berlin_vbb.go index 0c8f6ac6cd00c9fce3459cb229e7be5f18b86f2d..a0e3a4da433a73812b26a0c8eeeb4cee50c5fa50 100644 --- a/traffic/berlin_vbb.go +++ b/traffic/berlin_vbb.go @@ -17,20 +17,20 @@ "golang.org/x/text/transform" ) -type VbbBerlin struct { +type BerlinVbb struct { client http.Client } -func (VbbBerlin) getTimezone() *time.Location { +func (BerlinVbb) getTimezone() *time.Location { l, _ := time.LoadLocation("Europe/Berlin") return l } -func (VbbBerlin) ConvertVehicles() ([]Vehicle, error) { +func (BerlinVbb) ConvertVehicles() ([]Vehicle, error) { return []Vehicle{}, nil } -func (z VbbBerlin) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { +func (BerlinVbb) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { versions := []Version{} version, err := MakeVersionTimezone("00010101_99991231", timezone) if err != nil { @@ -41,15 +41,15 @@ versions = append(versions, version) return versions, nil } -func (z VbbBerlin) String() string { +func (BerlinVbb) String() string { return "berlin_vbb" } -func (z VbbBerlin) RealtimeFeeds() map[RealtimeFeedType]string { +func (BerlinVbb) RealtimeFeeds() map[RealtimeFeedType]string { return map[RealtimeFeedType]string{} } -func (z VbbBerlin) LuaUpdatesScript(config.Auth) string { +func (BerlinVbb) LuaUpdatesScript(config.Auth) string { return ` function getUpdates(tripID, sequence) local http = require("http") @@ -62,15 +62,15 @@ end ` } -func (z VbbBerlin) Transformer() transform.Transformer { +func (BerlinVbb) Transformer() transform.Transformer { return transform.Chain(transformers.TransformerDE, transformers.TransformerPL, transformers.TransformerFR) } -func (z VbbBerlin) Name() string { +func (BerlinVbb) Name() string { return "Berlin/Brandenburg VBB" } -func (z VbbBerlin) Flags() FeedFlags { +func (BerlinVbb) Flags() FeedFlags { return FeedFlags{ Headsign: HeadsignTripHeadsing, StopIdFormat: "{{stop_id}}", @@ -79,7 +79,9 @@ LineName: "{{route_short_name}}", } } -func (z VbbBerlin) FeedPrepareZip(path string) error { +func (BerlinVbb) FeedPrepareZip(path string) error { + // TODO remove or fix zones + // NOTE add platform codes from stop_id stopsFile, err := os.Open(filepath.Join(path, "stops.txt")) if err != nil { @@ -204,6 +206,6 @@ } return nil } -func (z VbbBerlin) QRInfo() (string, QRLocation, string) { +func (BerlinVbb) QRInfo() (string, QRLocation, string) { return "qr.bvg.de", QRLocationPath, "/(?<SEL>.*)" } diff --git a/traffic/brussels_stib_mivb.go b/traffic/brussels_stib_mivb.go index 87d17092228fbbda97513539c5317805abcf8705..05f62f4528788ec01d76b774f71225ea34e6ee1a 100644 --- a/traffic/brussels_stib_mivb.go +++ b/traffic/brussels_stib_mivb.go @@ -16,20 +16,20 @@ "golang.org/x/text/transform" "golang.org/x/tools/blog/atom" ) -type StibMivbBrussels struct { +type BrusselsStibMivb struct { client http.Client } -func (StibMivbBrussels) getTimezone() *time.Location { +func (BrusselsStibMivb) getTimezone() *time.Location { l, _ := time.LoadLocation("Europe/Brussels") return l } -func (StibMivbBrussels) ConvertVehicles() ([]Vehicle, error) { +func (BrusselsStibMivb) ConvertVehicles() ([]Vehicle, error) { return []Vehicle{}, nil } -func (z StibMivbBrussels) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { +func (z BrusselsStibMivb) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { url := "https://stibmivb.opendatasoft.com/explore/dataset/gtfs-files-production/atom/" response, err := z.client.Get(url) if err != nil { @@ -51,15 +51,15 @@ versions := []Version{version} return versions, nil } -func (z StibMivbBrussels) String() string { +func (BrusselsStibMivb) String() string { return "brussels_stib_mivb" } -func (z StibMivbBrussels) RealtimeFeeds() map[RealtimeFeedType]string { +func (BrusselsStibMivb) RealtimeFeeds() map[RealtimeFeedType]string { return map[RealtimeFeedType]string{} } -func (z StibMivbBrussels) LuaUpdatesScript(auth config.Auth) string { +func (BrusselsStibMivb) LuaUpdatesScript(auth config.Auth) string { return ` function getUpdates(tripID, sequence, stopID) local http = require("http") @@ -120,15 +120,15 @@ end ` } -func (z StibMivbBrussels) Transformer() transform.Transformer { +func (BrusselsStibMivb) Transformer() transform.Transformer { return transform.Chain(transformers.TransformerFR, transformers.TransformerNL) } -func (z StibMivbBrussels) Name() string { +func (BrusselsStibMivb) Name() string { return "Brussels STIB-MIVB" } -func (z StibMivbBrussels) Flags() FeedFlags { +func (BrusselsStibMivb) Flags() FeedFlags { return FeedFlags{ Headsign: HeadsignTripHeadsing, StopIdFormat: "{{stop_id}}", @@ -137,7 +137,7 @@ LineName: "{{route_short_name}}", } } -func (z StibMivbBrussels) FeedPrepareZip(path string) error { +func (BrusselsStibMivb) FeedPrepareZip(path string) error { // add feed info feedInfoFile, err := os.OpenFile(filepath.Join(path, "feed_info.txt"), os.O_RDWR|os.O_CREATE, 0644) if err != nil { @@ -157,6 +157,6 @@ w.Flush() return nil } -func (z StibMivbBrussels) QRInfo() (string, QRLocation, string) { +func (BrusselsStibMivb) QRInfo() (string, QRLocation, string) { return "", QRLocationNone, "" } diff --git a/traffic/feeds.go b/traffic/feeds.go index 2fff8174fb578beebb06caf581e83a4af55fb9cd..1595b7c3850146216afbc4b8223c5a19100ce2d4 100644 --- a/traffic/feeds.go +++ b/traffic/feeds.go @@ -48,15 +48,15 @@ } func RegisterFeeds() map[string]Feed { return map[string]Feed{ - "poznan_ztm": ZtmPoznan{ + "poznan_ztm": PoznanZtm{ client: http.Client{ Timeout: 30 * time.Second, }, }, - "krakow_ztp": ZtpKrakow{}, + // "krakow_ztp": KrakowZtp{}, "gzm_ztm": GzmZtm{}, - "berlin_vbb": VbbBerlin{}, - "brussels_stib_mivb": StibMivbBrussels{}, + "berlin_vbb": BerlinVbb{}, + "brussels_stib_mivb": BrusselsStibMivb{}, } } diff --git a/traffic/gzm_ztm.go b/traffic/gzm_ztm.go index 9259c7a153c048601fc37c933c5a5c861b377f0c..61c3e374db2e4a01d215013a1f10b7f0af1aa4fb 100644 --- a/traffic/gzm_ztm.go +++ b/traffic/gzm_ztm.go @@ -26,7 +26,7 @@ l, _ := time.LoadLocation("Europe/Warsaw") return l } -func (z GzmZtm) ConvertVehicles() ([]Vehicle, error) { +func (GzmZtm) ConvertVehicles() ([]Vehicle, error) { return []Vehicle{}, nil } @@ -56,31 +56,30 @@ } return versions, nil } -func (z GzmZtm) String() string { +func (GzmZtm) String() string { return "gzm_ztm" } -func (z GzmZtm) RealtimeFeeds() map[RealtimeFeedType]string { +func (GzmZtm) RealtimeFeeds() map[RealtimeFeedType]string { return map[RealtimeFeedType]string{ TRIP_UPDATES: "http://gtfsrt.metropoliagzm.pl:1111/gtfsrt/gzm/all", VEHICLE_POSITIONS: "http://gtfsrt.metropoliagzm.pl:1111/gtfsrt/gzm/all", } - // return map[RealtimeFeedType]string{} } -func (z GzmZtm) LuaUpdatesScript(config.Auth) string { +func (GzmZtm) LuaUpdatesScript(config.Auth) string { return "" } -func (z GzmZtm) Transformer() transform.Transformer { +func (GzmZtm) Transformer() transform.Transformer { return transformers.TransformerPL } -func (z GzmZtm) Name() string { +func (GzmZtm) Name() string { return "Metropolia GZM ZTM" } -func (z GzmZtm) Flags() FeedFlags { +func (GzmZtm) Flags() FeedFlags { return FeedFlags{ Headsign: HeadsignTripLastStop, StopIdFormat: "{{stop_id}}", @@ -89,7 +88,7 @@ LineName: "{{route_long_name}}", } } -func (z GzmZtm) FeedPrepareZip(path string) error { +func (GzmZtm) FeedPrepareZip(path string) error { // rename stops_ext to stops err := os.Remove(filepath.Join(path, "stops.txt")) if err != nil { @@ -252,6 +251,6 @@ } return nil } -func (z GzmZtm) QRInfo() (string, QRLocation, string) { +func (GzmZtm) QRInfo() (string, QRLocation, string) { return "rj.metropoliaztm.pl", QRLocationPath, "/redir/stop/(?<stop>[^/]+)" } diff --git a/traffic/krakow_ztp.go b/traffic/krakow_ztp.go index dc24dfae75ca5b1e0fc90b11e8516640ea013e77..84b7fedd9e3e7a76b8923f4bec3a88899303fcee 100644 --- a/traffic/krakow_ztp.go +++ b/traffic/krakow_ztp.go @@ -10,18 +10,18 @@ "golang.org/x/text/language" "golang.org/x/text/transform" ) -type ZtpKrakow struct{} +type KrakowZtp struct{} -func (ZtpKrakow) getTimezone() *time.Location { +func (KrakowZtp) getTimezone() *time.Location { l, _ := time.LoadLocation("Europe/Warsaw") return l } -func (ZtpKrakow) ConvertVehicles() ([]Vehicle, error) { +func (KrakowZtp) ConvertVehicles() ([]Vehicle, error) { return []Vehicle{}, nil } -func (f ZtpKrakow) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { +func (f KrakowZtp) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { startDate := time.Date(date.Year(), date.Month(), date.Day(), 0, 0, 0, 0, timezone) endDate := time.Date(date.Year(), date.Month(), date.Day(), 23, 59, 59, 0, timezone) v := Version{ @@ -33,7 +33,7 @@ // https://gtfs.ztp.krakow.pl/GTFS_KRK_T.zip return []Version{v}, nil } -func (ZtpKrakow) RealtimeFeeds() map[RealtimeFeedType]string { +func (KrakowZtp) RealtimeFeeds() map[RealtimeFeedType]string { return map[RealtimeFeedType]string{ ALERTS: "https://gtfs.ztp.krakow.pl/ServiceAlerts_A.pb", TRIP_UPDATES: "https://gtfs.ztp.krakow.pl/TripUpdates_A.pb", @@ -43,23 +43,23 @@ //"https://gtfs.ztp.krakow.pl/VehiclePositions_T.pb", } } -func (ZtpKrakow) LuaUpdatesScript(c config.Config) string { +func (KrakowZtp) LuaUpdatesScript(c config.Config) string { return "" } -func (ZtpKrakow) String() string { +func (KrakowZtp) String() string { return "krakow_ztp" } -func (z ZtpKrakow) Transformer() transform.Transformer { +func (z KrakowZtp) Transformer() transform.Transformer { return transformers.TransformerPL } -func (z ZtpKrakow) Name() string { +func (z KrakowZtp) Name() string { return "ZTP Kraków" } -func (z ZtpKrakow) Attribution() map[language.Tag]string { +func (z KrakowZtp) Attribution() map[language.Tag]string { return map[language.Tag]string{ language.Und: "GTFS files downloaded from https://gtfs.ztp.krakow.pl/ and converted to TRAFFIC", language.English: "GTFS files downloaded from https://gtfs.ztp.krakow.pl/ and converted to TRAFFIC", @@ -67,7 +67,7 @@ language.Polish: "Pliki GTFS pobrane z https://gtfs.ztp.krakow.pl/ przekonwertowane do formatu TRAFFIC", } } -func (z ZtpKrakow) Description() map[language.Tag]string { +func (z KrakowZtp) Description() map[language.Tag]string { return map[language.Tag]string{ language.Und: "Buses timetable for Kraków public transport organised by Zarząd Transportu Publicznego (ZTP)", language.English: "Buses timetable for Kraków public transport organised by Zarząd Transportu Publicznego (ZTP)", @@ -77,7 +77,7 @@ language.Polish: "Rozkład jazdy autobusów krakowskiego transportu publicznego organizowanego przez Zarząd Transportu Publicznego (ZTP)", } } -func (z ZtpKrakow) Flags() FeedFlags { +func (z KrakowZtp) Flags() FeedFlags { return FeedFlags{ Headsign: HeadsignTripHeadsing, StopIdFormat: "{{stop_id}}", @@ -86,10 +86,10 @@ LineName: "{{route_short_name}}", } } -func (z ZtpKrakow) FeedPrepareZip(path string) error { +func (z KrakowZtp) FeedPrepareZip(path string) error { return nil } -func (z ZtpKrakow) QRInfo() (string, QRLocation, string) { +func (z KrakowZtp) QRInfo() (string, QRLocation, string) { return "", QRLocationNone, "" } diff --git a/traffic/poznan_ztm.go b/traffic/poznan_ztm.go index 0f027d2b9fbd269a767926f59d0fd26687dbaeab..b953f7f98210b1a04797221ffa7cd994fcb54325 100644 --- a/traffic/poznan_ztm.go +++ b/traffic/poznan_ztm.go @@ -21,16 +21,16 @@ id string class string } -type ZtmPoznan struct { +type PoznanZtm struct { client http.Client } -func (ZtmPoznan) getTimezone() *time.Location { +func (PoznanZtm) getTimezone() *time.Location { l, _ := time.LoadLocation("Europe/Warsaw") return l } -func (z ZtmPoznan) ConvertVehicles() ([]Vehicle, error) { +func (z PoznanZtm) ConvertVehicles() ([]Vehicle, error) { vehicles := []Vehicle{} url := "https://ztm.poznan.pl/en/dla-deweloperow/getGtfsRtFile/?file=vehicle_dictionary.csv" @@ -99,7 +99,7 @@ } return vehicles, nil } -func (z ZtmPoznan) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { +func (z PoznanZtm) GetVersions(date time.Time, timezone *time.Location) ([]Version, error) { url := "https://ztm.poznan.pl/en/dla-deweloperow/gtfsFiles" response, err := z.client.Get(url) if err != nil { @@ -130,30 +130,30 @@ } return versions, nil } -func (z ZtmPoznan) String() string { +func (PoznanZtm) String() string { return "poznan_ztm" } -func (z ZtmPoznan) RealtimeFeeds() map[RealtimeFeedType]string { +func (PoznanZtm) RealtimeFeeds() map[RealtimeFeedType]string { return map[RealtimeFeedType]string{ TRIP_UPDATES: "https://ztm.poznan.pl/en/dla-deweloperow/getGtfsRtFile/?file=feeds.pb", VEHICLE_POSITIONS: "https://ztm.poznan.pl/en/dla-deweloperow/getGtfsRtFile/?file=feeds.pb", } } -func (z ZtmPoznan) LuaUpdatesScript(config.Auth) string { +func (PoznanZtm) LuaUpdatesScript(config.Auth) string { return "" } -func (z ZtmPoznan) Transformer() transform.Transformer { +func (PoznanZtm) Transformer() transform.Transformer { return transformers.TransformerPL } -func (z ZtmPoznan) Name() string { +func (PoznanZtm) Name() string { return "Poznań ZTM" } -func (z ZtmPoznan) Flags() FeedFlags { +func (PoznanZtm) Flags() FeedFlags { return FeedFlags{ Headsign: HeadsignTripHeadsing, StopIdFormat: "{{stop_code}}", @@ -162,10 +162,10 @@ LineName: "{{route_short_name}}", } } -func (z ZtmPoznan) FeedPrepareZip(path string) error { +func (PoznanZtm) FeedPrepareZip(path string) error { return nil } -func (z ZtmPoznan) QRInfo() (string, QRLocation, string) { +func (PoznanZtm) QRInfo() (string, QRLocation, string) { return "www.peka.poznan.pl", QRLocationQuery, "przystanek" }