Docker - 青龙面板之自动运行Python脚本发送天气预报
几个周末也都在忙,今天休息一下,想想写点什么好,写个脚本定时发送天气预报吧。
1. 准备工作
(1)需要从天气网站的 API 获取密钥。
(2)配置邮箱 SMTP 服务,准备登陆密码和SMTP服务器及端口号信息。
2. 脚本内容
见文章最后,注意替换备注中的内容为你自己的信息。
3. 青龙面板中的配置
(1)在青龙面板的脚本管理中添加脚本。
(2)设置定时任务
在青龙面板的定时任务中,创建任务,填写任务名称和所执行脚本,定时类型选择常规定时,定时规则为0 0 8 * * *,即每天早上8点执行。
创建完毕后,可以点击运行测试。


下面是脚本具体内容:
import requests
import datetime
import smtplib
from email.mime.text import MIMEText
from email.header import Header
def get_weather(city_code="101030100"): # 天津的城市代码
try:
# 调用天气API
api_key = "xxxxxxx" # 替换为你的API密钥
url = f"https://xxxxxx"
response = requests.get(url)
data = response.json()
if "results" in data:
weather = data["results"][0]["daily"][0]
today = datetime.date.today().strftime("%Y年%m月%d日")
info = f"天气:{weather['text_day']},{weather['low']}~{weather['high']}℃n"
info += f"风力:{weather['wind_scale']}级n"
return info
else:
return "获取天气失败,请检查城市代码或API密钥"
except Exception as e:
return f"发生错误:{e}"
def send_email(content, sender_email, sender_password, receiver_email, smtp_server, smtp_port=587):
"""发送邮件函数"""
# 创建邮件内容
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = Header(f"xxxxxxx", 'utf-8')
message['To'] = Header(receiver_email, 'utf-8')
today = datetime.date.today().strftime("%Y年%m月%d日")
subject = f"天津天气提醒"
message['Subject'] = Header(subject, 'utf-8')
try:
# 连接SMTP服务器并发送邮件
server = smtplib.SMTP(smtp_server, smtp_port)
server.starttls() # 启用TLS加密
server.login(sender_email, sender_password)
server.sendmail(sender_email, receiver_email, message.as_string())
server.quit()
return True, "邮件发送成功"
except Exception as e:
return False, f"邮件发送失败: {str(e)}"
if __name__ == "__main__":
# 获取天气信息
weather_info = get_weather()
print(weather_info)
# 邮件配置 - 请替换为你的信息
sender_email = "xxxxx@yeah.net" # 发送者邮箱
sender_password = "xxxxxx" # 邮箱密码或授权码
receiver_email = "xxxxxx@qq.com" # 接收者邮箱
# 邮箱服务器配置,以下是一些常见邮箱的配置
smtp_server = "smtp.yeah.net" # 根据你的邮箱修改
smtp_port = 25
# 发送邮件
success, msg = send_email(weather_info, sender_email, sender_password, receiver_email, smtp_server, smtp_port)
print(msg)
