Skip to content

Commit 957113e

Browse files
committed
wechat: support get_user_list API
1 parent a197fa3 commit 957113e

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

lib/wechat.py

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ class WeChat(object):
3030
raw_group_url = 'https://api.weixin.qq.com/cgi-bin/groups/%s?access_token=%s'
3131
raw_send_url = 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=%s'
3232
raw_info_url = 'https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s'
33+
raw_user_url = 'https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s'
3334
all_data_type = ('image', 'voice', 'thumb', 'video')
3435
token = Token()
3536
def __init__(self, appid, passcode, secret, token_path, init_token=True):
@@ -199,6 +200,17 @@ def check_error(self, resp, content, err_type):
199200
except KeyError:
200201
raise WeChatError("Failed to find errcode: %s" % str(data))
201202
raise WeChatError("Error message: %s" % str(data))
203+
elif err_type == 'data':
204+
tmp = None
205+
try:
206+
tmp = data['data']
207+
except KeyError:
208+
try:
209+
err = data['errcode']
210+
msg = data['errmsg']
211+
except KeyError:
212+
raise WeChatError("Failed to find errcode: %s" % str(data))
213+
raise WeChatError("Error message: %s" % str(data))
202214

203215
def send_message(self, user, msg):
204216
url = self.raw_send_url % self.token
@@ -271,6 +283,24 @@ def get_info(self, openid):
271283
self.check_error(resp, content, 'info')
272284
return json.loads(content)
273285

286+
def get_user_list(self):
287+
url = self.raw_user_url % (self.token, '')
288+
resp, content = self.http.request(url, method="GET")
289+
self.check_error(resp, content, 'data')
290+
data = json.loads(content)
291+
total = data['total']
292+
count = data['count']
293+
next_openid = data['next_openid']
294+
result = list(data['data']['openid'])
295+
while (count < total):
296+
url = self.raw_user_url % (self.token, next_openid.encode('utf-8'))
297+
resp, content = self.http.request(url, method="GET")
298+
self.check_error(resp, content, 'data')
299+
data = json.loads(content)
300+
count += data['count']
301+
result.extend(data['data']['openid'])
302+
return result
303+
274304
if __name__ == "__main__":
275305
logging.basicConfig(level=logging.INFO)
276306
token_path = os.path.join(os.environ['HOME'], '.wechat')
@@ -305,6 +335,7 @@ def get_info(self, openid):
305335
user2 = 'abdfadfadfa'
306336
#wechat.move_user(user, 100)
307337
#print wechat.get_group_list()
308-
msg = {"text": {"content": "I love this game ..."}}
338+
#msg = {"text": {"content": "I love this game ..."}}
309339
#wechat.send(user, [msg, msg])
310340
#print(wechat.get_info(user))
341+
print(wechat.get_user_list())

0 commit comments

Comments
 (0)