日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

利用python 实现微信公众号群发图片与文本消息功能

發(fā)布時間:2023/12/20 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用python 实现微信公众号群发图片与文本消息功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

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

#獲取微信access_token def 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_ID def 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']

  訂閱號進(jìn)行群發(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']

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

#返回第一個有效的group 分組id def get_first_group_id():groups =get_group_id()group_id =0for 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編碼的時候不會對中文轉(zhuǎn)碼為unicode,否則群發(fā)的消息會顯示為unicode碼,不能正確顯示r=requests.post(url=url,data=json.dumps(pay_send_all,ensure_ascii=False,indent=2))#此處的必須指定此參數(shù)result=r.json()#根據(jù)返回碼的內(nèi)容是否為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ù)返回碼的內(nèi)容是否為0判斷是否成功return result['errcode']==0

以下是所有代碼:

# -*- coding: utf-8 -*- import requests #首先獲取access_token import json#獲取微信access_token def 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_ID def 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 分組id def get_first_group_id():groups =get_group_id()group_id =0for group in groups:if(group['count']!=0):group_id=group['id']break;return group_id 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()print result#根據(jù)返回碼的內(nèi)容是否為0判斷是否成功return result['errcode']==0 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編碼的時候不會對中文轉(zhuǎn)碼為unicode,否則群發(fā)的消息會顯示為unicode碼,不能正確顯示r=requests.post(url=url,data=json.dumps(pay_send_all,ensure_ascii=False,indent=2))#此處的必須指定此參數(shù)result=r.json()#根據(jù)返回碼的內(nèi)容是否為0判斷是否成功return result['errcode']==0 if(send_txt_to_first_group("祝你合家歡樂,幸福美滿!")):print 'success!' else:print 'fail!'

?

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

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

  這是因?yàn)闇y試訂閱號沒有群發(fā)圖文消息的權(quán)限,并不是因?yàn)榻涌谡{(diào)用有誤。

  

轉(zhuǎn)載于:https://www.cnblogs.com/zhoudayang/p/5301918.html

總結(jié)

以上是生活随笔為你收集整理的利用python 实现微信公众号群发图片与文本消息功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。