定制云函数天气推送

sansui-Weather v2.0

介绍:

在寒冷的冬日给你爱的人暖暖的提示
(可增加情话api,每天推送情话及其他定制化的推送)
Python脚本实现天气查询应用,提醒她注意保暖!

功能介绍:

  • 天气信息获取推送
  • 当天天气信息提示推送
  • 第二天天气信息提示推送
  • 网易云热评信息获取推送
  • 舔狗日记信息获取推送
  • 疫情信息数据获取推送
  • 可根据个人需要,添加定制的信息提示

使用说明:

以下信息换为自己的,具体根据API地址申请key后进行替换
SendKey server酱
Weather_key 和风天气API
Tianapi_key 网易云热评API
Storeapi_key 疫情数据API
ApiKey 疫情数据API
userid 接收消息的用户,存在多个以 | 隔开
adminUserId 管理员用户,错误信息要推送的用户

下载地址:

https://wwb.lanzouw.com/iwk7vzmd75c

密码:d0bz

云函数搭建教程:

https://support.qq.com/products/130099/blog/546919

代码修改教程:

https://wwb.lanzoub.com/iKLJG017swba
密码:4bpo

代码:

定制云函数天气推送

[url=home.php?mod=space&uid=238618]@Time[/url] : 2021/7/19 13:16

[url=home.php?mod=space&uid=686208]@AuThor[/url] : Sansui

@FileName: index.py

@Software: PyCharm

@Blog :https://www.cnblogs.com/sansui6/

import requests
import datetime
import time
import json
import pytz
import ssl,hashlib,string
from urllib import request,parse,error;
from urllib.parse import quote

SendKey = '';#pushplus申请的KEY或者server酱的KEY,这里我自己改了
Weather_key = ''
Tianapi_key
= ''
Storeapi_key
= ''
ApiKey
= ''
# 接收消息的用户,存在多个以 | 隔开
userid = ''

adminUserId = '';

def get_time():
nowTime
= time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()); # 获取当前时间
# 由于腾讯云时间不准确,暂时使用年月日
nowTime_1 = time.strftime("%Y-%m-%d", time.localtime()); # 获取当前时间
# print(nowTime_1)
return nowTime_1;

#获取网易云评论
def get_wyy():
list
= [] ## 空列表
wyy_url = "http://api.tianapi.com/txapi/hotreview/index?key=" + Tianapi_key + "";
wyy_json
= requests.post(wyy_url).json();
wyy_code
= wyy_json["code"]
if wyy_code.eq(200):
#获取评论内容
wyy_content = wyy_json["newslist"][0]["content"]
#获取歌名
wyy_source = wyy_json["newslist"][0]["source"]
#把评论、歌名放进数组
list.append(wyy_content)
list.append(wyy_source)
return list;
else:
list.append(
'获取失败!')
return list;

#2021/8/4 因疫情较为严重,新增加疫情提示
def ncov():
api_url
= 'https://yupn.api.storeapi.net/api/94/221';
appid
= 13948;
secret
= Storeapi_key;
data
= {
'appid': appid,
'city_name': '苏州',
'format': 'json',
'time': '1644207719',
};
data[
'appid'] = appid;
data[
'time'] = round(time.time()); # 当前服务器时间
keysArr = list(data.keys()) # 取出字典key
keysArr.sort() # 对字典key进行排序
md5String = '';
params
= []
for key in keysArr:
if data[key]:
val
= str(data[key])
md5String
+= key + val
params.append(key
+ "=" + val)
md5String
+= secret;
m
= hashlib.md5()
b
= md5String.encode(encoding='utf-8')
m.update(b)
sign
= m.hexdigest()

params.append(</span><span>&apos;</span><span>sign=</span><span>&apos;</span> + sign)  <span>#</span><span> &#x52A0;&#x5165;&#x8BA1;&#x7B97;&#x540E;&#x7684;sign&#x503C;&#x53BB;&#x8BF7;&#x6C42;</span>
params = <span>&apos;</span><span>&amp;</span><span>&apos;</span>.join(tuple(params));  <span>#</span><span> &#x628A;&#x5217;&#x8868;&#x8F6C;&#x6210;&#x5143;&#x7EC4;&#x540E;&#x7528;&amp;&#x5206;&#x9694;&#xFF0C;&#x6700;&#x7EC8;&#x8F6C;&#x6362;&#x6210;&#x5B57;&#x7B26;&#x4E32; a=b&amp;c=d&amp;e=f</span>


