摘要
Commuting-Route-Planning-Notification 把一次通勤查询拆成四个自动步骤:调用高德地图 API 获取驾车路线,使用 Folium 绘制带路况颜色的地图,借助无头浏览器生成截图,最后通过 SMTP 将时间、距离和路线图发送到邮箱。配合 Windows 任务计划程序或 cron,可以形成每天自动运行的出行提醒。
项目背景
固定通勤路线的距离不会变化,但耗时会受到早晚高峰、事故和临时管制影响。与其每天手动打开地图,这个项目把路线查询、可视化和通知串成一条自动化链路,让通勤信息在设定时间主动到达邮箱。
核心功能
- 调用高德地图驾车路线接口,读取预计时间、距离和路段信息。
- 根据路线折线与路况生成交互式 HTML 地图。
- 使用 Edge 无头模式截取路线图。
- 通过 SMTP 发送文字摘要和路线截图附件。
- 支持 Windows、Linux 和 macOS,并提供定时任务配置示例。
- 所有密钥、邮箱和坐标均通过环境变量注入,不写入源码。
技术架构与技术栈
项目主体是一个 Python 脚本。requests 负责请求高德 Web 服务,Folium 将路线坐标绘制到地图,Selenium 与 webdriver-manager 启动无头 Edge 完成截图,Python 标准库 smtplib 负责邮件发送。
配置层使用系统环境变量,地图密钥、SMTP 授权码、收发件地址和通勤坐标均与代码分离。仓库提供 .env.example 作为字段清单,并通过 .gitignore 排除本地配置、缓存和运行产物。
项目亮点
它不是单一 API 示例,而是一个完整的小型自动化流程:结构化路线数据先被转成地图,再被转成图片,最终进入通知渠道。每一步都使用成熟组件,便于独立替换,例如把邮件改为企业微信或把截图换成直接生成静态图。
安全更新后,仓库不再保留真实位置、邮箱或密钥,路线请求也加入了超时、HTTP 状态和业务状态检查。
使用与部署
安装 requirements.txt 中的依赖后,根据 .env.example 在系统或任务运行环境中设置高德 Key、起终点坐标、SMTP 服务器、账号、授权码与收件地址。运行 python router.py 即可完成一次完整流程。
部署定时任务时,要确保任务继承了所需环境变量,并能访问浏览器驱动、地图瓦片和 SMTP 服务。旧版本使用者应先轮换曾经写入源码的密钥与授权码。
适用场景
- 每日上下班路线与时间提醒。
- 地图 API、Folium、Selenium 和邮件自动化学习。
- 固定运输路线或服务路线的轻量监测。
- 扩展为多路线比较、拥堵阈值告警或企业消息推送。
项目地址
GitHub:https://github.com/hemo528/Commuting-Route-Planning-Notification