update sharecard message & fix json decode problem
This commit is contained in:
@@ -17,6 +17,32 @@ def catchKeyboardInterrupt(fn):
|
|||||||
print '\n[*] 强制退出程序'
|
print '\n[*] 强制退出程序'
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
def _decode_list(data):
|
||||||
|
rv = []
|
||||||
|
for item in data:
|
||||||
|
if isinstance(item, unicode):
|
||||||
|
item = item.encode('utf-8')
|
||||||
|
elif isinstance(item, list):
|
||||||
|
item = _decode_list(item)
|
||||||
|
elif isinstance(item, dict):
|
||||||
|
item = _decode_dict(item)
|
||||||
|
rv.append(item)
|
||||||
|
return rv
|
||||||
|
|
||||||
|
def _decode_dict(data):
|
||||||
|
rv = {}
|
||||||
|
for key, value in data.iteritems():
|
||||||
|
if isinstance(key, unicode):
|
||||||
|
key = key.encode('utf-8')
|
||||||
|
if isinstance(value, unicode):
|
||||||
|
value = value.encode('utf-8')
|
||||||
|
elif isinstance(value, list):
|
||||||
|
value = _decode_list(value)
|
||||||
|
elif isinstance(value, dict):
|
||||||
|
value = _decode_dict(value)
|
||||||
|
rv[key] = value
|
||||||
|
return rv
|
||||||
|
|
||||||
class WebWeixin(object):
|
class WebWeixin(object):
|
||||||
def __str__(self):
|
def __str__(self):
|
||||||
description = \
|
description = \
|
||||||
@@ -269,14 +295,13 @@ class WebWeixin(object):
|
|||||||
return fn
|
return fn
|
||||||
|
|
||||||
def getUserRemarkName(self, id):
|
def getUserRemarkName(self, id):
|
||||||
name = u'这个人物名字未知'
|
name = '这个人物名字未知'
|
||||||
for member in self.MemberList:
|
for member in self.MemberList:
|
||||||
if member['UserName'] == id:
|
if member['UserName'] == id:
|
||||||
name = member['RemarkName'] if member['RemarkName'] else member['NickName']
|
name = member['RemarkName'] if member['RemarkName'] else member['NickName']
|
||||||
return name.encode('utf-8')
|
return name
|
||||||
|
|
||||||
def getUSerID(self, name):
|
def getUSerID(self, name):
|
||||||
name = name.decode('utf-8')
|
|
||||||
for member in self.MemberList:
|
for member in self.MemberList:
|
||||||
if name == member['RemarkName'] or name == member['NickName']:
|
if name == member['RemarkName'] or name == member['NickName']:
|
||||||
return member['UserName']
|
return member['UserName']
|
||||||
@@ -293,8 +318,8 @@ class WebWeixin(object):
|
|||||||
|
|
||||||
msgType = msg['MsgType']
|
msgType = msg['MsgType']
|
||||||
name = self.getUserRemarkName(msg['FromUserName'])
|
name = self.getUserRemarkName(msg['FromUserName'])
|
||||||
content = msg['Content'].encode('utf-8')
|
content = msg['Content']
|
||||||
msgid = msg['MsgId'].encode('utf-8')
|
msgid = msg['MsgId']
|
||||||
if msgType == 51:
|
if msgType == 51:
|
||||||
print '[*] 成功截获微信初始化消息'
|
print '[*] 成功截获微信初始化消息'
|
||||||
elif msgType == 1:
|
elif msgType == 1:
|
||||||
@@ -325,12 +350,13 @@ class WebWeixin(object):
|
|||||||
elif msgType == 34:
|
elif msgType == 34:
|
||||||
print name+' 给你发了一段语音,请在手机上查看'
|
print name+' 给你发了一段语音,请在手机上查看'
|
||||||
elif msgType == 42:
|
elif msgType == 42:
|
||||||
print name+' 给你发送了一张名片:'
|
info = msg['RecommendInfo']
|
||||||
|
print '%s 给你发送了一张名片:' % name
|
||||||
print '========================='
|
print '========================='
|
||||||
print '= 昵称: '+self._searchContent('nickname', content)
|
print '= 昵称: %s' % info['NickName']
|
||||||
print '= 微信号: '+self._searchContent('alias', content)
|
print '= 微信号: %s' % info['Alias']
|
||||||
print '= 地区: '+self._searchContent('province', content)+' '+self._searchContent('city', content)
|
print '= 地区: %s %s' % (info['Province'], info['City'])
|
||||||
print '= 性别: '+( '男' if self._searchContent('sex', content)=='1' else '女' )
|
print '= 性别: %s' % ['未知', '男', '女'][info['Sex']]
|
||||||
print '========================='
|
print '========================='
|
||||||
elif msgType == 47:
|
elif msgType == 47:
|
||||||
url = self._searchContent('cdnurl', content)
|
url = self._searchContent('cdnurl', content)
|
||||||
@@ -479,7 +505,7 @@ class WebWeixin(object):
|
|||||||
request = urllib2.Request(url = url, data = urllib.urlencode(params))
|
request = urllib2.Request(url = url, data = urllib.urlencode(params))
|
||||||
response = urllib2.urlopen(request)
|
response = urllib2.urlopen(request)
|
||||||
data = response.read()
|
data = response.read()
|
||||||
if jsonfmt: return json.loads(data)
|
if jsonfmt: return json.loads(data, object_hook=_decode_dict)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def _xiaodoubi(self, word):
|
def _xiaodoubi(self, word):
|
||||||
|
|||||||
Reference in New Issue
Block a user