You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
flyapps/fir_ser/common/libs/mp/chat/receive.py

86 lines
2.4 KiB

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# project: 9月
# author: NinEveN
# date: 2021/9/6
import xml.etree.ElementTree as ET
def parse_xml(web_data):
if len(web_data) == 0:
return None
xml_data = ET.fromstring(web_data)
msg_type = xml_data.find('MsgType').text
if msg_type == 'event':
event_type = xml_data.find('Event').text
if event_type == 'CLICK':
return Click(xml_data)
elif event_type in ('subscribe', 'unsubscribe'):
return Subscribe(xml_data)
# elif event_type == 'VIEW':
# return View(xml_data)
# elif event_type == 'LOCATION':
# return LocationEvent(xml_data)
elif event_type == 'SCAN':
return Scan(xml_data)
elif msg_type == 'text':
return TextMsg(xml_data)
elif msg_type == 'image':
return ImageMsg(xml_data)
class Msg(object):
def __init__(self, xml_data):
self.ToUserName = xml_data.find('ToUserName').text
self.FromUserName = xml_data.find('FromUserName').text
self.CreateTime = xml_data.find('CreateTime').text
self.MsgType = xml_data.find('MsgType').text
self.MsgId = xml_data.find('MsgId').text
class TextMsg(Msg):
def __init__(self, xml_data):
Msg.__init__(self, xml_data)
self.Content = xml_data.find('Content').text.encode("utf-8")
class ImageMsg(Msg):
def __init__(self, xml_data):
Msg.__init__(self, xml_data)
self.PicUrl = xml_data.find('PicUrl').text
self.MediaId = xml_data.find('MediaId').text
class EventMsg(object):
def __init__(self, xml_data):
self.ToUserName = xml_data.find('ToUserName').text
self.FromUserName = xml_data.find('FromUserName').text
self.CreateTime = xml_data.find('CreateTime').text
self.MsgType = xml_data.find('MsgType').text
self.Event = xml_data.find('Event').text
self.Eventkey = xml_data.find('EventKey').text
self.Ticket = ''
class Click(EventMsg):
def __init__(self, xml_data):
EventMsg.__init__(self, xml_data)
class Scan(EventMsg):
def __init__(self, xml_data):
EventMsg.__init__(self, xml_data)
self.Ticket = xml_data.find('Ticket').text
class Subscribe(EventMsg):
def __init__(self, xml_data):
EventMsg.__init__(self, xml_data)
tick = xml_data.find('Ticket')
if tick is None:
self.Ticket = ''
else:
self.Ticket = tick.text