summaryrefslogtreecommitdiffstats
path: root/py3status/modules
diff options
context:
space:
mode:
Diffstat (limited to 'py3status/modules')
-rw-r--r--py3status/modules/spaceapi.py84
1 files changed, 84 insertions, 0 deletions
diff --git a/py3status/modules/spaceapi.py b/py3status/modules/spaceapi.py
new file mode 100644
index 0000000..8703fc9
--- /dev/null
+++ b/py3status/modules/spaceapi.py
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+"""
+This module shows if your favorite hackerspace is open or not
+
+Last modified: 2015-02-01
+Author: @timmszigat
+License: WTFPL http://www.wtfpl.net/txt/copying/
+"""
+
+import codecs
+import datetime
+import json
+from time import time
+import urllib.request
+
+class Py3status:
+ """
+ Configuration Parameters:
+ - cache_timeout: Set timeout between calls in seconds
+ - closed_color: color if space is closed
+ - closed_text: text if space is closed, strftime parameters will be translated
+ - open_color: color if space is open
+ - open_text: text if space is open, strftime parmeters will be translated
+ - url: URL to SpaceAPI json file of your space
+ """
+
+ # available configuration parameters
+ cache_timeout = 60
+ closed_color = None
+ closed_text = 'closed since %H:%M'
+ open_color = None
+ open_text = 'open since %H:%M'
+ url = 'http://status.chaospott.de/status.json'
+
+ def check(self, i3s_output_list, i3s_config):
+
+ response = {
+ 'cached_until': time() + self.cache_timeout
+ }
+
+ try:
+ # if color isn't set, set basic color schema
+ if not self.open_color:
+ self.open_color = i3s_config['color_good']
+
+ if not self.closed_color:
+ self.closed_color = ''
+
+ # grab json file
+ json_file=urllib.request.urlopen(self.url)
+ reader = codecs.getreader("utf-8")
+ data = json.load(reader(json_file))
+ json_file.close()
+
+ if(data['state']['open'] == True):
+ response['full_text'] = self.open_text
+ response['short_text'] = '%H:%M'
+ if self.open_color:
+ response['color'] = self.open_color
+ else:
+ response['full_text'] = self.closed_text
+ response['short_text'] = ''
+ if self.closed_color:
+ response['color'] = self.closed_color
+
+ # apply strftime to full and short text
+ dt = datetime.datetime.fromtimestamp(data['state']['lastchange'])
+ response['full_text'] = dt.strftime(response['full_text'])
+ response['short_text'] = dt.strftime(response['short_text'])
+
+ except:
+ response['full_text'] = '';
+
+ return response
+
+if __name__ == "__main__":
+ """
+ Test this module by calling it directly.
+ """
+ from time import sleep
+ x = Py3status()
+ while True:
+ print(x.check([], {'color_good': 'green'}))
+ sleep(1)