diff options
author | Florian <stayawake@lavabit.com> | 2014-02-12 19:52:32 +0100 |
---|---|---|
committer | Florian <stayawake@lavabit.com> | 2014-02-12 19:52:32 +0100 |
commit | dbddcd637b37e178366992d9d0946b92c0116ba3 (patch) | |
tree | 6572230f9bea2f4b80fcc0e43aee615fae9cc457 | |
parent | 5c187a01cba38dbebf9b867a690755d97b8f82b9 (diff) |
added status twitter function
-rwxr-xr-x | scripts/status_script.py | 78 |
1 files changed, 69 insertions, 9 deletions
diff --git a/scripts/status_script.py b/scripts/status_script.py index a92d5bf..86ca88f 100755 --- a/scripts/status_script.py +++ b/scripts/status_script.py @@ -1,10 +1,13 @@ -#!/usr/bin/python +#!/usr/bin/env python import urllib import contextlib import json import time import os +from credentials import * +from twitter import * +from datetime import datetime class SublabStatus(object): json = None @@ -32,15 +35,33 @@ class SublabStatus(object): else: return 'closed' -if __name__ == '__main__': - s = SublabStatus() - if s.door_status() == 'open': - colors = ('#0f0', '#222', 'status-open.png') - elif s.door_status() == 'closed': - colors = ('#222', '#f00', 'status-closed.png') - else: - colors = ('#222', '#222', 'status-unknown.png') +def tweet(status, last_change): + + # Contents of the status tweet + # Max. 110 Characters, or tweet will be too long! + SEPARATOR = ' - ' + DATE_MSG = 'Last change was on' + SUBLAB_CLOSED = 'OH NOEZ! @sublab is now closed.' + SEPARATOR + DATE_MSG + ' ' + SUBLAB_OPEN = 'YAY! @sublab is now open' + SEPARATOR + DATE_MSG + ' ' + + if status == 'open': + tweet = SUBLAB_OPEN + last_change + elif status == 'closed': + tweet = SUBLAB_CLOSED + last_change + + if len(tweet) <= 140: + + #instance of the twitter-class to post status changes + t = Twitter(auth=OAuth(token, + token_key, + con_secret, + con_secret_key)) + + t.statuses.update(status=tweet) + + +def update_css(colors): css = ''' span.sublabopen { color: %s; @@ -68,3 +89,42 @@ span.sublabclosed { with open(path_new, 'w') as css_file: css_file.write(css) os.rename(path_new, path) + + + +def save_statusfile(STATUSFILE, status): + date_now = datetime.now().strftime("%a %d. %b %Y at %H:%M") + with open(STATUSFILE, 'w') as status_file: + status_file.write(status + '\n' + date_now + '\n') + + +if __name__ == '__main__': + + STATUSFILE = '/tmp/sublab-doorstatus.last' + + # instance of class which gets current status + s = SublabStatus() + status = s.door_status() + + # read file with last status + with open(STATUSFILE, 'r') as status_file: + old_status = status_file.readline().rstrip() + last_change = status_file.readline().rstrip() + + # check if status changed, if yes, update css and tweet it + if s.door_status() == 'open' and old_status == 'closed': + save_statusfile(STATUSFILE, status) + update_css('#0f0', '#222', 'status-open.png') + try: + tweet('open', last_change) + except TweetLengthException: + print("Tweet was too long") + elif s.door_status() == 'closed' and old_status == 'open': + save_statusfile(STATUSFILE, status) + update_css('#222', '#f00', 'status-closed.png') + try: + tweet('closed', last_change) + except TweetLengthException: + print("Tweet was too long") + else: + update_css = ('#222', '#222', 'status-unknown.png') |