国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python實現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能實例詳解

2019-11-25 16:03:41
字體:
來源:轉載
供稿:網(wǎng)友

本文實例講述了Python實現(xiàn)的微信公眾號群發(fā)圖片與文本消息功能。分享給大家供大家參考,具體如下:

在微信公眾號開發(fā)中,使用api都要附加access_token內容。因此,首先需要獲取access_token。如下:

#獲取微信access_tokendef get_token():  payload_access_token={    'grant_type':'client_credential',    'appid':'xxxxxxxxxxxxx',    'secret':'xxxxxxxxxxxxx'  }  token_url='https://api.weixin.qq.com/cgi-bin/token'  r=requests.get(token_url,params=payload_access_token)  dict_result= (r.json())  return dict_result['access_token']

在群發(fā)圖片時,需要提供已經(jīng)上傳圖片的media_id。注意,群發(fā)圖片的時候,必須使用接口:https://api.weixin.qq.com/cgi-bin/material/add_material

#獲取上傳文件的media_ID#群發(fā)圖片的時候,必須使用該api提供的media_IDdef get_media_ID(path):  img_url='https://api.weixin.qq.com/cgi-bin/material/add_material'  payload_img={    'access_token':get_token(),    'type':'image'  }  data ={'media':open(path,'rb')}  r=requests.post(url=img_url,params=payload_img,files=data)  dict =r.json()  return dict['media_id']

訂閱號進行群發(fā),必須通過分組id,首先需要獲取所有的用戶分組情況。

#查詢所有用戶分組信息def get_group_id():  url="https://api.weixin.qq.com/cgi-bin/groups/get"  payload_id={    'access_token':get_token()  }  r=requests.get(url=url,params=payload_id)  result=r.json()  return result['groups']

需要選擇一個分組進行群發(fā),在這里我選擇第一個有效的分組進行群發(fā)(即第一個分組用戶數(shù)不為0的分組)。

#返回第一個有效的group 分組iddef get_first_group_id():  groups =get_group_id()  group_id =0  for group in groups:    if(group['count']!=0):      group_id=group['id']      break;  return group_id

下面的代碼用于群發(fā)文本消息,群發(fā)給第一個有效的分組:

def send_txt_to_first_group(str='Hello World!'):  group_id =get_first_group_id()  pay_send_all={    "filter":{      "is_to_all":False,      "group_id":group_id    },    "text":{      "content":str    },    "msgtype":"text"  }  url="https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token="+get_token()  #需要指定json編碼的時候不會對中文轉碼為unicode,否則群發(fā)的消息會顯示為unicode碼,不能正確顯示  r=requests.post(url=url,data=json.dumps(pay_send_all,ensure_ascii=False,indent=2))#此處的必須指定此參數(shù)  result=r.json()  #根據(jù)返回碼的內容是否為0判斷是否成功  return result['errcode']==0

下面的代碼用于群發(fā)圖片,群發(fā)給第一個有效的分組。

def send_img_to_first_group(path='/home/fit/Desktop/test.jpg'):  group_id =get_first_group_id()  pay_send_all={    "filter":{      "is_to_all":False,      "group_id":group_id    },    "image":{      "media_id":get_media_ID(path)    },    "msgtype":"image"  }  url="https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token="+get_token()  r=requests.post(url=url,data=json.dumps(pay_send_all))  result=r.json()  #根據(jù)返回碼的內容是否為0判斷是否成功  return result['errcode']==0

以下是所有代碼:

# -*- coding: utf-8 -*-import requests#首先獲取access_tokenimport json#獲取微信access_tokendef get_token():  payload_access_token={    'grant_type':'client_credential',    'appid':'xxxxxxxxxx',    'secret':'xxxxxxxxx'  }  token_url='https://api.weixin.qq.com/cgi-bin/token'  r=requests.get(token_url,params=payload_access_token)  dict_result= (r.json())  return dict_result['access_token']#獲取上傳文件的media_ID#群發(fā)圖片的時候,必須使用該api提供的media_IDdef get_media_ID(path):  img_url='https://api.weixin.qq.com/cgi-bin/material/add_material'  payload_img={    'access_token':get_token(),    'type':'image'  }  data ={'media':open(path,'rb')}  r=requests.post(url=img_url,params=payload_img,files=data)  dict =r.json()  return dict['media_id']#查詢所有用戶分組信息def get_group_id():  url="https://api.weixin.qq.com/cgi-bin/groups/get"  payload_id={    'access_token':get_token()  }  r=requests.get(url=url,params=payload_id)  result=r.json()  return result['groups']#返回第一個有效的group 分組iddef get_first_group_id():  groups =get_group_id()  group_id =0  for group in groups:    if(group['count']!=0):      group_id=group['id']      break;  return group_iddef send_img_to_first_group(path='/home/fit/Desktop/test.jpg'):  group_id =get_first_group_id()  pay_send_all={    "filter":{      "is_to_all":False,      "group_id":group_id    },    "image":{      "media_id":get_media_ID(path)    },    "msgtype":"image"  }  url="https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token="+get_token()  r=requests.post(url=url,data=json.dumps(pay_send_all))  result=r.json()  print result  #根據(jù)返回碼的內容是否為0判斷是否成功  return result['errcode']==0def send_txt_to_first_group(str='Hello World!'):  group_id =get_first_group_id()  pay_send_all={    "filter":{      "is_to_all":False,      "group_id":group_id    },    "text":{      "content":str    },    "msgtype":"text"  }  url="https://api.weixin.qq.com/cgi-bin/message/mass/sendall?access_token="+get_token()  #需要指定json編碼的時候不會對中文轉碼為unicode,否則群發(fā)的消息會顯示為unicode碼,不能正確顯示  r=requests.post(url=url,data=json.dumps(pay_send_all,ensure_ascii=False,indent=2))#此處的必須指定此參數(shù)  result=r.json()  #根據(jù)返回碼的內容是否為0判斷是否成功  return result['errcode']==0if(send_txt_to_first_group("祝你合家歡樂,幸福美滿!")):  print 'success!'else:  print 'fail!'

附錄:在使用微信測試訂閱號測試群發(fā)圖片接口的時候,返回碼如下:

{u'errcode': 45028, u'errmsg': u'has no masssend quota hint: [OKvFdA0813ge12]'}

這是因為測試訂閱號沒有群發(fā)圖文消息的權限,并不是因為接口調用有誤。

PS:

作者的github: https://github.com/zhoudayang

更多關于Python相關內容感興趣的讀者可查看本站專題:《Python字符串操作技巧匯總》、《Python編碼操作技巧總結》、《Python數(shù)據(jù)結構與算法教程》、《Python函數(shù)使用技巧總結》及《Python入門與進階經(jīng)典教程》。

希望本文所述對大家Python程序設計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大宁县| 剑阁县| 清原| 肇源县| 玉环县| 云梦县| 武城县| 金寨县| 鄂温| 潞城市| 宁城县| 论坛| 安义县| 汝城县| 云林县| 东乡县| 余庆县| 永仁县| 岑巩县| 桐城市| 区。| 仪陇县| 启东市| 珠海市| 楚雄市| 安远县| 义乌市| 潮安县| 洪洞县| 海盐县| 洞头县| 板桥市| 耿马| 普定县| 崇州市| 鄂尔多斯市| 彰武县| 南乐县| 安国市| 涿州市| 渭源县|