def main(): if len(sys.argv) != 2: sys.stderr.write("Usage: wf_calendar_sync.py [YAML file]\n") exit(1) sys.stdout.write("(c) 2011 Jonas Gulle <*****@*****.**>\n\n") sys.stdout.write("Enter your Google Account credentials.\n") from getpass import getpass while True: try: username = raw_input(" Username: "******" Password: "******"%s\n" % e) calendars = calendar.get_calendars() sys.stdout.write("\nYour calendars:\n"); for i, c in enumerate(calendars): sys.stdout.write(" %d: %s\n" % (i + 1, c["name"])) while True: try: i = int(raw_input("Select calendar: ")) - 1 if i < 0: raise IndexError calendar.insert_uri = calendars[i]["insert_uri"] break except (IndexError, ValueError): sys.stderr.write("No such calendar exist\n") with open(sys.argv[1]) as f: doc = yaml.load(f.read()) sys.stdout.write("\nCreating events, please wait.") for event in doc["Calendar"]: from datetime import timedelta start = event["Date"] # Default to 3 hours if length is omitted end = start + timedelta(hours=3) if event.has_key("Length"): end = start + timedelta(hours=int(event["Length"])) # Grab the first line as the title title = event["Event"].partition("\n")[0] def dress_str(s): try: return {u"MK": u"Mörk kostym", u"HD": u"Högtidsdräkt"}[s] except KeyError: return s content = u"" if event.has_key("Dress code"): content = u"%s\n\nKlädkod: %s" % (event["Event"], dress_str(event["Dress code"])) else: content = event["Event"] calendar.insert_event( title, content, start_time=start.isoformat(), end_time=end.isoformat() ) sys.stdout.write(".") sys.stdout.write("\nDone!\n")