医生 发表于 2021-4-21 23:36

女朋友要我每天给她报天气,这不耽误我打游戏嘛

本帖最后由 医生 于 2021-4-25 19:06 编辑

既然是重复性工作,还是自动化实现吧,省事{:301_997:}

做了代码简化,非常简单,四步走,不需要懂代码就能搞定。
分享给大家
https://static.52pojie.cn/static/image/hrline/1.gif
(最下方有问答环节,回答了大部分朋友的问题,想动手做的朋友先看看!!!)
https://static.52pojie.cn/static/image/hrline/1.gif
python3.6 + 腾讯云函数 + qmsg酱 + 和风天气
https://static.52pojie.cn/static/image/hrline/1.gif

教程:

1、Qmsg酱:

打开官网:https://qmsg.zendee.cn/index.html

[*]登录管理台,拿到key,留着一会用
[*]qq号码 中,添加上要接受信息的qq
[*]在 Qmsg酱 中选个qq加上,收消息用


2、和风天气:

打开官网:https://console.qweather.com/
注册登录填写信息,拿到key,留着一会用


3、本地建个记事本,把代码复制进去,进行修改

# 禁止转载https://www.52pojie.cn/thread-1423918-1-1.html
import requests
import json
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# 禁用安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

global contents
contents = ''

# 北京
def sign():
    yburl = 'https://free-api.heweather.com/s6/weather/forecast'
    value = {
      'location': '北京',
      'key': '【和风天气的key】',
      'lang': 'zh'
    }
    ybreq = requests.get(yburl, params=value)
    ybjs = ybreq.json()

    # 返回api参数:
    # print(ybjs)

    for i in range(2):
      yb = ybjs['HeWeather6']['daily_forecast']
      d1 = yb['date'] + ' ' + yb['cond_txt_d'] + ' ' + yb['tmp_min'] + '—' + yb['tmp_max'] + '℃'+ ' ' + yb['wind_dir']+ ' ' + yb['wind_sc'] + '级'
      # output(d1)
    # qq推送
    qqtalk = 'https://qmsg.zendee.cn/send/【qmsg的key】?msg=' + d1 + '&qq=【接收消息的qq号】'
    requests.get(qqtalk)


def main():
    sign()

def main_handler(event, context):
    return main()

if __name__ == '__main__':
    main()




[*]修改16行【和风天气的key】,替换成 2 中拿到的key
[*]修改30行【qmsg的key】,替换成 1 中拿到的key
[*]修改30行【接收消息的qq号】,第一步中,加qq的你自己的号
[*]修改15行 北京 ,成你自己的地理位置(以市为单位) 例如:上海
[*]25行,数字为2,发送明天的,数字改为1,发送今天的。这里我是每天晚上发明天的天气信息,所以是2,如果你要早上发,改为1
[*]发送的消息中,带有日期,我觉得没用,建议测试完成后删除,删除代码27行中的   yb[ i ]['date'] + ' ' +
即可。加上是为了给你测试发送的日期对不对用的,不对的话按照上一步进行修改。



4、腾讯云函数:

打开腾讯云函数登录:https://console.cloud.tencent.com/scf/list

[*] 函数服务——新建——自定义创建
[*]运行环境改为python3.6
[*]代码复制进去
[*]往下拉到底,触发器配置——自定义创建,触发周期改为自定义,Cron表达式改为下方这一段,21是21点,想要早上6点触发就改为6,其他不要动。 0 0 21 * * * *
[*]最下方,点完成,跳转管理


5、测试是否完成:


进函数代码,下拉,有个部署测试,点击测试,qq收到消息,完成。


运行成功:


https://static.52pojie.cn/static/image/hrline/1.gifhttps://static.52pojie.cn/static/image/hrline/1.gif

至此,自动化发送天气信息就完成了,撸铁打游戏时间又多了{:301_997:}

https://static.52pojie.cn/static/image/hrline/1.gifhttps://static.52pojie.cn/static/image/hrline/1.gif
问答环节(必读):
我发现有很多人想微信推送,我并不建议微信推送,因为不好用,我自己的代码里有钉钉、微信(server酱)、qq(Qmsg),三种推送方式,我截取了qq这一种做了简化给大家分享出来,因为这个最好用,能清晰的看到相对于前几天的天气情况,从而作出判断,很直观的感受。但是微信的话,用过server酱的都知道,没那么方便。

[*]能不能微信,怎么改
      微信比较麻烦,会的人自己改一下,不会的话别折腾了

[*]为什么不直接看手机上的天气
      手机是有,会忘记看,但 qq消息一定会看。

[*]代码报错怎么办
      能执行就不用管,云函数环境和本地不太一样

