Exemple #1
0
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
Exemple #2
0
 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']
Exemple #3
0
 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)
Exemple #4
0
 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)
Exemple #5
0
    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
Exemple #6
0
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']