Example #1
0
 def get_contract(self, update=False):
     if 1 < len(self.memberList) and not update: return self.memberList
     url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (
         self.loginInfo['url'], int(time.time()), self.loginInfo['skey'])
     headers = {'ContentType': 'application/json; charset=UTF-8'}
     r = self.s.get(url, headers=headers)
     tempList = json.loads(r.content.decode('utf-8',
                                            'replace'))['MemberList']
     del self.chatroomList[:]
     del self.memberList[:]
     self.memberList.append(tools.emoji_dealer(self.loginInfo['User']))
     for m in tempList:
         if m['Sex'] != 0:
             self.memberList.append(tools.emoji_dealer(m))
         elif not (any([str(n) in m['UserName']
                        for n in range(10)]) and any([
                            chr(n) in m['UserName']
                            for n in (range(ord('a'),
                                            ord('z') + 1) +
                                      range(ord('A'),
                                            ord('Z') + 1))
                        ])):
             continue  # userName have number and str
         elif '@@' in m['UserName']:
             self.chatroomList.append(tools.emoji_dealer(m))
         elif m['VerifyFlag'] & 8 == 0 and '@' in m['UserName']:
             self.memberList.append(tools.emoji_dealer(m))
     return self.memberList
Example #2
0
 def get_group_member_prefer_name(name):
     if name is None:
         return None
     if 'remark_name' in name:
         return tools.emoji_dealer(name['remark_name'])
     if 'display_name' in name:
         return tools.emoji_dealer(name['display_name'])
     if 'nickname' in name:
         return tools.emoji_dealer(name['nickname'])
     return None
Example #3
0
 def get_group_member_prefer_name(name):
     if name is None:
         return None
     if 'remark_name' in name:
         return tools.emoji_dealer(name['remark_name'])
     if 'display_name' in name:
         return tools.emoji_dealer(name['display_name'])
     if 'nickname' in name:
         return tools.emoji_dealer(name['nickname'])
     return None
