一个功能强大的天气信息推送服务,支持多平台消息推送,包括企业微信、微信公众号、Telegram 和邮件推送。
- 🌤️ 实时天气数据获取(基于和风天气 API)
- 🕒 支持早、午、晚间问候
- 👔 智能穿衣建议
- 💡 根据天气情况提供温馨提示
- 📱 多平台消息推送:
- 企业微信
- 微信公众号
- Telegram
- 邮件推送
- 🎨 支持多种消息模板样式
- 💝 集成彩虹屁和一言 API
- 📝 完善的日志记录系统
- ⚡ GitHub Actions 自动化部署
- 📅 灵活的定时任务调度
- 克隆仓库
git clone https://github.com/yourusername/weather_push.git
cd weather_push
- 安装依赖
pip install -r requirements.txt
项目使用的主要依赖包:
- requests==2.31.0: HTTP 请求库,用于调用各类 API
- python-dateutil>=2.8.2: 日期时间处理工具
- python-telegram-bot>=2.0.0: Telegram Bot API 客户端
- wechatpy>=1.8.18: 微信开发工具包
- yagmail>=0.15.293: 邮件发送工具
- loguru>=0.7.2: 日志处理库
- python-dotenv>=1.0.0: 环境变量管理
- schedule>=1.2.1: 定时任务调度
- pytz>=2024.1: 时区处理
- 配置服务
复制
config.py
并填写相关配置信息:
- 和风天气 API 密钥
- 微信公众号配置
- Telegram Bot 配置
- 邮件服务配置
- 企业微信 Webhook
- 其他可选配置
# 和风天气配置
HEFENG_KEY = "你的和风天气KEY"
LOCATION = "城市ID" # 例如:101010100 北京
# 用户配置
USER_CONFIG = {
'name': '用户名', # 用户昵称
'city': '城市名', # 所在城市
'morning_greeting': True, # 是否启用早安问候
'noon_greeting': True, # 是否启用午安问候
'evening_greeting': True # 是否启用晚安问候
}
# 时间配置
TIME_CONFIG = {
'morning_hour': 7, # 早安问候时间
'noon_hour': 12, # 午安问候时间
'evening_hour': 21 # 晚安问候时间
}
# 推送方式配置
PUSH_METHODS = {
'wecom': True, # 企业微信推送开关
'wechat': True, # 微信公众号推送开关
'telegram': True, # Telegram推送开关
'email': True # 邮件推送开关
}
# 企业微信配置
WECOM_CONFIG = {
'webhook': 'YOUR_WEBHOOK_URL',
'mentioned_list': ['@all'] # 可选:需要提醒的成员
}
# Telegram配置
TELEGRAM_CONFIG = {
'bot_token': 'YOUR_BOT_TOKEN',
'chat_id': 'YOUR_CHAT_ID'
}
# 邮件配置
EMAIL_CONFIG = {
'sender': 'your-email@example.com',
'password': 'your-password',
'recipients': ['recipient@example.com'],
'smtp_server': 'smtp.gmail.com'
}
项目默认使用北京时间(Asia/Shanghai),可以通过以下方式设置时区:
- 环境变量方式:
# Linux/Mac
export TZ=Asia/Shanghai
# Windows PowerShell
$env:TZ = "Asia/Shanghai"
- Python代码方式:
import os
os.environ['TZ'] = 'Asia/Shanghai'
- Docker环境:
ENV TZ=Asia/Shanghai
- GitHub Actions配置:
jobs:
push:
runs-on: ubuntu-latest
steps:
- name: Set timezone
run: |
sudo timedatectl set-timezone Asia/Shanghai
# 环境变量配置
ENV_CONFIG = {
'timezone': 'Asia/Shanghai'
}
- 直接运行
python weather_push.py
- 使用调度器(推荐)
python scheduler.py
- 定时任务
- Linux/Mac (Crontab):
# 每天早上7点、中午12点和晚上9点运行
0 7,12,21 * * * cd /path/to/weather_push && python weather_push.py
- Windows (计划任务):
- 使用 Windows 任务计划程序创建定时任务
- 设置触发器为每天指定时间
- 操作为运行 Python 脚本
项目已集成 GitHub Actions 工作流,支持:
- 自动化测试
- 定时推送服务(北京时间 8:00, 12:00, 19:00, 0:00)
- Python 3.10 运行环境
- 依赖缓存加速部署
- 手动触发功能
- 自动时区设置(已配置为北京时间)
配置文件位于 .github/workflows/weather-push.yml
支持多种消息模板样式,可在配置文件中设置:
TEMPLATE_NAME = 'weather' # 可选值: 'weather', 'elegant', 'modern', 'card', 'compact', 'simple', 'minimal'
自定义模板可在 templates.py
中添加。
- 日志文件位于
logs
目录 - 自动清理超过指定天数的日志文件
- 支持日志文件大小限制和轮转
- 日志级别可配置
# 日志配置
LOG_CONFIG = {
'retention': '7 days', # 日志保留时间
'rotation': '500 MB', # 单个日志文件大小限制
'level': 'INFO' # 日志级别
}
weather_push/
├── weather_push.py # 主程序
├── push_service.py # 推送服务
├── config.py # 配置文件
├── templates.py # 消息模板
├── scheduler.py # 调度器
├── requirements.txt # 依赖管理
├── logs/ # 日志目录
└── .github/ # GitHub配置
└── workflows/ # GitHub Actions
- 请确保所有 API 密钥和配置信息的安全性
- 建议使用环境变量管理敏感配置信息
- 定期检查日志文件,及时发现并处理异常情况
- 推荐使用 Python 3.8 或更高版本
欢迎提交 Issue 和 Pull Request 来帮助改进项目。
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature
) - 提交更改 (
git commit -m 'Add some AmazingFeature'
) - 推送到分支 (
git push origin feature/AmazingFeature
) - 提交 Pull Request
本项目采用 MIT 许可证。详见 LICENSE 文件。
如有问题或建议,请通过以下方式联系:
- 提交 Issue
- 发送邮件至:[cui2421011864@gmail.com]