4 from jabberbot
import JabberBot
, botcmd
5 from datetime
import datetime
14 class DrahyInfo(object):
15 re_wg_timeleft
= re
.compile(r
'<tr.*><td.*>(\d+) Hod a (\d+) Min</td></tr>')
16 re_wg_inprogress
= re
.compile(r
'<tr.*><td.*>.*do konce.*(\d+)\s*min\s*</td></tr>')
18 def __init__(self
, url
, maxAge
= 60):
25 self
.wg_hours
, self
.wg_minutes
, self
.wg_at
= None, None, None
26 self
.wg_left
, self
.wg_end
= None, None
30 page
= urllib2
.urlopen(self
.url
).read()
32 found_wg1
= self
.re_wg_timeleft
.search(page
)
33 found_wg2
= self
.re_wg_inprogress
.search(page
)
35 self
.wg_hours
, self
.wg_minutes
= map(int, found_wg1
.groups())
36 #self.wg_hours, self.wg_minutes = int(self.wg_hours), int(self.wg_minutes)
37 self
.wg_at
= stamp
+ self
.wg_hours
* 3600 + self
.wg_minutes
* 60
39 self
.wg_left
, self
.wg_end
= None, None
42 self
.wg_left
= int(found_wg2
.group(1))
43 self
.wg_end
= stamp
+ self
.wg_left
* 60
49 if time
.time() > self
.maxAge
+ self
.stamp
:
50 print "refresh serverinfo"
55 class PlayerInfo(object):
56 def __init__(self
, url
, maxAge
= 60):
64 page
= urllib2
.urlopen(self
.url
).read()
65 # vynechat balast na zacatku a konci [4:-3]
66 data
= page
.split("\n")[4]
67 data
= data
.replace("'", '"') # json do not like apostrophes
68 data
= data
.decode("cp1250") # drahy claims wrong codepage
69 data
= json
.loads(data
)
70 self
.players
= dict([(i
['name'].lower(), i
) for i
in data
['online'] if type(i
) is dict ])
74 if time
.time() > self
.maxAge
+ self
.stamp
:
75 print "refresh playerinfo"
78 def search(self
, name
):
80 #print self.players.keys()
81 return self
.players
.get(name
, {})
85 class Alkobot1(JabberBot
):
86 def __init__(self
, serverInfo
, playerInfo
, *args
, **kargs
):
87 self
.serverInfo
= serverInfo
88 self
.playerInfo
= playerInfo
89 # initialize jabberbot
90 super(Alkobot1
, self
).__init
__(*args
, **kargs
)
93 def wg(self
, mess
, args
):
94 self
.serverInfo
.refresh()
95 if self
.serverInfo
.wg_end
:
96 return "Bitka o wintergrasp končí v %s (za 00:%s)" % (
97 time
.strftime("%H:%M", time
.localtime(self
.serverInfo
.wg_end
)),
98 self
.serverInfo
.wg_left
,
100 elif self
.serverInfo
.wg_at
:
101 return "Hospodo, wintergrasp začíná v %s (za %s:%s)" % (
102 time
.strftime("%H:%M", time
.localtime(self
.serverInfo
.wg_at
)),
103 self
.serverInfo
.wg_hours
,
104 self
.serverInfo
.wg_minutes
,
111 def najdi(self
, mess
, args
):
112 args
= args
.lower().strip()
117 "metlos": "Ve stadtlu",
124 player
= self
.playerInfo
.search(args
.lower().strip())
127 return "%(name)s je v %(zone)s" % player
129 return "Nenašli moji rádcové, nenašli"
132 def cas(self
, mess
, args
):
133 return str(datetime
.now())
136 def foo(self
, mess
, args
):
137 print "message", type(mess
)
139 print "args", type(args
)
143 def kozy(self
, mess
, args
):
144 if random
.random() < 0.1:
149 def barman(self
, mess
, args
):
150 return "jaaaaaaaaaaa"
153 # =======================================================
154 if __name__
== '__main__':
156 #bot = Example(username, password, only_direct=True)
158 DrahyInfo("http://drahy.com/"),
159 PlayerInfo("http://drahy.com/components/pomm/pomm_play.php"),
162 bot
.join_room(config
.chatroom
, config
.nickname
)