Track.TW自動(dòng)化追蹤?quán)]政包裹:API實(shí)戰(zhàn)與工作流優(yōu)化指南

用 Track.TW 自動(dòng)追蹤?quán)]政包裹:一個(gè)自動(dòng)化工作流實(shí)戰(zhàn)
問題:手動(dòng)查物流太麻煩
給朋友寄了份禮物,每隔幾小時(shí)就得打開郵政官網(wǎng),手動(dòng)輸入單號(hào)查一次物流?或者同時(shí)在等好幾個(gè)包裹,得在不同網(wǎng)頁間來回切換,生怕錯(cuò)過任何更新?
這種重復(fù)勞動(dòng)不僅耗時(shí),還容易漏掉關(guān)鍵信息。對開發(fā)者或技術(shù)愛好者來說,手動(dòng)查詢簡直是效率的“黑洞”。有沒有辦法讓物流狀態(tài)自動(dòng)“找上門來”?
方案:Track.TW + 自動(dòng)化腳本
Track.TW 是一個(gè)專注于臺(tái)灣地區(qū)物流追蹤的平臺(tái),支持中華郵政(郵局)包裹的實(shí)時(shí)查詢。關(guān)鍵的是,它提供了 API 接口,這意味著你可以用代碼把查詢自動(dòng)化,然后通過 Email、Telegram、Discord、Slack 等渠道接收推送。
簡單來說,寫一個(gè) Python 腳本,定時(shí)調(diào)用 Track.TW 的 API 檢查包裹狀態(tài),一旦狀態(tài)有更新(比如“已出貨”、“運(yùn)送中”、“已送達(dá)”),就立刻通過你指定的消息渠道通知你。整個(gè)過程無需人工干預(yù)。
步驟:從零搭建自動(dòng)化追蹤
第一步:獲取 Track.TW API 密鑰
- 訪問 Track.TW 官網(wǎng) 并注冊一個(gè)賬戶。
- 登錄后,在用戶后臺(tái)找到“API”或“開發(fā)者”相關(guān)頁面。
- 申請一個(gè) API 密鑰(API Key)。這個(gè)密鑰是調(diào)用服務(wù)的憑證,務(wù)必保管好。
為什么需要 API 密鑰?
就像進(jìn)小區(qū)需要門禁卡一樣,API 密鑰是 Track.TW 識(shí)別你身份、允許你調(diào)用服務(wù)的唯一憑證。沒有它,你的腳本無法與平臺(tái)通信。
第二步:安裝 Python 依賴庫
打開你的終端(Windows 的 CMD/PowerShell,macOS/Linux 的 Terminal),運(yùn)行以下命令:
pip install requests schedulerequests:用于向 Track.TW 的 API 發(fā)送網(wǎng)絡(luò)請求,獲取物流數(shù)據(jù)。schedule:一個(gè)輕量級的任務(wù)調(diào)度庫,用于定時(shí)執(zhí)行我們的查詢腳本。
為什么用這兩個(gè)庫?requests 是 Python 里最常用的 HTTP 庫,能簡化 API 調(diào)用過程。schedule 則讓設(shè)置“每 30 分鐘檢查一次”這樣的定時(shí)任務(wù)變得非常簡單,無需操作系統(tǒng)的復(fù)雜配置。
第三步:編寫核心追蹤腳本
創(chuàng)建一個(gè) Python 文件(例如 tracker.py),寫入以下代碼:
import requests
import schedule
import time
from datetime import datetime
# 配置區(qū)域
API_KEY = "你的Track.TW API密鑰"
TRACKING_NUMBER = "你的郵政包裹單號(hào)" # 例如:RA123456789TW
CHECK_INTERVAL_MINUTES = 30 # 檢查間隔(分鐘)
# Telegram Bot配置(示例)
TELEGRAM_BOT_TOKEN = "你的Telegram Bot Token"
TELEGRAM_CHAT_ID = "你的Telegram Chat ID"
def get_tracking_status():
"""調(diào)用Track.TW API獲取最新物流狀態(tài)"""
url = f"https://api.track.tw/v1/track/{TRACKING_NUMBER}"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json"
}
try:
response = requests.get(url, headers=headers)
if response.status_code == 200:
data = response.json()
# 解析關(guān)鍵信息:最新狀態(tài)、時(shí)間、地點(diǎn)
latest_status = data.get('status', '未知狀態(tài)')
last_update = data.get('last_update', '未知時(shí)間')
location = data.get('location', '未知地點(diǎn)')
return {
'status': latest_status,
'time': last_update,
'location': location,
'raw': data # 保留原始數(shù)據(jù)備用
}
else:
print(f"API請求失敗,狀態(tài)碼:{response.status_code}")
return None
except Exception as e:
print(f"發(fā)生錯(cuò)誤:{e}")
return None
def send_telegram_notification(message):
"""通過Telegram Bot發(fā)送通知"""
telegram_url = f"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage"
payload = {
'chat_id': TELEGRAM_CHAT_ID,
'text': message,
'parse_mode': 'Markdown'
}
try:
requests.post(telegram_url, json=payload)
print("Telegram通知已發(fā)送")
except Exception as e:
print(f"發(fā)送Telegram通知失敗:{e}")

