本帖最后由 suyaming 于 2021-9-30 10:13 编辑
前言
之前用易语言写了个查询王者战力的软件,今天突发奇想,看能不能每周自动推送,正好最近在学习Python,就用Python加腾讯云函数来实现。
代码部分
代码部分没什么复杂的,简单的网络请求加json解析。代码贴在下面,用的是sever酱的微信推送,其实可以自己做一个微信推送,也不难,但是为了大家能直接用,直接用sever酱吧。
# -*- coding: utf8 -*-
import requests
from urllib.parse import quote
import jsonpath
def infor_get(event,context):
hero_name = ['孙悟空', '李白', '安琪拉', '干将莫邪'] # 可以自己添加英雄
platforms = ['qq', 'wx'] # 可选[ios_wx, ios_qq]
for n in hero_name:
result = ''
for i in range(0, len(platforms)):
url = 'https://www.sapi.run/hero/select.php?hero=' + quote(n) + '&type=' + platforms[i]
re = requests.get(url=url)
name = jsonpath.jsonpath(re.json(), '$..alias')[0]
area = jsonpath.jsonpath(re.json(), '$..area')[0]
areapower = jsonpath.jsonpath(re.json(), '$..areaPower')[0]
city = jsonpath.jsonpath(re.json(), '$..city')[0]
citypower = jsonpath.jsonpath(re.json(), '$..cityPower')[0]
province = jsonpath.jsonpath(re.json(), '$..province')[0]
provincepower = jsonpath.jsonpath(re.json(), '$..provincePower')[0]
updatetime = jsonpath.jsonpath(re.json(), '$..updatetime')[0]
platform = jsonpath.jsonpath(re.json(), '$..platform')[0]
result = result + '====' + platform + ' ' + name + '====' + '\n' + area + ':' + areapower + '\n' + city + ':' + citypower + '\n' + province + ':' + provincepower + '\n' + updatetime + '\n'
wx_key = '' # Sever酱推送Key
wx_url = 'https://sctapi.ftqq.com/' + wx_key + '.send?title=' + '本周战力查询结果' + '&desp=' + quote(result)
wx_ts = requests.post(url=wx_url)
if wx_ts.status_code == 200:
print('推送成功')
else:
print('失败')
腾讯云函数部署部分
首先大家自己申请个账号,这个没啥好说的。然后进入云函数控制台。
选择新建一个云函数,进入到下图界面,选择自定义函数
然后如图部分改为
index.infor_get
然后把代码粘贴到下面那个代码框
记住在代码里要更改你需要推送的英雄,和渠道,默认安卓区QQ和安卓区微信,剩下两个是苹果QQ和苹果微信,还有Sever酱的key。改好以后。开始更改触发器配置,任务名称随意,其他的和我下图一样
代码
0 0 12 * * MON *
然后点击完成,部署完成后,会自动跳转到管理页面选择函数代码
你会发现import jsonpath是红的,因为云函数默认没有jsonpath这个依赖,下面我们给添加上。
点击终端->新终端
然后输入
cd src
pip install jsonpath -t .
回车,完成后点击部署。然后刷新,没报红了,依赖安装完毕。然后点击测试,如果提示没部署就立即部署就行,然后看看输出
看到推送成功,基本就ok了。我们再看看微信。
成功收到消息。教程完毕,以后我们每周一中午12点都会收到最新的最低战力推送。
最后
虽然没啥难度,但是还是不要脸的求个免费的评分。直接复制代码可能会报错,我把源文件放在下面。
infor_get.zip
(828 Bytes, 下载次数: 40)
|