-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathparse_presence.py
63 lines (48 loc) · 1.69 KB
/
parse_presence.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import xml.etree.ElementTree as ElementTree
from sleekxmpp.stanza.presence import Presence
import summoner
PRESENCE_SHOW_KEY = 'show'
PRESENCE_STATUS_KEY = 'status'
LOL_CHAT_RESOURCE = 'xiff'
def from_string(name, string):
root = ElementTree.fromstring(string)
stanza = Presence(xml=root)
#doesn't work
#return parse_presence(name, stanza)
def parse_presence(name, presence):
data = {}
show = presence[PRESENCE_SHOW_KEY]
data[summoner.Summoner.DATA_SHOW_KEY] = show
#import pdb; pdb.set_trace()
#for stanza in presence.get_payload():
#print stanza
#print presence
"""
for child in presence.get_payload():
print child.name
#if child.name == PRESENCE_SHOW_KEY:
#show = child.text
if child.name == PRESENCE_STATUS_KEY:
status = child.findall('*/*')
data[DATA_SHOW_KEY] = show
for child in status:
data[child.tag] = child.text
return summoner.Summoner(name, data)
"""
if presence.get_from().resource != LOL_CHAT_RESOURCE:
data[summoner.Summoner.DATA_RESOURCE_KEY] = presence.get_from().resource
return summoner.Summoner(name, data)
status = presence[PRESENCE_STATUS_KEY].encode('utf-8')
#print status
root = ElementTree.fromstring(status)
#import pdb; pdb.set_trace()
status_xml = root.findall('*')
for child in status_xml:
data[child.tag] = child.text.encode('utf-8') if child.text else child.text
#print status.encode('utf-8')
return summoner.Summoner(name, data)
if __name__ == '__main__':
with open('presence.txt', 'r') as f:
data = f.read()
summoner = from_string('test', data)
print summoner.data