def check_and_notify():
"""主檢查邏輯:獲取狀態(tài),判斷是否有更新,發(fā)送通知"""
print(f"[{datetime.now()}] 開始檢查包裹 {TRACKING_NUMBER} 狀態(tài)...")
current_status = get_tracking_status()
if current_status is None:
return
# 這里可以添加更復(fù)雜的邏輯,比如與上次狀態(tài)對比
# 為簡化示例,我們每次檢查都發(fā)送通知(實(shí)際應(yīng)用中應(yīng)避免騷擾)
message = f"?? *包裹狀態(tài)更新*\n\n"
message += f"*單號(hào):* `{TRACKING_NUMBER}`\n"
message += f"*狀態(tài):* {current_status['status']}\n"
message += f"*時(shí)間:* {current_status['time']}\n"
message += f"*地點(diǎn):* {current_status['location']}\n\n"
message += f"查詢時(shí)間: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}"
# 發(fā)送通知(這里以Telegram為例,你可以替換為Email、Discord等邏輯)
send_telegram_notification(message)
print(f"當(dāng)前狀態(tài):{current_status['status']}")
# 設(shè)置定時(shí)任務(wù)
schedule.every(CHECK_INTERVAL_MINUTES).minutes.do(check_and_notify)
print(f"包裹追蹤腳本已啟動(dòng)!")
print(f"追蹤單號(hào):{TRACKING_NUMBER}")
print(f"檢查間隔:每 {CHECK_INTERVAL_MINUTES} 分鐘")
print(f"通知方式:Telegram")
print("按 Ctrl+C 停止腳本")
# 啟動(dòng)時(shí)立即執(zhí)行一次
check_and_notify()
# 保持腳本運(yùn)行,執(zhí)行定時(shí)任務(wù)
while True:
schedule.run_pending()
time.sleep(1)代碼關(guān)鍵點(diǎn)解釋:
get_tracking_status()函數(shù):負(fù)責(zé)與 Track.TW API 通信,獲取包裹的 JSON 格式數(shù)據(jù),并解析出我們關(guān)心的狀態(tài)、時(shí)間、地點(diǎn)。send_telegram_notification()函數(shù):將格式化后的消息通過 Telegram Bot API 發(fā)送出去。你需要提前創(chuàng)建一個(gè) Telegram Bot 并獲取 Token 和 Chat ID。check_and_notify()函數(shù):整合了查詢和通知的邏輯。實(shí)際項(xiàng)目中,你可以在其中加入狀態(tài)對比邏輯,只在狀態(tài)真正發(fā)生變化時(shí)才發(fā)送通知,避免重復(fù)打擾。schedule庫:輕松實(shí)現(xiàn)了“每 30 分鐘執(zhí)行一次”的定時(shí)需求。
第四步:運(yùn)行與驗(yàn)證
- 將代碼中的
API_KEY、TRACKING_NUMBER、TELEGRAM_BOT_TOKEN、TELEGRAM_CHAT_ID替換為你自己的真實(shí)值。 在終端運(yùn)行腳本:
python tracker.py- 觀察終端輸出。腳本啟動(dòng)后會(huì)立即執(zhí)行一次檢查,并在 Telegram 中收到第一條通知。
- 等待設(shè)定的間隔時(shí)間(例如 30 分鐘),如果包裹狀態(tài)有更新,你會(huì)再次收到通知。
驗(yàn)證成功標(biāo)志:
- 終端顯示“API 請求成功”、“Telegram 通知已發(fā)送”等日志。
- 你的 Telegram 聊天窗口中收到來自 Bot 的包裹狀態(tài)消息。
常見問題
Q1:腳本運(yùn)行時(shí)報(bào)錯(cuò)“API Key 無效”怎么辦?
A:檢查 API_KEY 是否復(fù)制完整,沒有多余空格。確認(rèn)你的 Track.TW 賬戶 API 功能是否已啟用。
Q2:我想用 Email 或 Discord 接收通知,怎么改?
A:核心邏輯不變,只需修改通知函數(shù)。例如,發(fā)送 Email 可以使用 Python 內(nèi)置的 smtplib 庫;發(fā)送 Discord 消息則調(diào)用其 Webhook API。Track.TW 的 API 返回?cái)?shù)據(jù)格式是固定的,你只需要替換“發(fā)送”這部分的代碼。
Q3:如何實(shí)現(xiàn)“狀態(tài)變化才通知”?
A:你需要一個(gè)地方(比如本地的 JSON 文件)來存儲(chǔ)上一次查詢的狀態(tài)。每次查詢后,將新狀態(tài)與舊狀態(tài)對比。如果不同,則發(fā)送通知并更新存儲(chǔ)的狀態(tài);如果相同,則跳過。
這個(gè)案例的技術(shù)價(jià)值
這個(gè)小項(xiàng)目展示了自動(dòng)化工作流的核心思路:
- 數(shù)據(jù)獲取:通過 API 從外部服務(wù)(Track.TW)獲取結(jié)構(gòu)化數(shù)據(jù)。
- 邏輯處理:用 Python 腳本進(jìn)行解析、判斷(是否狀態(tài)更新)。
- 動(dòng)作執(zhí)行:通過另一個(gè) API(Telegram Bot)將結(jié)果推送到用戶面前。
你可以將這個(gè)模式擴(kuò)展到無數(shù)場景:股票價(jià)格提醒、天氣預(yù)警、網(wǎng)站內(nèi)容監(jiān)控、社交媒體動(dòng)態(tài)抓取……Track.TW 的包裹追蹤只是一個(gè)具體、實(shí)用的起點(diǎn)。
下一步學(xué)習(xí)建議
- 擴(kuò)展通知渠道:嘗試修改腳本,讓通知同時(shí)發(fā)送到你的 Email 和 Discord 頻道。
- 加入狀態(tài)對比:完善腳本,實(shí)現(xiàn)真正的“狀態(tài)變化才通知”,并考慮將歷史狀態(tài)記錄到數(shù)據(jù)庫(如 SQLite)。
- 集成到更大工作流:將這個(gè)腳本部署到云服務(wù)器(如阿里云、騰訊云的輕量服務(wù)器),實(shí)現(xiàn) 7x24 小時(shí)自動(dòng)運(yùn)行。或者,將其作為 Dify/Coze 工作流中的一個(gè)節(jié)點(diǎn),構(gòu)建更復(fù)雜的自動(dòng)化流程(例如:包裹送達(dá)后,自動(dòng)在待辦清單中勾選“確認(rèn)收貨”)。
相關(guān)資源:
- Track.TW API 官方文檔(假設(shè)鏈接):
https://api.track.tw/docs - Python
requests庫快速上手:https://docs.python-requests.org/ - Telegram Bot 創(chuàng)建指南:搜索“Telegram BotFather”即可找到官方教程。
從解決一個(gè)具體的小麻煩開始,逐步構(gòu)建你的自動(dòng)化工具箱,這才是技術(shù)愛好者最酷的實(shí)踐方式。