ssl._create_default_https_context
= ssl._create_unverified_context
url
= api_url + '?' + params;
url
= quote(url, safe=string.printable)
req
= requests.get(url).json()
#city 所选城市
#confirm 确诊病例数量
#curConfirm 当前确诊数量
#died 死亡数量
#heal 治愈数量
#asymptomatic 无症状感染数量
#print(req["retdata"])
return req["retdata"]

#获取实时疫情资讯,如分风险地区、疫情概况、疫情新闻等
def nCoV_news(num):
url
="http://api.tianapi.com/txapi/ncov/index?key="+Tianapi_key;
nCoV_news_json
= requests.get(url).json()
nCoV_news_code
= nCoV_news_json["code"]
print(nCoV_news_json)
nCoV_news_newslist
= nCoV_news_json["newslist"]
i
=0;
if(nCoV_news_code.eq(200)):
if (num.eq(1)):
# 获取当前数据信息
return nCoV_news_newslist[0]["desc"]
elif(num.eq(2)):
#返回全国风险地区,high高风险、mid中风险
riskarea_high_text = "| ——– | 高风险地区 | ——–: |";
for riskarea_high in nCoV_news_newslist[0]["riskarea"]["high"]:
if("江苏省" in riskarea_high):
# 因为高风险地区逐渐增多,消息已经存放不下,现调整通知格式为具体数量,不再是具体地区。
i=i+1;
return "\n江苏省高风险地区共:" + str(i) + "个。\n"
elif(num.eq(0)):
riskarea_mid_text
= "| ——– | 中风险地区 | ——–: |";
for riskarea_mid in nCoV_news_newslist[0]["riskarea"]["mid"]:
# print(riskarea_high)
if ("江苏省" in riskarea_mid):
#因为中风险地区逐渐增多,消息已经存放不下,现调整通知格式为具体数量,不再是具体地区。
#riskarea_mid_text +="\n" + riskarea_mid;
# riskarea_high_text=riskarea_high;
i=i+1;
# return nCoV_news_newslist[0]["riskarea"]
#print(riskarea_mid_text)
#return riskarea_mid_text;
return "\n江苏省中风险地区共:"+str(i)+"个。"

#获取当天天气,不过没有最高温度,最低温度
def get_Weather():
city_id
= get_location();
Weather_url
= f'https://devapi.qweather.com/v7/weather/now?key={Weather_key}&location={city_id}'
Weather_json
= requests.get(Weather_url).json()
#print(Weather_url)
Weather_code = Weather_json["code"]
Weather_now
= Weather_json["now"]
if(Weather_code.eq("200")):
#print(Weather_now)
return Weather_now;

#获取包括今天在内的未来三天天气
def get_3d_Weather(num):
date
= get_time();
date_tomorrow
= (datetime.datetime.now()+datetime.timedelta(days=1)).strftime("%Y-%m-%d");
city_id
= get_location();
Weather_url
= f'https://devapi.qweather.com/v7/weather/3d?key={Weather_key}&location={city_id}';
#print(Weather_url)
Weather_json = requests.get(Weather_url).json();
Weather_3d
= Weather_json["daily"]
for weather in Weather_3d:
#print("6666666"+weather)
if(num.eq(1)):
if(weather["fxDate"].eq(date)):
#print("当天天气获取成功")
return weather;
else:
print("查询的不是今天日期的天气")
return "查询的不是今天日期的天气"
break;
elif(num.eq(0)):
if (weather["fxDate"].eq(date_tomorrow)):
#print(weather);
return weather;
else:
print("非法参数!")
return "非法参数!"

