update in parser

This commit is contained in:
Yuxin Wu
2020-06-26 16:53:20 -07:00
parent 2d618281d9
commit 6bea581fa0
+16 -9
View File
@@ -22,7 +22,9 @@ TYPE_APP_MSG = 16777265
_KNOWN_TYPES = [eval(k) for k in dir() if k.startswith('TYPE_')]
import re
import io
from pyquery import PyQuery
import xml.etree.ElementTree as ET
import logging
logger = logging.getLogger(__name__)
@@ -47,16 +49,16 @@ class WeChatMsg(object):
def msg_str(self):
if self.type == TYPE_LOCATION:
pq = PyQuery(self.content_xml_ready, parser='xml')
loc = pq('location').attr
label = loc['label']
try:
pq = PyQuery(self.content_xml_ready, parser='xml')
loc = pq('location').attr
label = loc['label']
poiname = loc['poiname']
if poiname:
label = poiname
return "LOCATION:" + label + " ({},{})".format(loc['x'], loc['y'])
except:
pass
return "LOCATION:" + label + " ({},{})".format(loc['x'], loc['y'])
return "LOCATION: unknown"
elif self.type == TYPE_LINK:
pq = PyQuery(self.content_xml_ready)
url = pq('url').text()
@@ -90,10 +92,15 @@ class WeChatMsg(object):
# TODO add emoji name
return self.content
elif self.type == TYPE_REDENVELOPE:
pq = PyQuery(self.content_xml_ready, parser='xml')
title = pq('sendertitle').text()
return u"[RED ENVELOPE]\n{}".format(title)
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 == 'sendertitle':
title = elem.text
return u"[RED ENVELOPE]\n{}".format(title)
except:
pass
return u"[RED ENVELOPE]"
else:
# TODO replace smiley with text
return self.content