#!/usr/bin/python from getpass import getpass import getopt, sys, urllib2 import simplejson as json import gdata.spreadsheet.service class iobridge_widget: def __init__(self, URL): self.URL = URL self.data = {} self._json_data = {} def __getitem__(self, key): try: if not self.data: self._get_widget_info() if key == "data" and self.data: return self.data elif key in self.data: return self.data[key] else: return None except KeyError: return None def _get_widget_info(self): ### Should cache this data, i.e. don't make another request if < 10 sec since last self._json_data = json.loads(urllib2.urlopen(self.URL).read()) ### Should also put in some checks if things don't exist, e.g. channel empty self.data['date'] = self._json_data['module']['datetime'] self.data['temp'] = self._json_data['module']['channels'][0]['AnalogInput'] class gdata_storage: def __init__(self, email, password): self.gclient = gdata.spreadsheet.service.SpreadsheetsService() self.gclient.email = email self.gclient.password = password self.gclient.source = 'wjhuie.com-iobridge-sample-1' self.gclient.ProgrammaticLogin() ### Replace this with the value from the ?key= portion of the URL self.spreadsheet_key = "p_#####################" def InsertData(self, data): entry = self.gclient.InsertRow(data, self.spreadsheet_key) if not isinstance(entry, gdata.spreadsheet.SpreadsheetsList): print 'Problem Inserting:', data def main(): opts, args = getopt.getopt(sys.argv[1:], "", ["user=", "pw="]) user = '' pw = '' for o, a in opts: if o == "--user": user = a elif o == "--pw": pw = a if not pw: pw = getpass("gdocs password: ") if user == '' or pw == '': print 'python spreadsheetExample.py --user [username] --pw [password] ' sys.exit(2) ### Replace FeedURL with the value from iobridge feedurl = "http://www.iobridge.com/interface/feed/FD_####################" widget = iobridge_widget(feedurl) data_store = gdata_storage(user, pw) if widget['data']: data_store.InsertData(widget['data']) print "Widget Data: %s" % ( widget['data']) if __name__ == '__main__': main()