def get_contact(login_info): url = login_info[ 'base_uri'] + '/webwxgetcontact?pass_ticket=%s&skey=%s&r=%s' % ( login_info['pass_ticket'], login_info['skey'], get_r()) dic = post(url, {}) if not dic or dic['BaseResponse']['Ret'] != 0: logging.error(dic) return False return dic
def init_user_info(self): url = self.base_uri + '/webwxinit?pass_ticket=%s&skey=%s&r=%s' % ( self.pass_ticket, self.skey, get_js_r()) params = {'BaseRequest': self.BaseRequest} dic = post(url, params) if not dic or dic['BaseResponse']['Ret'] != 0: raise WeChatOnlineException('get user dic failed...') self.SyncKey = dic['SyncKey'] return dic['User']
def build_qr_code(self): # todo how to send this qr_img to web client is a problem ? if not self.uuid: raise WeChatLoginException('get uuid failed ...') url = 'https://login.weixin.qq.com/qrcode/' + self.uuid str2qr(url) # are you sure to print qrcode ? params = {'t': 'webwx', '_': get_r()} qr_img_data = post(url, params, False) self.qr_fn = '%s-%s.jpg' % (self.uuid, str(time.time())) file = save_file('/tmp', self.qr_fn, qr_img_data) if sys.platform.startswith('win'): os.startfile(file)
def get_uuid(self): url = 'https://login.weixin.qq.com/jslogin' params = { 'appid': self.appid, 'fun': 'new', 'lang': self.lang, '_': get_r(), } data = post(url, params, False).decode() if data == '': return regx = r'window.QRLogin.code = (\d+); window.QRLogin.uuid = "(\S+?)"' pm = re.search(regx, data) if pm and pm.group(1) == '200': return pm.group(2)
def web_wx_sync(self): url = self.base_uri + '/webwxsync?sid=%s&skey=%s&pass_ticket=%s' % ( self.sid, self.skey, self.pass_ticket) params = { 'BaseRequest': self.BaseRequest, 'SyncKey': self.SyncKey, 'rr': get_js_r() } dic = post(url, params) if not dic or dic['BaseResponse']['Ret'] != 0: logger.error(dic) return False self.SyncKey = dic['SyncKey'] self.synckey = self.get_formate_sync_check_key(dic['SyncCheckKey']) return dic
def batch_get_contacts(login_info, group_ids, encry_chatroom_id=""): if not group_ids: return [] url = login_info['base_uri'] + \ '/webwxbatchgetcontact?type=ex&r=%s&pass_ticket=%s' % ( get_r(), login_info['pass_ticket']) params = { 'BaseRequest': get_base_request(**login_info), "Count": len(group_ids), "List": [{ "UserName": group_id, "EncryChatRoomId": encry_chatroom_id } for group_id in group_ids] } dic = post(url, params) if not dic or dic['BaseResponse']['Ret'] != 0: logging.error(dic) return False return dic['ContactList']