[*]太生硬,能不能加点话
      可以,有另一个接口,根据天气情况进行提取对应的话,我觉得比较生硬且影响效率就没加,想加的去看一下自己改

[*]为什么收不到消息
      已经有人交作业了,所以步骤和代码都没问题,仔细检查一下是不是漏了某个步骤。

https://static.52pojie.cn/static/image/hrline/1.gifhttps://static.52pojie.cn/static/image/hrline/1.gif

我的其他帖子:
QQ9.4.6 防撤回(最新版): https://www.52pojie.cn/thread-1414675-1-1.html
TIM3.3.5 防撤回(最新版): https://www.52pojie.cn/thread-1385188-1-1.html

Stap 发表于 2021-4-21 23:44

促进人类不断进步的原因果然还是欲望(财富+女人)

张洋洋1314 发表于 2021-4-22 00:27

为什么我运行的时候显示报错第四行跟第六行 代码错误

luoxiangbao 发表于 2021-4-25 15:34

# 禁止转载https://www.52pojie.cn/thread-1423918-1-1.html
import requests
import json
from requests.packages.urllib3.exceptions import InsecureRequestWarning
# 禁用安全请求警告
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

global contents
contents = ''

# 北京
def sign():
    yburl = 'https://free-api.heweather.com/s6/weather/forecast'
    value = {
      'location': '长沙',
      'key': 'key1',
      'lang': 'zh'
    }
    ybreq = requests.get(yburl, params=value)
    ybjs = ybreq.json()

    # 返回api参数:
    # print(ybjs)

    yb = ybjs['HeWeather6']['daily_forecast']
    d1 = ''
    for i in range(len(yb)):
      d1 =d1 + yb['date'] + ' ' + yb['cond_txt_d'] + ' ' + yb['tmp_min'] + '—' + yb['tmp_max'] + '℃'+ ' ' + yb['wind_dir']+ ' ' + yb['wind_sc'] + '级'+'\n'
      print(d1)
   
#   #获取鸡汤
#    #此处为鸡汤api地址,坛友可自行网上查询其他地址替换
#   jturl = 'https://data.zhai78.com/openOneGood.php'
#   jtreq = requests.get(jturl, params=value)
#   jtjs = jtreq.json()
#   # 返回jtapi参数:
#   print(jtjs)
#   jttxt = jtjs['txt']
    # # qq推送
    # qqtalk = 'https://qmsg.zendee.cn/send/key2?msg=【早安】@face=176@' + jttxt + '今日天气:' + d1 +'&qq=1530402404'
    # requests.get(qqtalk)
   # 微信推送
    Wxtalk = 'https://sctapi.ftqq.com/key3.send'
    NewValue = {
      'text': '往后三天的天气情况:',
      'desp': d1,
      'lang': 'zh'
    }
    requests.post(Wxtalk, params=NewValue)

def main():
    sign()

def main_handler(event, context):
    return main()

if __name__ == '__main__':
    main()

医生 发表于 2021-4-21 23:55

15502453626 发表于 2021-4-21 23:52
这是女朋友么 手机不会自己看么

你可以问问对象为什么,如果有的话{:1_926:}

smile1110 发表于 2021-4-26 18:46

虽然你没有女朋友,不过我不愿意当面拆穿你 =.=6

netpeng 发表于 2021-4-21 23:41

所以,女朋友是第一生产力,总结完毕。

zllebron3wade 发表于 2021-4-22 16:27

shengxi 发表于 2021-4-22 15:42
Server酱可以发微信的,但是要怎么写呢,我弄了半天不知道这推送要怎么写

weburl = 'https://sctapi.ftqq.com/自己的key.send'
    newvalue = {
      'title': '每日天气',
      'desp': d1,
      'lang': 'zh'
    }
    requests.post(weburl,params=newvalue)

邪恶海盗 发表于 2021-4-21 23:51

wuyei 发表于 2021-4-21 23:45
没女朋友的怎么办?

五姑娘伺候...{:1_893:}

15502453626 发表于 2021-4-21 23:52

这是女朋友么 手机不会自己看么

腿毛哥 发表于 2021-4-21 23:43

中国好男友,我爱了。感谢大哥的分享。我也给女朋友发去了

wuyei 发表于 2021-4-21 23:45


没女朋友的怎么办?

tt0202 发表于 2021-4-21 23:49

感谢分享   支持

医生 发表于 2021-4-21 23:54

wuyei 发表于 2021-4-21 23:45
没女朋友的怎么办?

没对象还在这玩电脑{:1_926:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 女朋友要我每天给她报天气,这不耽误我打游戏嘛