[init] initial commit

This commit is contained in:
2023-06-05 23:04:30 +08:00
commit 66b1dd4d70
72 changed files with 10079 additions and 0 deletions

98
alert/weather_tips.py Normal file
View File

@ -0,0 +1,98 @@
import sys
import json
import datetime
import requests
import time
def send_msg_tip(msg_tip):
# get the datetime, which is using at a failed situation
alert_datetime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
# Enterprise WeChat Bot API and the format of body to send
hook_url = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=ddea3f5f-fbfc-4c21-994a-71e9fc50e4ef'
body = {
"msgtype": "text",
"text": {
"content": msg_tip
}
}
# get the result of API call
res = requests.post(hook_url, data=json.dumps(body, ensure_ascii=False).encode('utf-8'))
# when failed, log it in /opt/logs/alert.log file
if res.status_code != 200:
with open('/opt/logs/alert.log', 'a', encoding='utf-8') as alert_log:
alert_log.write(alert_datetime + ' >>>> ')
alert_log.write('Failed sending message: ')
alert_log.write(msg_tip + '\n')
def weather_forcast(app_id, app_secret, city):
api_url = f"https://www.mxnzp.com/api/weather/forecast/{city}?app_id={app_id}&app_secret={app_secret}"
res = requests.get(api_url)
res_http_code = res.status_code
res_text = json.loads(res.text)
res_code = res_text['code']
res_msg = res_text['msg']
# print(res.text)
if res_http_code != 200 or res_code == 0:
print(f"接口查询失败:{res_msg}")
else:
# print(res_text['data']['forecasts'])
today = datetime.date.today()
hour = datetime.datetime.now().hour
msg_tip = f"{today} {hour}时,查询到{city}最近四天的天气情况如下:\n"
msg_tip += ('*' * 30 + '\n')
when = {1: '今天', 2: '明天', 3: '后天', 4: '大后天', }
week_index = {1: '', 2: '', 3: '', 4: '', 5: '', 6: '', 7: '', }
count = 1
for item in res_text['data']['forecasts']:
item_date = item['date']
item_dayofweek = week_index[int(item['dayOfWeek'])]
if item['dayWeather'] == item['nightWeather']:
msg_tip += f"{when[count]}({item_date} 星期{item_dayofweek})全天天气是{item['dayWeather']}"
else:
msg_tip += f"{when[count]}({item_date} 星期{item_dayofweek})白天天气是{item['dayWeather']},夜间会转为{item['nightWeather']}"
msg_tip += f"最高温{item['dayTemp']},最低温{item['nightTemp']}"
difftemp = int(item['dayTemp'].removesuffix('')) - int(item['nightTemp'].removesuffix(''))
if difftemp > 10:
msg_tip += f"昼夜温差{difftemp}℃,请注意增减衣物,切勿感冒;"
if item['dayWindDirection'] == item['nightWindDirection']:
msg_tip += f"{when[count]}全天是{item['dayWindDirection']}风,"
if item['dayWindPower'] == item['nightWindPower']:
msg_tip += f"风力为{item['dayWindPower']}\n"
else:
msg_tip += f"白天风力为{item['dayWindPower']},夜间风力为{item['nightWindPower']}\n"
else:
msg_tip += f"{when[count]}白天是{item['dayWeather']}风,夜间会转为{item['nightWeather']}风,"
if item['dayWindPower'] == item['nightWindPower']:
msg_tip += f"风力为{item['dayWindPower']}\n"
else:
msg_tip += f"白天风力为{item['dayWindPower']},夜间风力为{item['nightWindPower']}\n"
count += 1
msg_tip += ('*' * 30 + '\n')
# print(msg_tip)
send_msg_tip(msg_tip)
def main():
app_id = "nrsngdkvknqkrwko"
app_secret = "SFFmQWo2dnNBRjdNYkVSclZxa2ZvUT09"
# holiday_today(app_id, app_secret)
# ip_self(app_id, app_secret)
try:
city = sys.argv[1]
except Exception as Err:
print(f"Error Desc: {Err}. Maybe you need to supply correct city next time.")
exit(2)
weather_forcast(app_id, app_secret, city)
if __name__ == '__main__':
main()