小阿狸呀 发表于 2022-8-22 17:49

微信公众号消息推送(内含天气预报API接口)

本帖最后由 小阿狸呀 于 2022-8-23 12:02 编辑

大家好我是小阿狸最近刷视频看到很多那种微信公众号推送的,我也去尝试写了一下
今天给大家分享一下教程

首先是打开https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login,打开这个链接去扫码登录,登录之后会给你
上面这两个,待会需要用

然后滑到下面,找到个二维码,扫码

扫码之后会给右边的微信号,这里这个数据也要用到
找到下面新增模板

标题自己定,对应如图所示,模板具体内容在下面


{{date2.DATA}}
{{demo.DATA}}

{{date.DATA}}
城市:{{city.DATA}}
天气:{{weather.DATA}}
最低气温:{{tempn.DATA}}
最高气温:{{temp.DATA}}
您已经在地球上存活了:{{live.DATA}}天

{{wd.DATA}}
{{english.DATA}}

上面这些配置好之后接下来就要把刚刚的数据都放入python中了
这里需要提前pip install requests这个库

只需要把这八行数据配置好就行了
appid='wx065c2sjdhrujerd9'
secret='9490534587fc48c8470fkswie8j2bcdd'
touser=['onOKZ5vas9nGcnqz1_NWJIjwjeml','onOKZ5g_yY2e2uZQ45nsAksjeAje']#微信用户id
template_id='gTBAfrI2gDO_vwqQa7VD214kITkP_F-0SkZ-Swijwek'#模板id
city_id='101191301'#城市天气id
birthday = "2003-04-10"
info="单身狗也要对自己好一点~"#底部信息
e='Single people should be kind to themselves'#底部信息

import requests
import json
import time
import datetime

if __name__ =="__main__":
    appid='wx065c2sjdhrujerd9'
    secret='9490534587fc48c8470fkswie8j2bcdd'
    touser=['onOKZ5vas9nGcnqz1_NWJIjwjeml','onOKZ5g_yY2e2uZQ45nsAksjeAje']#微信用户id
    template_id='gTBAfrI2gDO_vwqQa7VD214kITkP_F-0SkZ-Swijwek'#模板id
    city_id='101191301'#城市天气id
    birthday = "2003-04-10"
    info="单身狗也要对自己好一点~"#底部信息
    e='Single people should be kind to themselves'#底部信息


    grant_type = 'client_credential'
    url=f'https://api.weixin.qq.com/cgi-bin/token?grant_type={grant_type}&appid={appid}&secret={secret}'
    response=requests.get(url).json()
    access_token=''
    if response['expires_in']==7200:
      # 获取token
      access_token=response['access_token']
      #天气获取
      headers = {
            'Referer': 'http://www.weather.com.cn/',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36'
      }
      url = f'http://d1.weather.com.cn/weather_index/{city_id}.html?_=' + str(int(round(time.time() * 1000)))
      #日期计算
      r = requests.get(url, headers=headers)
      r.encoding = "utf8"
      res = eval(r.text.split(";").split("=")[-1])
      time=res['weatherinfo']['fctime']
      year=time
      month=time
      day=time
      week_list = ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期日"]
      week=week_list
      date = f'{year}年{month}月{day}日{week}'
      date2 = f'{int(month)}月{day}日'

      # 你活了多久
      birthday_date = datetime.datetime.strptime(birthday, "%Y-%m-%d")
      curr_datetime = datetime.datetime.now()
      minus_datetime = curr_datetime - birthday_date
      #发送消息
      sendMessage_url=f"https://api.weixin.qq.com/cgi-bin/message/template/send?access_token={access_token}"
      for user in touser:
            data={
               "touser":user,
               "template_id":template_id,
               "appid":appid,
               "data":{
                   "demo": {
                     "value": "测试语句",
                     "color": "#AAFF00"
                   },
                   "live": {
                     "value": minus_datetime.days,
                     "color": "#00FF00"
                   },
                   "date2": {
                     "value": date2,
                     "color": "#6B6A66"
                   },
                   "date": {
                     "value": date,
                     "color": "#CAA06A"
                   },
                  "city":{
                        "value":res['weatherinfo']['city'],
                        "color": "#00FF00"
                  },
                   "weather":{
                     "value":res['weatherinfo']['weather'],
                     "color": "#F9AD08"
                   },
                  "tempn":{
                        "value":res['weatherinfo']['tempn'],
                        "color": "#9DB981"
                  },
                   "temp":{
                        "value":res['weatherinfo']['temp'],
                        "color":"#CAA06A"
                  },
                   "wd":{
                        "value":info,
                        "color":"#92CAD9"
                  },
                   'english':{
                     "value":e,
                     "color":"#FF0000"
                   }

               }
         }

            getTemp=requests.post(sendMessage_url,data=json.dumps(data)).json()
    else:
      print("appid或secret错误")



最后放一张效果图吧



好了就分享到这里了,觉的有用的可以支持一下

放个城市id的文件吧

a87946001 发表于 2022-8-23 11:54

小刘小刘 发表于 2022-8-22 21:17
城市id怎么查

https://blog.csdn.net/nvisalsd/article/details/107811902
去这个博客看你所在的城市id

xlinux 发表于 2022-8-22 23:06

小刘小刘 发表于 2022-8-22 21:17
城市id怎么查

lsmh 发表于 2022-8-22 20:58

有视频教程吗?

shifoucunzai 发表于 2022-8-22 21:12

关键是咱没有公众号{:1_908:}

小刘小刘 发表于 2022-8-22 21:17

城市id怎么查

tlpking 发表于 2022-8-22 21:29

这个推送程序很好

lansemeiying 发表于 2022-8-22 21:42

最好搞个视频的哈哈

LanTianA 发表于 2022-8-22 21:45

希望出视频

umbrella_red 发表于 2022-8-22 21:50

不错不错,研究研究

gblw 发表于 2022-8-23 09:17

只能用测试公众号嘛! 有没有正式公众号的操作方法!
页: [1] 2 3 4 5 6
查看完整版本: 微信公众号消息推送(内含天气预报API接口)