OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  oebb-scotty:奥地利铁路旅行规划器 (ÖBB Scotty)

oebb-scotty:奥地利铁路旅行规划器 (ÖBB Scotty)

 
  audit ·  2026-02-04 23:52:38 · 3 次点击  · 0 条评论  

名称: oebb-scotty
描述: 奥地利铁路出行规划工具(ÖBB Scotty)。适用于在奥地利规划火车行程、查询车站发车/到达信息或查找服务中断情况。覆盖 ÖBB 列车、S-Bahn、区域列车及邻国连接线路。


ÖBB Scotty API

通过 HAFAS mgate API 查询奥地利公共交通,用于行程规划、车站时刻表及服务警报。

快速参考

方法 用途
LocMatch 按名称搜索车站/站点
TripSearch 规划两个地点之间的行程
StationBoard 获取车站的发车/到达信息
HimSearch 获取服务警报和中断信息

基础 URL: https://fahrplan.oebb.at/bin/mgate.exe


认证

所有请求都需要在 JSON 请求体中包含以下头部信息:

{
  "id": "1",
  "ver": "1.67",
  "lang": "deu",
  "auth": {"type": "AID", "aid": "OWDL4fE4ixNiPBBm"},
  "client": {"id": "OEBB", "type": "WEB", "name": "webapp", "l": "vs_webapp"},
  "formatted": false,
  "svcReqL": [...]
}

1. 位置搜索 (LocMatch)

按名称搜索车站、站点、地址或兴趣点。

请求示例

curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \
  -H "Content-Type: application/json" \
  -d '{
    "id":"1","ver":"1.67","lang":"deu",
    "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"},
    "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"},
    "formatted":false,
    "svcReqL":[{
      "req":{"input":{"field":"S","loc":{"name":"Wien Hbf","type":"ALL"},"maxLoc":10}},
      "meth":"LocMatch"
    }]
  }'

响应结构

{
  "svcResL": [{
    "res": {
      "match": {
        "locL": [{
          "lid": "A=1@O=Wien Hbf (U)@X=16377950@Y=48184986@U=181@L=1290401@",
          "type": "S",
          "name": "Wien Hbf (U)",
          "extId": "1290401",
          "crd": { "x": 16377950, "y": 48184986 },
          "pCls": 6015
        }]
      }
    }
  }]
}

位置类型

类型 描述
S 车站/站点
A 地址
P 兴趣点

关键字段

字段 描述
lid 位置 ID 字符串(在 TripSearch 中使用)
extId 外部车站 ID
name 车站名称
crd.x/y 坐标(x=经度,y=纬度,已乘以 10^6)
pCls 产品类别位掩码

2. 行程搜索 (TripSearch)

规划两个地点之间的行程。

请求示例

curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \
  -H "Content-Type: application/json" \
  -d '{
    "id":"1","ver":"1.67","lang":"deu",
    "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"},
    "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"},
    "formatted":false,
    "svcReqL":[{
      "req":{
        "depLocL":[{"lid":"A=1@O=Wien Hbf@L=8103000@","type":"S"}],
        "arrLocL":[{"lid":"A=1@O=Salzburg Hbf@L=8100002@","type":"S"}],
        "jnyFltrL":[{"type":"PROD","mode":"INC","value":"1023"}],
        "getPolyline":false,
        "getPasslist":true,
        "outDate":"20260109",
        "outTime":"080000",
        "outFrwd":true,
        "numF":5
      },
      "meth":"TripSearch"
    }]
  }'

参数说明

参数 描述
depLocL 出发地点 - 使用来自 LocMatch 的 lid
arrLocL 到达地点
outDate 出发日期 (YYYYMMDD)
outTime 出发时间 (HHMMSS)
outFrwd true = 向前搜索,false = 向后搜索
numF 返回的行程连接数
jnyFltrL 产品过滤器(见下文)
getPasslist 包含中间停靠站

产品过滤器值

产品
0 1 ICE/RJX (高速列车)
1 2 IC/EC (城际列车)
2 4 NJ (夜间列车)
3 8 D/EN (快车)
4 16 REX/R (区域快车)
5 32 S-Bahn
6 64 巴士
7 128 渡轮
8 256 U-Bahn
9 512 有轨电车

使用 1023 表示所有产品,或对特定位进行求和。

响应结构

{
  "svcResL": [{
    "res": {
      "outConL": [{
        "date": "20260109",
        "dur": "025200",
        "chg": 0,
        "dep": {
          "dTimeS": "075700",
          "dPltfS": {"txt": "8A-B"}
        },
        "arr": {
          "aTimeS": "104900",
          "aPltfS": {"txt": "7"}
        },
        "secL": [{
          "type": "JNY",
          "jny": {
            "prodX": 0,
            "dirTxt": "Salzburg Hbf",
            "stopL": [...]
          }
        }]
      }],
      "common": {
        "locL": [...],
        "prodL": [...]
      }
    }
  }]
}

关键连接字段

字段 描述
dur 持续时间 (HHMMSS)
chg 换乘次数
dTimeS 计划出发时间
dTimeR 实时出发时间(如果可用)
aTimeS 计划到达时间
aTimeR 实时到达时间(如果可用)
dPltfS.txt 出发站台
aPltfS.txt 到达站台
secL 行程分段(行程段)
secL[].jny.prodX 指向 common.prodL[] 的索引,用于获取列车名称

