Browse Source

ffpb: parse uptime in new format, too, and add !uptime

Helge Jung 9 years ago
parent
commit
e68d8aa121
1 changed files with 34 additions and 2 deletions
  1. 34 2
      modules/ffpb.py

+ 34 - 2
modules/ffpb.py

@@ -319,10 +319,14 @@ def ffpb_peerinfo(bot, trigger):
 			info_update = " (autoupdater="+autoupdater+")"
 
 	info_uptime = ""
+	u = -1
 	if "statistics" in node and "uptime" in node["statistics"]:
 		u = int(float(node["statistics"]["uptime"]))
-	
-		d, r1 = divmod(int(float(node["statistics"]["uptime"])), 86400)
+	elif 'uptime' in node:
+		u = int(float(node['uptime']))
+
+	if u > 0:
+		d, r1 = divmod(u, 86400)
 		h, r2 = divmod(r1, 3600)
 		m, s = divmod(r2, 60)
 		if d > 0:
@@ -334,6 +338,34 @@ def ffpb_peerinfo(bot, trigger):
 
 	bot.say('[{1}]{2}{3}{4}{5}'.format(info_mac, info_name, info_hw, info_fw, info_update, info_uptime))
 
+@willie.module.commands('uptime')
+def ffpb_peeruptime(bot, trigger):
+	target_name = trigger.group(2)
+	node = ffpb_findnode_from_botparam(bot, target_name)
+	if node is None: return
+
+	info_name = node["hostname"]
+	info_uptime = ''
+	u = -1
+	if 'statistics' in node and 'uptime' in node['statistics']:
+		u = int(float(node['statistics']['uptime']))
+	elif 'uptime' in node:
+		u = int(float(node['uptime']))
+
+	if u > 0:
+		d, r1 = divmod(u, 86400)
+		h, r2 = divmod(r1, 3600)
+		m, s = divmod(r2, 60)
+		if d > 0:
+			info_uptime += '{0}d '.format(d)
+		if h > 0:
+			info_uptime += '{0}h '.format(h)
+		info_uptime += '{0}m'.format(m)
+	else:
+		info_uptime += '?'
+
+	bot.say('Uptime von \'{0}\' = {1}'.format(info_name, info_uptime))
+
 @willie.module.commands('link')
 def ffpb_peerlink(bot, trigger):
 	target_name = trigger.group(2)