From b272858b1a70bdcac9b59f9d2b30c779e922cae1 Mon Sep 17 00:00:00 2001 From: Yuxin Wu Date: Sat, 27 Jun 2020 19:56:15 -0700 Subject: [PATCH] avoid assertion for type 49 (close #52) --- wechat/msg.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/wechat/msg.py b/wechat/msg.py index ef5018a..66273f5 100644 --- a/wechat/msg.py +++ b/wechat/msg.py @@ -6,7 +6,7 @@ TYPE_NAMECARD = 42 TYPE_VIDEO_FILE = 43 TYPE_EMOJI = 47 TYPE_LOCATION = 48 -TYPE_LINK = 49 # link share OR file from web +TYPE_LINK = 49 # link share OR file from web, see https://github.com/ppwwyyxx/wechat-dump/issues/52 TYPE_VOIP = 50 TYPE_WX_VIDEO = 62 # video took by wechat TYPE_SYSTEM = 10000 @@ -60,11 +60,13 @@ class WeChatMsg(object): pq = PyQuery(self.content_xml_ready) url = pq('url').text() if not url: + # TODO: see https://github.com/ppwwyyxx/wechat-dump/issues/52 for + # more logic to implement title = pq('title').text() - assert title, \ - u"No title or url found in TYPE_LINK: {}".format(self.content) - return u"FILE:{}".format(title) - return u"URL:{}".format(url) + if title: # may not be correct + return "FILE:{}".format(title) + return "NOT IMPLEMENTED: " + self.content_xml_ready + return "URL:{}".format(url) elif self.type == TYPE_NAMECARD: pq = PyQuery(self.content_xml_ready, parser='xml') msg = pq('msg').attr @@ -73,7 +75,7 @@ class WeChatMsg(object): name = msg['alias'] if not name: name = "" - return u"NAMECARD: {}".format(self.content_xml_ready) + return "NAMECARD: {}".format(self.content_xml_ready) elif self.type == TYPE_APP_MSG: pq = PyQuery(self.content_xml_ready, parser='xml') return pq('title').text() @@ -94,20 +96,20 @@ class WeChatMsg(object): for event, elem in ET.iterparse(data_to_parse, events=('end',)): if elem.tag == 'sendertitle': title = elem.text - return u"[RED ENVELOPE]\n{}".format(title) + return "[RED ENVELOPE]\n{}".format(title) except: pass - return u"[RED ENVELOPE]" + return "[RED ENVELOPE]" elif self.type == TYPE_MONEY_TRANSFER: data_to_parse = io.BytesIO(self.content.encode('utf-8')) try: for event, elem in ET.iterparse(data_to_parse, events=('end',)): if elem.tag == 'des': title = elem.text - return u"[Money Transfer]\n{}".format(title) + return "[Money Transfer]\n{}".format(title) except: pass - return u"[Money Transfer]" + return "[Money Transfer]" else: # TODO replace smiley with text return self.content