#alert #protobuf #metro #la #service #convert #feed

bin+lib lacmta-alerts-protobuf

将洛杉矶地铁服务警报抓取并转换为 Protobuf 格式

2 个不稳定版本

0.2.0 2023年7月25日
0.1.0 2023年7月23日

<#15>在#la

AGPL-3.0-only

28KB
348

洛杉矶 Protobuf 警报

洛杉矶地铁没有以 Protobuf 格式与公众分享警报。然而,服务警报页面的 JSON 格式似乎兼容。它以 JSON 格式呈现。我能够使用 gtfs_rt crate 将其转换为 Protobuf。

项目在63小时后过时,洛杉矶地铁通过发布 https://s3.amazonaws.com/la-alerts-prod/alerts.pb 🎉🎉🎉🎉🎉 响应。

我的版本的数据流托管在

https://kactusapi.kylerchin.com/gtfsrt/?feed=f-metro~losangeles~bus~rt&category=alerts

https://kactusapi.kylerchin.com/gtfsrt/?feed=f-metro~losangeles~rail~rt&category=alerts

可读的 JSON

https://kactusapi.kylerchin.com/gtfsrtasjson/?feed=f-metro~losangeles~bus~rt&category=alerts https://kactusapi.kylerchin.com/gtfsrtasjson/?feed=f-metro~losangeles~rail~rt&category=alerts

运行二进制文件

运行时 bin/main.rs 是一个脚本,每10秒运行一次 req_into_split_feeds_bytes(),并将压缩的 protobuf 字节插入到 redis 键 gtfsrt|f-metro~losangeles~rail~rt|alertsgtfsrt|f-metro~losangeles~rail~rt|alerts

这与 kylerchin/kactus-gtfs-rt 服务器兼容。可以使用 kactus 服务器将其作为 Web API 发布。

在自己的项目中使用原始函数

如果您想将此集成到自己的项目中而不使用 Redis 缓存,以下是该库中的函数。

download_to_structure() 将整个警报放入单个 gtfs_rt::FeedMessage

req_into_split_feeds() 调用 download_to_structure() 并将其拆分为结构体

pub struct SplitFeeds {
    pub bus: gtfs_rt::FeedMessage,
    pub rail: gtfs_rt::FeedMessage,
}

req_into_split_feeds_bytes() 调用 req_into_split_feeds() 但它是压缩的 protobuf 版本

pub struct split_feeds_bytes {
    pub bus: Vec<u8>,
    pub rail: Vec<u8>,
}

依赖项

~12–27MB
~445K SLoC