一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 基于python實現微信模板消息

基于python實現微信模板消息

2020-08-04 11:59腳本之家 Python

本文通過一段代碼實例給大家介紹基于python實現微信模板消息的相關資料,對python模板消息感興趣的朋友一起學習吧

我的風格,廢話不多說了,直接給大家貼代碼了,并在一些難點上給大家附了注釋,具體代碼如下所示:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import urllib2,json
import datetime,time
from config import *
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
class WechatPush():
  def __init__(self,appid,secrect,file_name):
    # 傳入appid
    self.appid = appid
    # 傳入密碼
    self.secrect = secrect
    # 傳入記錄token和過期時間的文件名
    self.file_name=file_name
  def build_timestamp(self,interval):
    # 傳入時間間隔,得到指定interval后的時間 格式為"2015-07-01 14:41:40"
    now = datetime.datetime.now()
    delta = datetime.timedelta(seconds=interval)
    now_interval=now + delta
    return now_interval.strftime(‘%Y-%m-%d %H:%M:%S‘)
  def check_token_expires(self):
    # 判斷token是否過期
    with open(self.file_name,‘r‘) as f:
      line=f.read()
      if len(line)>0:
        expires_time=line.split(",")[1]
        token=line.split(",")[0]
      else:
        return "","true"
    curr_time=time.strftime(‘%Y-%m-%d %H:%M:%S‘)
    # 如果過期返回false
    if curr_time>expires_time:
      return token,"false"
    # 沒過期返回true
    else:
      return token,"true"
  def getToken(self):
    # 獲取accessToken
    url = ‘https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=+self.appid + "&secret="+self.secrect
    try:
      f = urllib2.urlopen(url)
      s = f.read()
      # 讀取json數據
      j = json.loads(s)
      j.keys()
      # 從json中獲取token
      token = j[‘access_token‘]
      # 從json中獲取過期時長
      expires_in =j[‘expires_in‘]
      # 將得到的過期時長減去300秒然后與當前時間做相加計算然后寫入到過期文件
      write_expires=self.build_timestamp(int(expires_in-300))
      content="%s,%s" % (token,write_expires)
      with open(self.file_name,‘w‘) as f:
        f.write(content)
    except Exception,e:
      print e
    return token
  def post_data(self,url,para_dct):
    """觸發post請求微信發送最終的模板消息"""
    para_data = para_dct
    f = urllib2.urlopen(url,para_data)
    content = f.read()
    return content
  def do_push(self,touser,template_id,url,topcolor,data):
    ‘‘‘推送消息 ‘‘‘
    #獲取存入到過期文件中的token,同時判斷是否過期
    token,if_token_expires=self.check_token_expires()
    #如果過期了就重新獲取token
    if if_token_expires=="false":
      token=self.getToken()
    # 背景色設置,貌似不生效 
    if topcolor.strip()==‘‘:
      topcolor = "#7B68EE"
    #最紅post的求情數據
    dict_arr = {‘touser‘: touser, ‘template_id‘:template_id, ‘url‘:url, ‘topcolor‘:topcolor,‘data‘:data}
    json_template = json.dumps(dict_arr)
    requst_url = "https://api.weixin.qq.com/cgi-bin/message/template/send?access_token="+token
    content = self.post_data(requst_url,json_template)
    #讀取json數據
    j = json.loads(content)
    j.keys()
    errcode = j[‘errcode‘]
    errmsg = j[‘errmsg‘]
    #print errmsg
if __name__ == "__main__":
  def alarm(title,hostname,timestap,level,message,state,tail):
    """報警函數"""
    color="#FF0000"
    data={"first":{"value":title},"keyword1":{"value":hostname,"color":color},"keyword2":{"value":timestap,"color":color},"keyword3":{"value":level,"color":color},"keyword4":{"value":message,"color":color},"keyword5":{"value":state,"color":color},"remark":{"value":tail}}
    return data
  def recover(title,message,alarm_time,recover_time,continue_time,tail):
    """恢復函數"""
    re_color="#228B22"
    data={"first":{"value":title},"content":{"value":message,"color":re_color},"occurtime":{"value":alarm_time,"color":re_color},"recovertime":{"value":recover_time,"color":re_color},"lasttime":{"value":continue_time,"color":re_color},"remark":{"value":tail}}
    return data
  # data=alarm("測試的報警消息","8.8.8.8",time.ctime(),"最高級別","然并卵","掛了","大傻路趕緊處理")
  # 實例化類
  webchart=WechatPush(appid,secrect,file_name)
  url="http://www.xiaoniu88.com"
  print len(sys.argv)
  # 發送報警消息
  if len(sys.argv) == 9:
    title=sys.argv[1]
    hostname=sys.argv[2]
    timestap=sys.argv[3]
    level=sys.argv[4]
    message=sys.argv[5]
    state=sys.argv[6]
    tail=sys.argv[7]
    print "sys.argv[1]"+sys.argv[1]
    print "sys.argv[2]"+sys.argv[2]
    print "sys.argv[3]"+sys.argv[3]
    print "sys.argv[4]"+sys.argv[4]
    print "sys.argv[5]"+sys.argv[5]
    print "sys.argv[6]"+sys.argv[6]
    print "sys.argv[7]"+sys.argv[7]
    print "sys.argv[8]"+sys.argv[8]
    with open("/etc/zabbix/moniter_scripts/test.log",‘a+‘) as f:
      f.write(title+"\n")
      f.write(hostname+"\n")
      f.write(timestap+"\n")
      f.write(level+"\n")
      f.write(message+"\n")
      f.write(state+"\n")
      f.write(tail+"\n")
      f.write("%s_%s" % ("group",sys.argv[8])+"\n")
    data=alarm(title,hostname,timestap,level,message,state,tail)
    group_name="%s_%s" % ("group",sys.argv[8])
    for touser in eval("%s_%s" % ("group",sys.argv[8])):
      webchart.do_push(touser,alarm_id,url,"",data)
    for touser in group_super:
      webchart.do_push(touser,alarm_id,url,"",data)
  #發送恢復消息
  elif len(sys.argv) == 8:
    title=sys.argv[1]
    message=sys.argv[2]
    alarm_time=sys.argv[3]
    recover_time=sys.argv[4]
    continue_time=sys.argv[5]
    tail=sys.argv[6]
    print "sys.argv[1]"+sys.argv[1]
    print "sys.argv[2]"+sys.argv[2]
    print "sys.argv[3]"+sys.argv[3]
    print "sys.argv[4]"+sys.argv[4]
    print "sys.argv[5]"+sys.argv[5]
    print "sys.argv[6]"+sys.argv[6]
    print "sys.argv[7]"+sys.argv[7]
    data=recover(title,message,alarm_time,recover_time,continue_time,tail)
    for touser in eval("%s_%s" % ("group",sys.argv[7])):
      webchart.do_push(touser,recover_id,url,"",data)
    for touser in group_super:
      webchart.do_push(touser,recover_id,url,"",data)

好了,代碼到此結束了,希望以上所述關于python模板消息的相關敘述能夠給大家帶來幫助。哪里寫的不好,還請各位大俠多多見諒,提出寶貴意見,謝謝。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 精品国产日韩亚洲一区在线 | gaychinese男男2022 | 边摸边吃奶又黄激烈视频韩国 | 国产日韩高清一区二区三区 | 国产成人久视频免费 | 人与动人物aaaa | 成人看的羞羞视频免费观看 | 91麻豆国产福利精品 | 我的好妈妈7中字在线观看韩国 | 日本xxx片免费高清在线 | 精品视频一区二区三区 | 12345国产精品高清在线 | 精品在线网站 | 亚洲 激情| 男人天堂网在线 | 国产资源免费观看 | 国内在线播放 | 亚洲第6页 | 国产一区二区免费不卡在线播放 | 人人澡 人人澡碰人人看软件 | 国产精品久久久久久 | 免费看日产一区二区三区 | 国产a在线 | 国产一区二区视频在线观看 | gayxxx视频| 99久久精品国产片久人 | 国产成人无精品久久久 | 日本免费播放 | 午夜欧美精品久久久久久久久 | 久久国产精品高清一区二区三区 | 国产高清免费在线 | 国产一区在线 | 嗯好爽视频 | 91制片厂制作果冻传媒破解 | 俄罗斯年轻男同gay69 | 免费观看在线永久免费xx视频 | 免费一级特黄特色大片在线观看 | 国产目拍亚洲精品一区二区三区 | 人人擦| 国色天香社区视频免费高清在线观看 | 免费一级欧美片在线观看 |