我正在参加「初夏创意投稿大赛」详情请看:初夏创意投稿大赛

前言

自己的路由器是openWRT系统自带了一个设备连接断开和状态推送,非常方便,使用的是servehttps和http的区别r酱的微信推送,我看到文档只需要简单的HTTP请求就可以实现把消息推送到Srver酱的公众号上。夏天来了会经常的下雨,天气又热,经常地忘记带伞,测试用例今天做一个简单的天气预报每天自动推送的脚本玩一玩。

server酱

首先需要申请sendkey,如下图所示,新用户会有几天会员
申请地址: sct.ftqq.com/

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~
申请完jsonobject成过后,根据文档写一段demo测试一下(Python):

server_key = 'SC******************************35'
import requests
def send_msg(title,content):
    data_param={}
    url = 'https://sctapi.ftqq.com/'+server_key+'.send'
    data_param['title'] = title
    data_param['desp'] = content
    response = requests.post(url=url,data=data_param)
    print(response.content)
send_msg('测试','测试')

确认的确是收到了:

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~

天气API

当然是找有名气的稳定的,最好是免费的API,之前做过高德的地图里面有很多免费的API,一直在跟我发邮件,还服务器系统挺不错的 文档地址:lbs.amap.测试抑郁程度的问卷com/appython基础教程i/webserv…
当然之前要注册申请,这个就不赘述了,直接写一个简python可以做什么工作单请求天气的demo

def get_weather():
    data_param = {}
    url = 'https://restapi.amap.com/v3/weather/weatherInfo?parameters'
    data_param['key'] = gaode_key
    data_param['city'] = 440300
    # data_param['extensions'] = 
    response = requests.get(url,params=data_param)
    print(response.json())
get_weather()

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~

python是什么意思据需求整理代码

需求就是如果天气有雨或者json温度超过30度再或者天气获取有误服务器内存条可以用在台式机上吗就发消息提示。先做一个简单的代码出来,使用过后再改复杂的逻辑吧。

完整脚本:

import requests
server_key = 'SC***********************35'
gaode_key = 'bf***********************8e'
city = '深圳'
city_code = 440300
max_temperature = 30
def send_msg(title,content):
    data_param={}
    url = 'https://sctapi.ftqq.com/'+server_key+'.send'
    data_param['title'] = title
    data_param['desp'] = content
    response = requests.post(url=url,data=data_param)
    print(response.content)
def get_weather():
    data_param = {}
    url = 'https://restapi.amap.com/v3/weather/weatherInfo?parameters'
    data_param['key'] = gaode_key
    data_param['city'] = city_code
    response = requests.get(url,params=data_param)
    return response.json()
def send_err():
    send_msg('天气获取失败','天气获取失败,请检查系统状态')
def handle_wether():
    try:
        weather_data = get_weather()
        print(weather_data)
        temperature = weather_data['lives'][0]['temperature']
        weather =  weather_data['lives'][0]['weather']
        winddirection = weather_data['lives'][0]['winddirection']
        windpower = weather_data['lives'][0]['windpower']
        humidity = weather_data['lives'][0]['humidity']
        reporttime = weather_data['lives'][0]['reporttime']
        desc = '* 今天天气:'+weather+' rn * 温度:'+temperature+'  rn* 风向:'+winddirection+','+windpower+'级  '+'rn* 湿度:'+humidity+'  rn* 更新时间:'+reporttime
        if int(temperature)>=max_temperature:
            send_msg('今天'+city+'天气温度过高,注意防晒!',desc)
        if '雨' in weather:
            send_msg('今天'+city+'天气为:'+weather+',注意防晒!',desc)
    except:
        send_err()
if __name__ =='__main__':
    handle_wether()

直接在try...except...代码中解析高德天气ApI,结构解析报错直接发警告消息。

部署脚本,定时执行

脚本写好了,接下来把他放到有稳定的服务器上部署,定时执服务器行。我这里是使用的宝塔,首先把脚本放在服务器/opt目录下(其他目录也行):

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~
需要给与执行权限,默认没有执行权限,需要使用chmod +x weath服务器租用多少钱一年er_msg.py

然后创建定时任务,每天8点30执行:

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~

添加完成后可以直接测试一下:

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~
宝塔是真的方便,今天的天气还不错,没有雨温度也不高,我把温度固定了一下,点击执行试了一下:

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~

夏天来了 ,给自己做一个高温,下雨预警微信定时任务提醒~

测试&总结

这两个测试你的自卑程度AP服务器地址I都是免费的,每天请求一次问题不大,都非常的稳定,不会出现什么问python怎么读题,这只是服务器定时任务的一个简单的用法,只要脑洞够大,可以帮我们完成很多事情,大家觉得还可以做什么呢?欢迎大家互动,哈哈。