chiark / gitweb /
Add LICENSE (AGPLv3)
[gooswapper] / gooswapper.py
index 41dd8075abcd20ba04c6dd44cb74564e1d963751..1742b558624120b2972a6b1285b4e34d4edae899 100644 (file)
@@ -6,6 +6,7 @@ import os
 import pickle
 import collections
 import argparse
+import time
 import logging
 logger = logging.getLogger('gooswapper')
 logger.setLevel(logging.INFO)
@@ -418,34 +419,46 @@ def main():
         gcal_id = "primary"
     else:
         gcal_id = args.gcalid
-    try:
-        with open(cachepath,"rb") as f:
-            cache = pickle.load(f)
-    except FileNotFoundError:
-        cache = None
 
+    #log in to the accounts
     ex_account = ex_login(args.exchuser,args.exchemail,
                           ".gooswapper_exch_conf.dat")
-    current = get_ex_events(ex_account.calendar)
-
     gcal_account = gcal_login(args)
     gcal_tz = get_gcal_timezone(gcal_account,gcal_id)
-    
-    if cache is not None:
-        added,deleted,changed = ex_event_changes(cache,current)
-        add_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,added,gcal_id)
-        #delete op needs the "cache" set, as that has the link ids in
-        #for events that are now deleted
-        del_ex_to_gcal(ex_account,gcal_account,cache,deleted,gcal_id)
-        update_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,
-                          changed,gcal_id)
-    else:
-        toadd = match_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,
-                                 gcal_id)
-        add_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,toadd,gcal_id)
+
+    #Main loop (broken at the end if login is false)
+    while True:
+        try:
+            with open(cachepath,"rb") as f:
+                cache = pickle.load(f)
+        except FileNotFoundError:
+            cache = None
+
+        current = get_ex_events(ex_account.calendar)
+
+        if cache is not None:
+            added,deleted,changed = ex_event_changes(cache,current)
+            add_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,
+                           added,gcal_id)
+            #delete op needs the "cache" set, as that has the link ids in
+            #for events that are now deleted
+            del_ex_to_gcal(ex_account,gcal_account,cache,deleted,gcal_id)
+            update_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,
+                              changed,gcal_id)
+        else:
+            toadd = match_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,
+                                     gcal_id)
+            add_ex_to_gcal(ex_account,gcal_account,gcal_tz,current,
+                           toadd,gcal_id)
         
-    with open(cachepath,"wb") as f:
-        pickle.dump(current,f)
+        with open(cachepath,"wb") as f:
+            pickle.dump(current,f)
+
+        #If not looping, break here (after 1 run)
+        if args.loop==False:
+            break
+        #otherwise, wait 10 minutes, then go round again
+        time.sleep(600)
 
 if __name__ == "__main__":
     main()