理解 prodX(产品索引)

重要提示: 行程分段中的 prodX 字段是指向 common.prodL[] 数组的索引,不是列车名称本身。要获取实际的列车名称(例如 "S7"、"RJX 662"),必须查找 common.prodL[prodX].name

使用 jq 提取行程摘要

原始的 TripSearch 响应非常冗长。使用此 jq 过滤器提取包含已解析列车名称的简明摘要:

curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \
  -H "Content-Type: application/json" \
  -d '{ ... }' | jq '
    .svcResL[0].res as $r |
    $r.common.prodL as $prods |
    [$r.outConL[] | {
      dep: .dep.dTimeS,
      arr: .arr.aTimeS,
      depPlatform: .dep.dPltfS.txt,
      arrPlatform: .arr.aPltfS.txt,
      dur: .dur,
      chg: .chg,
      legs: [.secL[] | select(.type == "JNY") | {
        train: $prods[.jny.prodX].name,
        dir: .jny.dirTxt,
        dep: .dep.dTimeS,
        arr: .arr.aTimeS,
        depPlatform: .dep.dPltfS.txt,
        arrPlatform: .arr.aPltfS.txt
      }]
    }]'

示例输出:

[
  {
    "dep": "213900",
    "arr": "221100",
    "depPlatform": "1",
    "arrPlatform": "3A-B",
    "dur": "003200",
    "chg": 0,
    "legs": [{"train": "S 7", "dir": "Flughafen Wien Bahnhof", "dep": "213900", "arr": "221100", ...}]
  }
]

3. 车站时刻表 (StationBoard)

获取车站的发车或到达信息。

请求示例

curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \
  -H "Content-Type: application/json" \
  -d '{
    "id":"1","ver":"1.67","lang":"deu",
    "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"},
    "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"},
    "formatted":false,
    "svcReqL":[{
      "req":{
        "stbLoc":{"lid":"A=1@O=Wien Hbf@L=8103000@","type":"S"},
        "date":"20260109",
        "time":"080000",
        "type":"DEP",
        "maxJny":20
      },
      "meth":"StationBoard"
    }]
  }'

参数说明

参数 描述
stbLoc 车站位置
date 日期 (YYYYMMDD)
time 时间 (HHMMSS)
type DEP (发车) 或 ARR (到达)
maxJny 最大行程数

响应结构

{
  "svcResL": [{
    "res": {
      "jnyL": [{
        "prodX": 0,
        "dirTxt": "Salzburg Hbf",
        "stbStop": {
          "dTimeS": "080000",
          "dPltfS": {"txt": "8A-B"}
        }
      }],
      "common": {
        "prodL": [{
          "name": "RJX 662",
          "cls": 1,
          "prodCtx": {"catOutL": "Railjet Xpress"}
        }]
      }
    }
  }]
}

4. 服务警报 (HimSearch)

获取当前的中断和服务信息。

请求示例

curl -s -X POST "https://fahrplan.oebb.at/bin/mgate.exe" \
  -H "Content-Type: application/json" \
  -d '{
    "id":"1","ver":"1.67","lang":"deu",
    "auth":{"type":"AID","aid":"OWDL4fE4ixNiPBBm"},
    "client":{"id":"OEBB","type":"WEB","name":"webapp","l":"vs_webapp"},
    "formatted":false,
    "svcReqL":[{
      "req":{
        "himFltrL":[{"type":"PROD","mode":"INC","value":"255"}],
        "maxNum":20
      },
      "meth":"HimSearch"
    }]
  }'

响应结构

{
  "svcResL": [{
    "res": {
      "msgL": [{
        "hid": "HIM_FREETEXT_843858",
        "head": "Verringertes Sitzplatzangebot",
        "text": "Wegen einer technischen Störung...",
        "prio": 0,
        "sDate": "20260108",
        "eDate": "20260108"
      }]
    }
  }]
}

常用车站 ID

车站 extId
Wien Hbf 8103000
Wien Meidling 8100514
Wien Westbahnhof 8101003
Salzburg Hbf 8100002
Linz Hbf 8100013
Graz Hbf 8100173
Innsbruck Hbf 8100108
Klagenfurt Hbf 8100085
St. Pölten Hbf 8100008
Wr. Neustadt Hbf 8100516

时间格式

  • 日期:YYYYMMDD (例如:20260109)
  • 时间:HHMMSS (例如:080000 = 08:00:00)
  • 持续时间:HHMMSS (例如:025200 = 2小时52分钟)

错误处理

检查响应中的 err 字段:

{
  "err": "OK",           // 成功
  "err": "PARSE",        // 请求格式无效
  "err": "NO_MATCH",     // 未找到结果
  "errTxt": "..."        // 错误详情
}

产品类别 (cls 值)

cls 产品
1 ICE/RJX
2 IC/EC
4 夜间列车
8 NJ/EN
16 REX/区域列车
32 S-Bahn
64 巴士
128 渡轮
256 U-Bahn
512 有轨电车
1024 按需服务
2048 其他
3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor