最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當前位置: 首頁 - 科技 - 知識百科 - 正文

基于python實現(xiàn)微信模板消息

來源:懂視網(wǎng) 責編:小采 時間:2020-11-27 14:35:07
文檔

基于python實現(xiàn)微信模板消息

基于python實現(xiàn)微信模板消息:我的風(fēng)格,廢話不多說了,直接給大家貼代碼了,并在一些難點上給大家附了注釋,具體代碼如下所示: #!/usr/bin/env python #-*- coding:utf-8 -*- import urllib2,json import datetime,time from config import * im
推薦度:
導(dǎo)讀基于python實現(xiàn)微信模板消息:我的風(fēng)格,廢話不多說了,直接給大家貼代碼了,并在一些難點上給大家附了注釋,具體代碼如下所示: #!/usr/bin/env python #-*- coding:utf-8 -*- import urllib2,json import datetime,time from config import * im

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

#!/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數(shù)據(jù)
 j = json.loads(s)
 j.keys()
 # 從json中獲取token
 token = j[‘a(chǎn)ccess_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):
 """觸發(fā)post請求微信發(fā)送最終的模板消息"""
 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()
 # 背景色設(shè)置,貌似不生效 
 if topcolor.strip()==‘‘:
 topcolor = "#7B68EE"
 #最紅post的求情數(shù)據(jù)
 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數(shù)據(jù)
 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):
 """報警函數(shù)"""
 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):
 """恢復(fù)函數(shù)"""
 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)
 # 發(fā)送報警消息
 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(chǎn)+‘) as f:
 f.write(title+"
")
 f.write(hostname+"
")
 f.write(timestap+"
")
 f.write(level+"
")
 f.write(message+"
")
 f.write(state+"
")
 f.write(tail+"
")
 f.write("%s_%s" % ("group",sys.argv[8])+"
")
 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)
 #發(fā)送恢復(fù)消息
 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)

好了,代碼到此結(jié)束了,希望以上所述關(guān)于python模板消息的相關(guān)敘述能夠給大家?guī)韼椭D睦飳懙牟缓?,還請各位大俠多多見諒,提出寶貴意見,謝謝。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

基于python實現(xiàn)微信模板消息

基于python實現(xiàn)微信模板消息:我的風(fēng)格,廢話不多說了,直接給大家貼代碼了,并在一些難點上給大家附了注釋,具體代碼如下所示: #!/usr/bin/env python #-*- coding:utf-8 -*- import urllib2,json import datetime,time from config import * im
推薦度:
標簽: 微信 消息 weixin
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top