前言
前面已經決定好要查哪三支 API,也有快取時間、錯誤說法、欄位命名。今天要做的事,就是把「每天都要查一次」這件事交給工具做,不要每天手動開 Postman。這裡用 n8n 當例子,因為可以用拉流程的方式完成。
一、流程
•每天 07:00 有一個排程叫起來。
•被叫醒之後去打一次公車 API。
•把回來的資料整理成我們的格式:routeId、stopId、estimateSeconds、stopStatus、updateTime、timestamp。
•存到一個地方(CSV、Google 試算表、n8n 內建的表都可以)。
二、n8n 裡要放的節點
•Cron(Schedule):每天、時間 07:00。
•HTTP Request:GET,URL 先用 https://postman-echo.com/get?routeId=307&stopId=12345。
•Function / Set:把回應轉成我們前面說的欄位。
•Spreadsheet / Google Sheets / CSV:把整理完的資料加一列。
三、欄位一律用先前建立的規則
•routeId(字串,小駝峰)
•stopId(字串,小駝峰)
•estimateSeconds(整數,單位秒)
•stopStatus(normal / last / suspended / noData)
•updateTime(ISO 8601,含 +08:00)
•timestamp(這次排程實際執行時間,也是 ISO 8601)
一列資料範例:307,12345,240,normal,2025-10-30T08:30:15+08:00,2025-10-30T07:00:02+08:00
四、實作:Python 版
import requests
from datetime import datetime, timezone, timedelta
url = "https://postman-echo.com/get"
params = {
"routeId": "307",
"stopId": "12345"
}
resp = requests.get(url, params=params)
resp.raise_for_status() # 確定是 200
echo_data = resp.json()
now = datetime.now(timezone(timedelta(hours=8))).isoformat()
result = {
"routeId": params["routeId"],
"stopId": params["stopId"],
"estimateSeconds": 240,
"stopStatus": "normal",
"updateTime": now,
"timestamp": now
}
print(result)
目前先用測試 API 取得資料,之後只要把 url 換成臺北市的真正 API,就能存真實