Example #4
0
 def get_contract(self, update = False):
     if 1 < len(self.memberList) and not update: return self.memberList
     url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'],
         int(time.time()), self.loginInfo['skey'])
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.get(url, headers = headers)
     memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList']
     chatroomList = memberList[:]
     while 1:
         i = 0
         for m in chatroomList:
             if ('@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and
                 any([chr(n) in m['UserName'] for n in (range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])):
                 continue
             chatroomList.remove(m);i+=1
         for m in memberList:
             if m['Sex'] != 0 or (m['VerifyFlag'] & 8 == 0 and '@' in m['UserName'] and not '@@' in m['UserName'] and
                 any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in (
                     range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue
             memberList.remove(m);i+=1
         if i == 0: break
     # deal with emoji
     self.memberList = tools.emoji_dealer(memberList)
     self.chatroomList = chatroomList
     return memberList
Example #5
0
 def get_contract(self, update = False):
     if 1 < len(self.memberList) and not update: return self.memberList
     url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'],
         int(time.time()), self.loginInfo['skey'])
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.get(url, headers = headers)
     # init log
     logs(r.content.decode('utf-8', 'replace'), '/contract.log')
     memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList']
     chatroomList = memberList[:]
     while 1:
         i = 0
         for m in chatroomList:
             if ('@@' in m['UserName'] and any([str(n) in m['UserName'] for n in range(10)]) and
                 any([chr(n) in m['UserName'] for n in (range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])):
                 continue
             chatroomList.remove(m);i+=1
         for m in memberList:
             if m['Sex'] != 0 or (m['VerifyFlag'] & 8 == 0 and '@' in m['UserName'] and not '@@' in m['UserName'] and
                 any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in (
                     range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue
             memberList.remove(m);i+=1
         if i == 0: break
     # deal with emoji
     self.memberList = tools.emoji_dealer(memberList)
     self.chatroomList = chatroomList
     return memberList
Example #6
0
 def get_contract(self):
     url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'],
         int(time.time()), self.loginInfo['skey'])
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.get(url, headers = headers)
     memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList']
     i = 1
     # ISSUE 1.3
     while i != 0:
         i = 0
         for m in memberList:
             if m['Sex'] == 0 or m['Sex'] == '0': memberList.remove(m);i+=1
     # deal with emoji
     memberList = tools.emoji_dealer(memberList)
     # PYQuanPin & RemarkPYQuanPin is used as identifier
     voidUserList = []
     for m in memberList:
         if m['PYQuanPin'] == '':
             if m['UserName'] == self.storageClass.userName:
                 m['PYQuanPin'] = m['NickName']
             elif m['RemarkPYQuanPin'] == '':
                 voidUserList.append(m)
             else:
                 m['PYQuanPin'] = m['RemarkPYQuanPin']
         insertResult = self.storageClass.update_user(m['PYQuanPin'], NickName = m['RemarkName'] or m['NickName'],
             UserName = m['UserName'])
         if insertResult != True: out.print_line(str(insertResult) + ' need a new RemarkName')
     if DEBUG:
         with open('MemberList.txt', 'w') as f: f.write(str(memberList))
Example #7
0
 def get_contract(self, update = False):
     if 1 < len(self.memberList) and not update: return self.memberList
     url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'],
         int(time.time()), self.loginInfo['skey'])
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.get(url, headers = headers)
     tempList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList']
     del self.chatroomList[:]
     del self.memberList[:]
     self.memberList.append(tools.emoji_dealer(self.loginInfo['User']))
     for m in tempList:
         if m['Sex'] != 0:
             self.memberList.append(tools.emoji_dealer(m))
         elif not (any([str(n) in m['UserName'] for n in range(10)]) and 
                 any([chr(n) in m['UserName'] for n in (
                 range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])):
             continue # userName have number and str
         elif '@@' in m['UserName']:
             self.chatroomList.append(tools.emoji_dealer(m))
         elif m['VerifyFlag'] & 8 == 0 and '@' in m['UserName']:
             self.memberList.append(tools.emoji_dealer(m))
     return self.memberList
Example #8
0
 def web_init(self):
     url = '%s/webwxinit?r=%s' % (self.loginInfo['url'], int(time.time()))
     payloads = {
         'BaseRequest': self.loginInfo['BaseRequest']
     }
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.post(url, data = json.dumps(payloads), headers = headers)
     dic = json.loads(r.content.decode('utf-8', 'replace'))
     # deal with emoji
     dic['User'] = tools.emoji_dealer([dic['User']])[0]
     self.storageClass.userName = dic['User']['UserName']
     self.storageClass.nickName = dic['User']['NickName']
     self.storageClass.memberList.append(dic['User'])
     self.loginInfo['SyncKey'] = dic['SyncKey']
     self.loginInfo['synckey'] = '|'.join(['%s_%s' % (item['Key'], item['Val']) for item in dic['SyncKey']['List']])
     return dic['User']
Example #9
0
 def web_init(self):
     url = '%s/webwxinit?r=%s' % (self.loginInfo['url'], int(time.time()))
     payloads = {
         'BaseRequest': self.loginInfo['BaseRequest']
     }
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.post(url, data = json.dumps(payloads), headers = headers)
     dic = json.loads(r.content.decode('utf-8', 'replace'))
     # deal with emoji
     dic['User'] = tools.emoji_dealer([dic['User']])[0]
     self.storageClass.userName = dic['User']['UserName']
     self.storageClass.nickName = dic['User']['NickName']
     self.storageClass.memberList.append(dic['User'])
     self.loginInfo['SyncKey'] = dic['SyncKey']
     self.loginInfo['synckey'] = '|'.join(['%s_%s' % (item['Key'], item['Val']) for item in dic['SyncKey']['List']])
     return dic['User']
Example #10
0
 def get_contract(self):
     url = '%s/webwxgetcontact?r=%s&seq=0&skey=%s' % (self.loginInfo['url'],
         int(time.time()), self.loginInfo['skey'])
     headers = { 'ContentType': 'application/json; charset=UTF-8' }
     r = self.s.get(url, headers = headers)
     memberList = json.loads(r.content.decode('utf-8', 'replace'))['MemberList']
     while 1:
         i = 0
         for m in memberList:
             if m['Sex'] != 0 or (m['VerifyFlag'] & 8 == 0 and '@' in m['UserName'] and not '@@' in m['UserName'] and
                 any([str(n) in m['UserName'] for n in range(10)]) and any([chr(n) in m['UserName'] for n in (
                     range(ord('a'), ord('z') + 1) + range(ord('A'), ord('Z') + 1))])): continue
             memberList.remove(m);i+=1
         if i == 0: break
     # deal with emoji
     memberList = tools.emoji_dealer(memberList)
     # RemarkPYQuanPin & PYQuanPin is used as identifier
     voidUserList = []
     validUserList = []
     unknownCount = 0
     for m in memberList:
         if m['RemarkPYQuanPin'] != '': m['PYQuanPin'] = m['RemarkPYQuanPin']
         if m['PYQuanPin'] == '' and m['Alias'] != '': m['PYQuanPin'] == m['Alias']
         if m['UserName'] == self.storageClass.userName:
             m['PYQuanPin'] = m['NickName']
         elif m['PYQuanPin'] == '':
             voidUserList.append(m)
             m['PYQuanPin'] = '@Unknown%s'%unknownCount
             unknownCount += 1
         while 1:
             insertResult = self.storageClass.update_user(m['PYQuanPin'], NickName = m['RemarkName'] or m['NickName'],
                 UserName = m['UserName'])
             if insertResult and not m['PYQuanPin'] in validUserList:
                 validUserList.append(m['PYQuanPin']);break
             else:
                 voidUserList.append(m)
                 m['PYQuanPin'] = '@Unknown%s'%unknownCount
                 unknownCount += 1
     if DEBUG:
         with open('MemberList.txt', 'w') as f: f.write(str(memberList))
     if len(voidUserList) == 1:
         m = voidUserList[0]
         self.storageClass.update_user('', NickName = m['RemarkName'] or m['NickName'], UserName = m['UserName'])
         return []
     else:
         return voidUserList