首页
/ 推荐:MTA 实时地铁API JSON代理

推荐:MTA 实时地铁API JSON代理

2024-05-24 05:32:33作者:瞿蔚英Wynne

MTAPI是一个小巧的HTTP服务器,它将MTA(纽约大都会运输署)的实时地铁信息源,从Protocol Buffers/GTFS格式转换为JSON。该应用还增加了缓存功能,并支持通过位置和列车线路检索信息。

活跃开发中

该项目正处于活跃的开发阶段,API的任何部分都可能发生变化。我们非常欢迎您的反馈。

运行服务器

MTAPI是一个基于Python 3.3+设计的Flask应用程序。

  1. 创建一个settings.cfg文件,可以参考提供的settings.cfg.sample示例。
  2. 设置环境并安装依赖项。
    $ python3 -m venv .venv
    $ source .venv/bin/activate
    $ python3 -m pip install -r requirements.txt
    
  3. 运行服务器
    $ python app.py
    

如果配置文件名不是settings.cfg,则设置环境变量MTAPI_SETTINGS为你的配置文件路径。

若在uWSGI下运行,请包括--enable-threads标志。

端点

有关获取火车数据及其样本输入和输出的端点列表,请参阅此处

设置选项

  • MTA_KEY (必需)
    在[hhttps://api.mta.info/#/signup]申请的API密钥。 默认:None

  • STATIONS_FILE (必需)
    包含车站信息的JSON文件路径。详情见生成车站文件部分。 默认:None

  • CROSS_ORIGIN
    添加CORS头部到HTTP响应。 默认:在调试模式下为"*",否则为None

  • MAX_TRAINS
    限制每个车站列出的列车数量。 默认:10

  • MAX_MINUTES
    列出的火车信息的时间范围上限。 默认:30

  • CACHE_SECONDS
    应用程序请求MTA API新数据的频率。 默认:60

  • THREADED
    启用后台数据刷新,防止请求因从MTA API获取新数据而挂起。 默认:True

  • DEBUG
    标准Flask选项。开启后将启用增强的日志记录和通配符CORS头。 默认:False

生成车站文件

MTA提供了一些静态数据文件关于地铁系统,但没有包含每个车站的权威信息。MTAPI附带了一个脚本,可以从MTA提供的'stops.txt' 和 'transfers.txt' 数据集中解析数据,并尝试将不同的列车站点归类为地铁站。MTAPI会使用这个JSON文件来获取站名和位置。分类并非完美,鼓励对结果文件进行编辑。

使用方法:

$ python make_stations_csv.py stops.txt transfers.txt > stations.csv
# 编辑stations.csv中的分组
$ python make_stations_json.py stations.csv > stations.json
# 编辑stations.json中的名字

帮助与问题

提交GitHub Issues请求以获得帮助。

相关项目

以下是一些使用MTAPI的项目:

  • http://wheresthefuckingtrain.com

许可证

该项目遵循MIT许可协议。


MTAPI是开发者友好的工具,它简化了与MTA实时数据的交互,无论你是想构建一款方便纽约市民查询地铁状态的应用,还是对公共交通API感兴趣,它都是理想的选择。其轻量级的设计、灵活的配置选项以及易于集成的特点,使得MTAPI成为一个值得尝试的开源项目。立即加入,开启你的地铁数据之旅!

热门项目推荐

项目优选

收起
Python-100-DaysPython-100-Days
Python - 100天从新手到大师
Python
263
53
国产编程语言蓝皮书国产编程语言蓝皮书
《国产编程语言蓝皮书》-编委会工作区
64
16
open-eBackupopen-eBackup
open-eBackup是一款开源备份软件,采用集群高扩展架构,通过应用备份通用框架、并行备份等技术,为主流数据库、虚拟化、文件系统、大数据等应用提供E2E的数据备份、恢复等能力,帮助用户实现关键数据高效保护。
HTML
85
63
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
53
44
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
195
45
HarmonyOS-ExamplesHarmonyOS-Examples
本仓将收集和展示仓颉鸿蒙应用示例代码,欢迎大家投稿,在仓颉鸿蒙社区展现你的妙趣设计!
Cangjie
268
69
xxl-jobxxl-job
XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。
Java
9
0
RuoYi-VueRuoYi-Vue
🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本
Java
171
41
RuoYi-Cloud-Vue3RuoYi-Cloud-Vue3
🎉 基于Spring Boot、Spring Cloud & Alibaba、Vue3 & Vite、Element Plus的分布式前后端分离微服务架构权限管理系统
Vue
38
24
qwerty-learnerqwerty-learner
为键盘工作者设计的单词记忆与英语肌肉记忆锻炼软件 / Words learning and English muscle memory training software designed for keyboard workers
TSX
332
27