import file_writer import renderer import re import sets import gdata_oauth import secrets class gdocs_renderer(renderer.debuggable_abstaining_renderer): """A renderer to fetches and munge docs from drive.google.com""" query = 'title="Grocery (go/grocery)" OR title="Costco List (go/costco)"' def __init__(self, name_to_timeout_dict, oauth): super(gdocs_renderer, self).__init__(name_to_timeout_dict, False) self.oauth = oauth self.client = self.oauth.docs_service() def debug_prefix(self): return "gdocs" def periodic_render(self, key): result = [] page_token = None while True: try: param = {} if page_token: param['pageToken'] = page_token param['q'] = self.query print("QUERY: %s" % param['q']) files = self.client.files().list(**param).execute() result.extend(files['items']) page_token = files.get('nextPageToken') if not page_token: break except: print("********* TRYING TO REFRESH GDOCS CLIENT *********") self.oauth.refresh_token() self.client = self.oauth.docs_service() return False def boost_font_size(matchobj): x = int(matchobj.group(1)) x *= 2.33 x = int(x) return "font-size:%dpt" % (x) for f in result: print(f['title']) print(f['id']) self.debug_print("%s (%s)\n" % (f['title'], f['id'])) title = f['title'] url = f['exportLinks']['text/html'] print(f) print("Fetching %s..." % url) resp, contents = self.client._http.request(url) print(resp.status) print(contents) if resp.status == 200: print("Got contents.") contents = re.sub('', '', contents) contents = contents.replace('', '') contents = re.sub('font-size:([0-9]+)pt', boost_font_size, contents) f = file_writer.file_writer('%s_2_3600.html' % title) now = datetime.datetime.now() f.write("""

%s


%s
""" % (title, now, contents)) f.close() else: self.debug_print("error: %s" % resp) return False return True #oauth = gdata_oauth.OAuth(secrets.google_client_id, # secrets.google_client_secret) #x = gdocs_renderer({"Testing", 12345}, # oauth) #x.periodic_render("Test")