linz-public-transport

🚊 林茨公交实时查询助手

🥥10总安装量 2评分人数 2
100% 的用户推荐

基于林茨公共交通官方EFA接口的实时查询工具,零依赖Python标准库实现,为奥地利林茨地区用户提供精准的站点搜索与班次到站信息。

A

基本安全,请在特定环境下使用

  • 来自社区或个人来源,建议先隔离验证
  • ✅ 零危险函数:未使用 eval/exec/subprocess 等代码执行函数,无注入攻击面
  • ✅ 零外部依赖:仅使用 Python 标准库,供应链攻击风险极低
  • ✅ 输入验证完善:argparse 类型检查 + urllib.parse 安全编码,参数处理可靠
  • ⚠️ 默认 HTTP 协议:虽功能正常,但建议配置 HTTPS 端点以防范中间人攻击
  • ⚠️ 个人开发者来源:代码经审计安全,但长期维护与更新需关注上游仓库动态

使用说明

核心用法

Linz Public Transport Skill 是一款专为奥地利林茨(Linz)地区设计的公共交通查询工具,通过调用 Linz Linien 官方 EFA(Elektronische Fahrplan-Auskunft)接口,实现站点搜索与实时到站信息查询两大核心功能。

该 Skill 提供三种主要使用模式:

  • 站点搜索模式:通过 stops 子命令,根据关键词(如 "taubenmarkt")模糊匹配公交站点,返回站点ID、名称及坐标信息
  • 班次查询模式:通过 departures 子命令,基于精确的站点ID获取未来出发班次,支持自定义返回数量限制
  • 一键查询模式:通过 next 子命令,将站点搜索与班次查询合并为单次调用,适合快速获取"下一站还有多久"的场景

技术实现上,该 Skill 采用纯 Python 3 标准库编写,无需任何第三方依赖。网络层基于 urllib.request 实现 HTTP GET 请求,数据解析使用标准 json 模块,参数处理通过 argparse 完成。执行脚本路径为 {baseDir}/scripts/linz_transport.py,支持通过命令行参数 --base-url 或环境变量 LINZ_TRANSPORT_API_BASE_URL 自定义 API 端点,默认指向 http://www.linzag.at/linz2

显著优点

极致轻量与可移植性:零外部依赖的设计使其可在任何 Python 3 环境中直接运行,无需 pip 安装,极大降低了部署门槛和供应链攻击风险。

安全架构设计:代码层面完全规避了 evalexecsubprocess 等危险函数,所有用户输入均经过 argparse 类型验证和 urllib.parse.urlencode 安全编码,从根本上杜绝代码注入与命令注入风险。

完善的容错机制:针对网络超时、HTTP 错误状态码、JSON 解析异常、空结果集等边界情况均设计了优雅降级策略,包括自动重试建议、模糊匹配提示、空结果友好说明等。

输出格式标准化:返回数据包含相对时间(countdownInMinutes)与绝对时间(time)双维度信息,JSON 字段命名稳定,便于下游自动化处理或人机交互展示。

权限最小化原则:仅申请 network 必需权限和可选的 env 配置权限,无文件系统、系统级或敏感 API 访问需求,符合安全最佳实践。

潜在缺点与局限性

地域局限性:功能严格绑定林茨地区公共交通网络,对其他地区用户无价值,且依赖 Linz Linien 官方 API 的可用性与稳定性。

协议安全性:默认使用 HTTP 而非 HTTPS 协议,虽目标服务器支持重定向,但仍存在中间人攻击的理论风险,建议生产环境显式配置 HTTPS 端点。

来源可信度:开发者账号为个人 GitHub 用户(fjrevoredo),无组织级认证背书,虽代码本身通过安全审计,但长期维护承诺与供应链完整性需持续关注上游更新。

功能单一性:仅覆盖站点查询与到站信息,缺乏路线规划、票价计算、实时延误预警等进阶功能,复杂出行场景需配合其他工具使用。

交互模式限制:当前为命令行脚本形态,无原生图形界面或自然语言对话封装,对非技术用户存在一定使用门槛。

适合的目标群体

  • 林茨地区居民与通勤者:需要日常查询公交、电车实时到站信息的本地用户
  • 差旅与访客:短期访问林茨、需要快速获取公共交通信息的外国游客
  • 开发者与集成商:需要将林茨公交数据嵌入自有应用、聊天机器人或自动化工作流的技术团队
  • 低资源环境用户:对依赖体积敏感、追求极简部署的边缘计算或 IoT 场景

使用风险

网络依赖风险:核心功能完全依赖外部 API 可用性,若 Linz Linien 服务端故障或网络中断,Skill 将无法正常返回结果。建议实现本地缓存或降级提示机制。

API 变更风险:EFA 接口为第三方维护,若官方调整端点路径、响应格式或认证策略,可能导致 Skill 失效。需关注上游版本更新。

输入歧义风险:站点名称模糊匹配可能返回多个结果,若用户未明确指定 --stop-id 且未使用 --pick-first,可能陷入交互循环或获取非预期站点信息。

超时配置风险:默认 15 秒超时在弱网环境下可能不足,极端情况下可能导致长时间挂起,建议根据实际网络环境调整 timeout 参数。

linz-public-transport 内容

文件夹图标references文件夹
文件夹图标scripts文件夹
手动下载zip · 6.4 kB
endpoints.mdtext/markdown
请选择文件