#获取当前天气地区id
def get_location():
# 调整所在的区域
location='苏州'
Weather_city_url
= f'https://geoapi.qweather.com/v2/city/lookup?key={Weather_key}&location={location}'
city_json
=requests.get(Weather_city_url).json();
city_code
= city_json["code"]
if city_code.eq("200"):
#print(Weather_city_url)
for Weather_city in city_json["location"]:
Weather_city_name
= Weather_city["name"]
if Weather_city_name.eq("苏州"):
#print(Weather_city)
city_id = Weather_city["id"]
#print(city_id)
return city_id;

</span><span>else</span><span>:
  </span><span>print</span>(<span>&quot;</span><span>&#x8BBF;&#x95EE;&#x83B7;&#x53D6;&#x5730;&#x533A;&#x63A5;&#x53E3;&#x5931;&#x8D25;&#xFF01;</span><span>&quot;</span><span>)
  </span><span>return</span> <span>&quot;</span><span>&#x8BBF;&#x95EE;&#x83B7;&#x53D6;&#x5730;&#x533A;&#x63A5;&#x53E3;&#x5931;&#x8D25;&#xFF01;</span><span>&quot;</span><span>;

def get_tiangou():
url
="http://api.tianapi.com/tiangou/index?key="+Tianapi_key;
tiangou_json
= requests.get(url).json()
tiangou
= tiangou_json["newslist"][0]["content"]
return tiangou

#拼接消息
def get_desp():

wyy_content </span>= get_wyy()[0];  <span>#</span><span> &#x8BC4;&#x8BBA;&#x5185;&#x5BB9;</span>
wyy_source = get_wyy()[1];  <span>#</span><span> &#x6B4C;&#x540D;</span>
date_tomorrow = (datetime.datetime.now() + datetime.timedelta(days=1)).strftime(<span>&quot;</span><span>%Y-%m-%d</span><span>&quot;</span><span>);

Weather </span>= get_Weather() <span>#</span><span>&#x83B7;&#x53D6;&#x5F53;&#x5929;&#x5929;&#x6C14;&#x4FE1;&#x606F;</span>
Weather_text = Weather[<span>&quot;</span><span>text</span><span>&quot;</span>] <span>#</span><span>&#x83B7;&#x53D6;&#x5F53;&#x5929;&#x5929;&#x6C14;&#x6587;&#x5B57;</span>
Weather_temp = Weather[<span>&quot;</span><span>temp</span><span>&quot;</span>] <span>#</span><span>&#x5B9E;&#x65F6;&#x83B7;&#x53D6;&#x5F53;&#x524D;&#x6E29;&#x5EA6;</span>
Weather_feelsLike = Weather[<span>&quot;</span><span>feelsLike</span><span>&quot;</span>] <span>#</span><span>&#x83B7;&#x53D6;&#x5F53;&#x524D;&#x4F53;&#x611F;&#x6E29;&#x5EA6;</span>


Weather_3d_day
= get_3d_Weather(1) # 获取当天的预报天气
Weather_3d_day_tempMax = Weather_3d_day["tempMax"] #获取当天预报最高温度
Weather_3d_day_tempMin = Weather_3d_day["tempMin"] #获取当天预报最低温度
Weather_3d_day_uvIndex = Weather_3d_day["uvIndex"] #获取当天紫外线强度

Weather_3d_tomorrow
= get_3d_Weather(0) # 获取明天天气
Weather_3d_tomorrow_textDay = Weather_3d_day["textDay"] # 获取第二天天气文字
Weather_3d_tomorrow_tempMax = Weather_3d_day["tempMax"] # 获取第二天预报最高温度
Weather_3d_tomorrow_tempMin = Weather_3d_day["tempMin"] # 获取第二天预报最低温度
Weather_3d_tomorrow_uvIndex = Weather_3d_day["uvIndex"] # 获取第二天紫外线强度
# 获取舔狗日记

tiangou
= get_tiangou();

cur_time </span>=<span> time.time()
</span><span>#</span><span>print(cur_time)</span>
local_tz = pytz.timezone(<span>&quot;</span><span>Asia/Shanghai</span><span>&quot;</span><span>)
local_time </span>= datetime.datetime.fromtimestamp(cur_time, tz=<span>local_tz).hour
</span><span>#</span><span> print(local_time)</span>


Ncov_zz
= ncov();
Ncov_city
= Ncov_zz["city"];
# confirm 确诊病例数量
Ncov_confirm = Ncov_zz["confirm"];
# curConfirm 当前确诊数量
Ncov_curConfirm = Ncov_zz["curConfirm"];
# died 死亡数量
# heal 治愈数量
Ncov_heal = Ncov_zz["heal"];
# asymptomatic 无症状感染数量
# nCoV_news_mid = nCoV_news(0); # 获取疫情中风险地区
# time.sleep(1000)
nCoV_news_num = nCoV_news(1);#获取全国疫情数据
# time.sleep(1000)
# nCoV_news_high = nCoV_news(2); # 获取疫情高风险地区
currentConfirmedCount = nCoV_news_num["currentConfirmedCount"]#现存确诊人数
seriousCount = nCoV_news_num["seriousCount"] #现存无症状
beijing_Time = datetime.datetime.fromtimestamp(cur_time, tz=local_tz).strftime("%Y-%m-%d %H:%M:%S");

Ncov_desp </span>= (<span>&quot;</span><span>\n| -------- |&#x5168;&#x56FD;&#x75AB;&#x60C5;&#x5B9E;&#x65F6;&#x64AD;&#x62A5;|----------------: |\n</span><span>&quot;</span>+
<span>&quot;</span><span>&#x622A;&#x81F3;&#x5317;&#x4EAC;&#x65F6;&#x95F4; </span><span>&quot;</span>+beijing_Time+<span>&quot;</span><span>\n</span><span>&quot;</span>+
<span>&quot;</span><span>&#x5168;&#x56FD;&#x73B0;&#x5B58;&#x786E;&#x8BCA;&#x75C5;&#x4F8B;:</span><span>&quot;</span> + str(currentConfirmedCount)+<span>&quot;</span><span>\n</span><span>&quot;</span>+
<span>&quot;</span><span>&#x5168;&#x56FD;&#x73B0;&#x5B58;&#x65E0;&#x75C7;&#x72B6;&#x75C5;&#x4F8B;:</span><span>&quot;</span> + str(seriousCount) + <span>&quot;</span><span>\n</span><span>&quot;</span> +<span>
Ncov_city </span>+<span>&quot;</span><span>&#x73B0;&#x5B58;&#x786E;&#x8BCA;&#x75C5;&#x4F8B;:</span><span>&quot;</span> + str(Ncov_curConfirm)  + <span>&quot;&quot;</span><span>
             )

desp_Weather_temp_text </span>= <span>&quot;&quot;</span><span>;
desp_Weather_text </span>= <span>&quot;&quot;</span><span>;
desp_Weather_3d_tomorrow_textDay_text </span>= <span>&quot;&quot;</span><span>;
desp_Weather_3d_day_tempMax_text </span>= <span>&quot;&quot;</span><span>;
desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;&quot;</span><span>;
desp_day </span>= <span>&quot;&quot;</span><span>;
desp_tomorrow </span>= <span>&quot;&quot;</span><span>;
desp_Weather_3d_day_uvIndex </span>= <span>&quot;&quot;</span><span>;

</span><span>#</span><span> &#x665A;&#x4E0A;&#x516B;&#x70B9; &#x67E5;&#x8BE2;&#x7B2C;&#x4E8C;&#x5929;&#x5929;&#x6C14;&#x60C5;&#x51B5;,&#x7136;&#x540E;&#x6839;&#x636E;&#x5F53;&#x524D;&#x65F6;&#x95F4;&#xFF0C;&#x5B9A;&#x5236;&#x5316;&#x63A8;&#x9001;&#x5F53;&#x524D;&#x63D0;&#x9192;</span>
<span>if</span> (local_time &gt;= 20 <span>and</span> local_time <=>):
    <span>#</span><span> &#x5982;&#x679C;&#x6709;&#x96E8;&#xFF0C;&#x4E0D;&#x6821;&#x9A8C;&#x6700;&#x9AD8;&#x6E29;&#x5EA6;</span>
    <span>#</span><span> &#x5224;&#x65AD;&#x5929;&#x6C14;</span>
    <span>if</span> (<span>&quot;</span><span>&#x96E8;</span><span>&quot;</span> <span>in</span><span> Weather_3d_tomorrow_textDay):
        </span><span>if</span> Weather_3d_tomorrow_textDay.<span>__eq__</span>(<span>&quot;</span><span>&#x5927;&#x96E8;</span><span>&quot;</span><span>):
            desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
            desp_Weather_3d_tomorrow_textDay_text </span>= <span>&quot;</span><span>\n&#x660E;&#x5929;</span><span>&quot;</span>+ Weather_3d_tomorrow_textDay + <span>&quot;</span><span>,&#x50BB;&#x74DC;&#xFF0C;&#x8BB0;&#x5F97;&#x5E26;&#x4F1E;&#xFF0C;&#x8BB0;&#x5F97;&#x65E9;&#x70B9;&#x51FA;&#x95E8;&#xFF0C;&#x665A;&#x4E0A;&#x65E9;&#x70B9;&#x7761;\n</span><span>&quot;</span>
        <span>elif</span> Weather_3d_tomorrow_textDay.<span>__eq__</span>(<span>&quot;</span><span>&#x4E2D;&#x96E8;</span><span>&quot;</span><span>):
            desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
            desp_Weather_3d_tomorrow_textDay_text </span>= <span>&quot;</span><span>\n&#x660E;&#x5929;</span><span>&quot;</span> + Weather_3d_tomorrow_textDay + <span>&quot;</span><span>,&#x50BB;&#x74DC;&#xFF0C;&#x8BB0;&#x5F97;&#x5E26;&#x4F1E;&#xFF0C;&#x8BB0;&#x5F97;&#x65E9;&#x70B9;&#x51FA;&#x95E8;&#xFF0C;&#x665A;&#x4E0A;&#x65E9;&#x70B9;&#x7761;\n</span><span>&quot;</span>
        <span>elif</span> Weather_3d_tomorrow_textDay.<span>__eq__</span>(<span>&quot;</span><span>&#x96F7;&#x9635;&#x96E8;</span><span>&quot;</span><span>):
            desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
            desp_Weather_3d_tomorrow_textDay_text </span>= <span>&quot;</span><span>\n&#x660E;&#x5929;</span><span>&quot;</span> + Weather_3d_tomorrow_textDay + <span>&quot;</span><span>,&#x5C0F;&#x5FC3;&#x6253;&#x96F7;&#xFF0C;&#x62B1;&#x62B1;&#x50BB;&#x74DC;&#xFF0C;&#x4E0D;&#x6015;&#x4E0D;&#x6015;\n</span><span>&quot;</span>
        <span>else</span><span>:
            desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
            desp_Weather_3d_tomorrow_textDay_text </span>= <span>&quot;</span><span>\n&#x660E;&#x5929;</span><span>&quot;</span> + Weather_3d_tomorrow_textDay + <span>&quot;</span><span>,&#x8BB0;&#x5F97;&#x5E26;&#x4F1E;&#xFF0C;&#x8BF7;&#x6CE8;&#x610F;&#x5929;&#x6C14;\n</span><span>&quot;</span>
    <span>#</span><span> &#x6CA1;&#x96E8;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x6839;&#x636E;&#x6E29;&#x5EA6;&#x63D0;&#x9192;&#x660E;&#x5929;&#x5929;&#x6C14;</span>
    <span>else</span><span>:
        desp_Weather_3d_tomorrow_textDay_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
        </span><span>if</span> (int(Weather_3d_tomorrow_tempMax) &gt;= 33<span>):
            desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;</span><span>\n&#x660E;&#x5929;&#x5929;&#x6C14;&#x8F83;&#x70ED;&#xFF0C;&#x6CE8;&#x610F;&#x9632;&#x6652;&#xFF01;\n</span><span>&quot;</span>
        <span>else</span><span>:
            desp_Weather_3d_tomorrow_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;

    desp_tomorrow </span>=<span> (
                </span><span>&quot;</span><span>&#x660E;&#x5929; </span><span>&quot;</span> + date_tomorrow + <span>&quot;</span><span>\n&#x5929;&#x6C14;&#xFF1A;</span><span>&quot;</span> + Weather_3d_tomorrow_textDay + desp_Weather_3d_tomorrow_textDay_text +
                <span>&quot;</span><span>&#x660E;&#x5929;&#x6700;&#x9AD8;&#x6E29;&#x5EA6;&#xFF1A;</span><span>&quot;</span> + Weather_3d_tomorrow_tempMax + <span>&quot;</span><span>&#x2103;&#x3002;</span><span>&quot;</span> + desp_Weather_3d_tomorrow_tempMax_text +
                <span>&quot;</span><span>&#x660E;&#x5929;&#x6700;&#x4F4E;&#x6E29;&#x5EA6;&#xFF1A;</span><span>&quot;</span> + Weather_3d_tomorrow_tempMin + <span>&quot;</span><span>&#x2103;&#x3002;</span><span>&quot;</span><span>
                );
</span><span>elif</span> (local_time &gt;= 0 <span>and</span> local_time &lt; 20<span>):
    </span><span>#</span><span> desp_Weather_3d_tomorrow_textDay_text = &quot;\n&quot;;</span>
    <span>#</span><span> desp_Weather_3d_tomorrow_tempMax_text = &quot;\n&quot;;</span>
    <span>#</span><span> &#x5224;&#x65AD;&#x5F53;&#x524D;&#x6E29;&#x5EA6;</span>
    <span>if</span> (int(Weather_temp) &gt;= 33<span>):
        </span><span>if</span> (8 &lt; local_time &lt; 16<span>):
            desp_Weather_temp_text </span>= <span>&quot;</span><span>&#xFF0C;&#x5929;&#x6C14;&#x6709;&#x70B9;&#x70ED;&#x5594;&#xFF01;\n</span><span>&quot;</span>
        <span>else</span><span>:
            desp_Weather_temp_text </span>= <span>&quot;</span><span>&#x3002;\n</span><span>&quot;</span><span>;
    </span><span>else</span><span>:
        desp_Weather_temp_text </span>= <span>&quot;</span><span>&#x3002;\n</span><span>&quot;</span><span>;

    </span><span>#</span><span> &#x5224;&#x65AD;&#x7D2B;&#x5916;&#x7EBF;&#x7B49;&#x7EA7;</span>
    <span>if</span> (8 <=>):
        <span>if</span> (4 &lt; int(Weather_3d_day_uvIndex) <=>):
            desp_Weather_3d_day_uvIndex = <span>&quot;</span><span>\n&#x4ECA;&#x5929;&#x7D2B;&#x5916;&#x7EBF;&#x7B49;&#x7EA7;</span><span>&quot;</span> + Weather_3d_day_uvIndex + <span>&quot;</span><span>,&#x9002;&#x5408;&#x6237;&#x5916;&#x8FD0;&#x52A8;&#x3002;\n</span><span>&quot;</span>
        <span>elif</span> (6 &lt; int(Weather_3d_day_uvIndex) <=>):
            desp_Weather_3d_day_uvIndex = <span>&quot;</span><span>\n&#x4ECA;&#x5929;&#x7D2B;&#x5916;&#x7EBF;&#x7B49;&#x7EA7;</span><span>&quot;</span> + Weather_3d_day_uvIndex + <span>&quot;</span><span>,&#x8BF7;&#x6CE8;&#x610F;&#x9632;&#x6652;&#x3002;\n</span><span>&quot;</span>
        <span>elif</span> (9 &lt;<span> int(Weather_3d_day_uvIndex)):
            desp_Weather_3d_day_uvIndex </span>= <span>&quot;</span><span>\n&#x4ECA;&#x5929;&#x7D2B;&#x5916;&#x7EBF;&#x7B49;&#x7EA7;</span><span>&quot;</span> + Weather_3d_day_uvIndex + <span>&quot;</span><span>,&#x5B9D;,&#x5916;&#x8FB9;&#x592A;&#x6652;&#x4E86;,&#x80FD;&#x4E0D;&#x51FA;&#x53BB;&#x5C31;&#x4E0D;&#x8981;&#x51FA;&#x53BB;&#x4E86;&#x3002;\n</span><span>&quot;</span>
        <span>else</span><span>:
            desp_Weather_3d_day_uvIndex </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
    </span><span>else</span><span>:
        desp_Weather_3d_day_uvIndex </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;

        </span><span>#</span><span> &#x5224;&#x65AD;&#x5F53;&#x5929;&#x662F;&#x5426;&#x6709;&#x96E8;&#xFF0C;&#x6709;&#x96E8;&#x4E0D;&#x5224;&#x65AD;&#x5F53;&#x5929;&#x6700;&#x9AD8;&#x6E29;&#x5EA6;</span>
        Weather_text = <span>&quot;</span><span>&#x6674;</span><span>&quot;</span>
    <span>if</span> (<span>&quot;</span><span>&#x96E8;</span><span>&quot;</span> <span>in</span><span> Weather_text):
        </span><span>if</span> Weather_text.<span>__eq__</span>(<span>&quot;</span><span>&#x5927;&#x96E8;</span><span>&quot;</span><span>):
            desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
            desp_Weather_text </span>= <span>&quot;</span><span>\n&#x5F53;&#x524D;&#x6709;</span><span>&quot;</span> + Weather_text + <span>&quot;</span><span>,&#x50BB;&#x74DC;&#xFF0C;&#x8D76;&#x7D27;&#x907F;&#x96E8;&#xFF0C;&#x4E0D;&#x8981;&#x518D;&#x5916;&#x51FA;&#x5566;\n</span><span>&quot;</span>
        <span>elif</span> Weather_text.<span>__eq__</span>(<span>&quot;</span><span>&#x4E2D;&#x96E8;</span><span>&quot;</span><span>):
            desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>
            desp_Weather_text </span>= <span>&quot;</span><span>\n&#x5F53;&#x524D;&#x6709;</span><span>&quot;</span> + Weather_text + <span>&quot;</span><span>,&#x50BB;&#x74DC;&#xFF0C;&#x8D76;&#x7D27;&#x907F;&#x96E8;&#xFF0C;&#x4E0D;&#x8981;&#x518D;&#x5916;&#x51FA;&#x5566;\n</span><span>&quot;</span>
        <span>elif</span> Weather_text.<span>__eq__</span>(<span>&quot;</span><span>&#x96F7;&#x9635;&#x96E8;</span><span>&quot;</span><span>):
            desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>
            desp_Weather_text </span>= <span>&quot;</span><span>\n&#x5F53;&#x524D;&#x6709;</span><span>&quot;</span> + Weather_text + <span>&quot;</span><span>,&#x5C0F;&#x5FC3;&#x6253;&#x96F7;&#xFF0C;&#x62B1;&#x62B1;&#x50BB;&#x74DC;&#xFF0C;&#x4E0D;&#x6015;&#x4E0D;&#x6015;\n</span><span>&quot;</span>
        <span>else</span><span>:
            desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>
            desp_Weather_text </span>= <span>&quot;</span><span>\n&#x5F53;&#x524D;&#x6709;</span><span>&quot;</span> + Weather_text + <span>&quot;</span><span>,&#x8BF7;&#x6CE8;&#x610F;&#x5929;&#x6C14;\n</span><span>&quot;</span>
    <span>else</span><span>:
        desp_Weather_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
        </span><span>#</span><span> &#x5224;&#x65AD;&#x5F53;&#x5929;&#x6700;&#x9AD8;&#x6E29;&#x5EA6;</span>
        <span>if</span> (int(Weather_3d_day_tempMax) &gt;= 33<span>):
            </span><span>#</span><span> &#x4E0B;&#x5348;16&#x70B9;&#x4EE5;&#x540E;&#x4E0D;&#x7528;&#x63D0;&#x793A;</span>
            <span>if</span> (local_time &gt; 16<span>):
                desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;
            </span><span>else</span><span>:
                desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n&#x4ECA;&#x5929;&#x5929;&#x6C14;&#x8F83;&#x70ED;&#xFF0C;&#x6CE8;&#x610F;&#x9632;&#x6652;&#xFF01;\n</span><span>&quot;</span>
        <span>else</span><span>:
            desp_Weather_3d_day_tempMax_text </span>= <span>&quot;</span><span>\n</span><span>&quot;</span><span>;

    desp_day </span>=<span> (
            </span><span>&quot;</span><span>&#x5F53;&#x524D;&#x5929;&#x6C14;&#xFF1A;</span><span>&quot;</span> + Weather_text + desp_Weather_text +
            <span>&quot;</span><span>&#x5F53;&#x524D;&#x6E29;&#x5EA6;&#xFF1A;</span><span>&quot;</span> + Weather_temp + <span>&quot;</span><span>&#x2103;</span><span>&quot;</span> + desp_Weather_temp_text +
            <span>&quot;</span><span>&#x4ECA;&#x5929;&#x6700;&#x9AD8;&#x6E29;&#x5EA6;&#xFF1A;</span><span>&quot;</span> + Weather_3d_day_tempMax + <span>&quot;</span><span>&#x2103;&#x3002;</span><span>&quot;</span> + desp_Weather_3d_day_tempMax_text +
            <span>&quot;</span><span>&#x6700;&#x4F4E;&#x6E29;&#x5EA6;&#xFF1A;</span><span>&quot;</span> + Weather_3d_day_tempMin + <span>&quot;</span><span>&#x2103;&#x3002;</span><span>&quot;</span> + desp_Weather_3d_day_uvIndex <span>#</span><span> &#x7D2B;&#x5916;&#x7EBF; 16&#x70B9;&#x540E;&#x4E0D;&#x63D0;&#x793A;</span>
        + <span>&quot;</span><span>\n</span><span>&quot;</span> +wyy_content + <span>&quot;</span><span>\n&#x6765;&#x81EA;:&#x7F51;&#x6613;&#x4E91;&#x97F3;&#x4E50;&#x300A;</span><span>&quot;</span> + wyy_source + <span>&quot;</span><span>&#x300B;</span><span>&quot;</span> +
            <span>&quot;</span><span>\n| -----------------&#x8214;&#x72D7;&#x65E5;&#x8BB0;-----------------: |\n</span><span>&quot;</span> +<span>
            tiangou </span>+ <span>&quot;</span><span>\n&#x6765;&#x81EA;:&#x8214;&#x72D7;&#x65E5;&#x8BB0;\n</span><span>&quot;</span><span>

    );
</span><span>#</span><span>#&#x4EE5;&#x4E0B;&#x662F;&#x901A;&#x77E5;&#x5185;&#x5BB9;&#xFF01;</span>
desp = <span>&quot;</span><span>&#x82CF;&#x5DDE;\n</span><span>&quot;</span> + desp_day + desp_tomorrow +<span> Ncov_desp;
</span><span>return</span><span> desp;

# 程序入口,消息推送
def main():
title
= '每日推送';
desp
= get_desp();
#url = f"https://sctapi.ftqq.com/{SendKey}.send?title={title}&desp={desp}&openid={userid}";
token = SendKey #在pushpush网站中可以找到
content = desp #改成你要的正文内容
pushurl = 'http://www.pushplus.plus/send'
data
= {
"token":token,
"title":title,
"content":content
}
body
=json.dumps(data).encode(encoding='utf-8')
headers
= {'Content-Type':'application/json'}
requests.post(pushurl,data
=body,headers=headers)
res
= requests.post(pushurl);
if res.status_code == 200:
print("成功!")
else:
title
= "天气推送失败!"
##desp = "尊敬的管理员,消息推送失败\n推送日志"+res.json();
print(res.status_code)
#url = f"https://sctapi.ftqq.com/{SendKey}.send?title={title}&desp={desp}&openid={adminUserId}";
#res = requests.post(url);
print("错误日志推送成功 !")

def main_handler(event, context):
main()

if name == 'main':
main()
详细代码

Original: https://www.cnblogs.com/52DSG/p/15984951.html
Author: 止于言情
Title: 定制云函数天气推送

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/644041/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球