bolster

occupy-farset.py

Apr 10th, 2012
204
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.46 KB | None | 0 0
  1. #! /usr/bin/env python
  2. import k8055
  3. import time
  4. import oauth2 as oauth
  5. import urllib
  6. import irclib
  7. import time
  8. import logging
  9.  
  10. #Basic Config Vars
  11. name="REDACTED"
  12. username="REDACTED"
  13. irc_net="REDACTED"
  14. irc_chan="REDACTED"
  15. log_dir="/tmp/"
  16. irc_port=6667
  17. occupied = True
  18. twitter=True
  19. irc=True
  20. testing=False
  21.  
  22. #Twitter Auth
  23. ckey='REDACTED'
  24. csecret='REDACTED'
  25. akey='REDACTED'
  26. asecret='REDACTED'
  27. postapi = "http://api.twitter.com/1/statuses/update.json"
  28.  
  29. #INIT Logging
  30. logging.basicConfig(filename=log_dir+username+'.log',
  31.                     level=logging.DEBUG,
  32.                     )
  33. logging.debug("Logging enabled")
  34.  
  35. #INIT Board
  36. try:
  37.     board = k8055.Board()
  38. except k8055.BoardError as err:
  39.     logging.error("Cannot Grab Board, Aborting:"+err)
  40.     exit
  41.  
  42. logging.info("Board Acquired")
  43.  
  44. #INIT IRC
  45. try:
  46.     irc=irclib.IRC()
  47.     irc_serv=irc.server()
  48.     irc_serv.connect(irc_net,irc_port,username)
  49.     irc_serv.join(irc_chan)
  50. except irclib.IRCError as err:
  51.     logging.error("Cannot Connect to IRC Service, Aborting:"+err)
  52.     exit
  53.  
  54. logging.info("IRC Acquired and Joined")
  55.  
  56. #Posting Functions
  57. def post_twitter(status):
  58.     try:
  59.         consumer = oauth.Consumer(key=ckey, secret=csecret)
  60.         token = oauth.Token(key=akey, secret=asecret)
  61.         client = oauth.Client(consumer, token)
  62.         resp, content = client.request(
  63.             postapi,
  64.             method='POST',
  65.             body = urllib.urlencode({"status": status,
  66.                                      "wrap_links": True,
  67.                                      "place_id":'7d53c42656301e0f'}),
  68.             #headers=http_headers,
  69.             #force_auth_header=True
  70.             )
  71.     except oauth.Error as err:
  72.         logging.error("Twitter Error:"+err)
  73.     return resp, content
  74.  
  75. def post_irc(status):
  76.     irc_serv.privmsg("#FarsetLabs",status)
  77.  
  78. def update(status):
  79.     status="The Space is now "+status
  80.     if testing:
  81.         status+=": Test- ignore me"
  82.     if twitter:
  83.         post_twitter(status)
  84.     if irc:
  85.         post_irc(status)
  86.     print status
  87.  
  88. while True:
  89.     #Reset Board
  90.     board.read()
  91.     board.reset_digital_outputs()
  92.     board.digital_outputs[0]=occupied
  93.  
  94.     #IRC keepalive
  95.     irc.process_once()
  96.  
  97.     #Slowdown
  98.     time.sleep(1)
  99.  
  100.     if not board.digital_inputs[4]:
  101.         if not occupied:
  102.             update("Open")
  103.             occupied=True
  104.     else:
  105.         if occupied:
  106.             update("Closed")
  107.             occupied=False
Advertisement
Add Comment
Please, Sign In to add comment