Awesome
gtfs-rt-dump
Command-line dumper for GTFS-realtime feeds.
$ java -jar gtfs-rt-dump.jar -h
Usage: gtfs-rt-dump [-hV] [--disable-tls-validation] [-H=<String=String>]...
[-X=<enabledExtensions>]... [-f=<protobufPath> |
-u=<protobufUrl>] [-U=<username> -P=<password>] COMMAND
Parse and display the contents of a GTFS-realtime feed in a human-readable
format.
--disable-tls-validation
Disable all TLS server certificate validation.
-h, --help Show this help message and exit.
-H, --header=<String=String>
Add specified HTTP header to request.
-V, --version Print version information and exit.
-X, --enable-extension=<enabledExtensions>
Enable specified GTFS-rt extensions. Valid values:
OBA, NYCT, LIRR, MNR, MTARR, MERCURY
Input can be read from a file or URL. If neither are specified, standard input
will be used.
-f, --file=<protobufPath> Read GTFS-rt from specified file.
-u, --url=<protobufUrl> Read GTFS-rt from specified URL.
HTTP Basic authentication credentials can be specified if input is read from a
URL.
-P, --password=<password> Password for HTTP Basic authentication
-U, --username=<username> Username for HTTP Basic authentication
Commands:
help Displays help information about the specified command
pbtext Protocol Buffer text format output
table Formatted table output
json JSON output
csv CSV output
If pbtext or formatted table output is selected, the timestamp format can be specified:
$ java -jar gtfs-rt-dump.jar help table
Usage: gtfs-rt-dump table [--timestamp-format=<timestampFormatter>]
Formatted table output
--timestamp-format=<timestampFormatter>
Valid values: POSIX, ISO_8601_LOCAL, ISO_8601_UTC
Usage: gtfs-rt-dump pbtext [--timestamp-format[=<timestampFormatter>]]
Protocol Buffer text format output
--timestamp-format[=<timestampFormatter>]
Valid values: POSIX, ISO_8601_LOCAL, ISO_8601_UTC
To produce formatted timestamps in a timezone other than the OS timezone, set the user.timezone
Java system property:
java -Duser.timezone="US/Pacific" -jar gtfs-rt-dump.jar -u http://api.bart.gov/gtfsrt/tripupdate.aspx pbtext --timestamp-format
For CSV output, a single feed component must be specified for extraction:
% java -jar gtfs-rt-dump.jar help csv
Usage: gtfs-rt-dump csv <selectedFeedPart>
CSV output
<selectedFeedPart> Feed part to extract to CSV. Valid values:
FEED_HEADER, TRIP_UPDATES, VEHICLE_POSITIONS,
ALERTS
Sample usage:
$ java -jar gtfs-rt-dump.jar -u http://api.bart.gov/gtfsrt/tripupdate.aspx pbtext
header {
gtfs_realtime_version: "1.0"
incrementality: FULL_DATASET
timestamp: 1418867234
}
entity {
id: "46DC10"
trip_update {
trip {
trip_id: "46DC10"
}
The JSON output mode can be combined with jq to slice and filter the resulting output:
$ java -jar gtfs-rt-dump.jar -u http://api.bart.gov/gtfsrt/tripupdate.aspx json | jq '[.entity[].tripUpdate | .trip.tripId as $tripId | .stopTimeUpdate[] | {tripId: $tripId, stopId: .stopId, arrival: .arrival.time|todate}] | map(select(.stopId == "EMBR")) | sort_by(.arrival) | .[0:3]'
[
{
"tripId": "4531853SAT",
"stopId": "EMBR",
"arrival": "2020-01-19T03:12:04Z"
},
{
"tripId": "1071858SAT",
"stopId": "EMBR",
"arrival": "2020-01-19T03:16:42Z"
},
{
"tripId": "3611847SAT",
"stopId": "EMBR",
"arrival": "2020-01-19T03:19:57Z"
}
]