Empty file (GPS.Sport storage backend failure) handling.
[pyrungps.git] / pyrungps / pyrungps_sync.py
index b87a17e4c20b3a71dfb91da3faa68a5d7ecfe26f..67362156ea82d66235aeccc78f1dc826017a84fe 100644 (file)
@@ -14,15 +14,16 @@ from optparse import OptionParser
 from datetime import date,datetime
 from dateutil.parser import isoparse
 from pyrungps.parsegpx import write_parsed_to_db,check_db_for_training
-import pyrungps.pygpx
+from pyrungps.pygpx import GPX
+from io import BytesIO
 
 from tempfile import NamedTemporaryFile
 
 from pprint import pprint
 
-import pyrungps.render_tiles
+from pyrungps.render_tiles import queue_render
 
-import pyrungps.generate_image
+from pyrungps.generate_image import render_all
 
 def get_page(uname,year,month):
   
@@ -36,7 +37,8 @@ def get_page(uname,year,month):
     if attribute == "href":
       if link.startswith("/trainings/"):
         dummy, dummy, link = link.split('/')
-        name, id = link.split('_')
+        name, *ids = link.split('_')
+        id = ids[-1]
         trainings.append([ unquote(name), id ])
       
   return trainings      
@@ -46,6 +48,7 @@ def get_gpx_track(trid,name):
   print("trid=",trid)
 
   req = requests.get("http://www.gps-sport.net/services/trainingGPX.jsp?trainingID=%s&tz=-180" % (trid), verify=False)
+  
   xml = etree.fromstring(req.text.encode('utf-8'))
 
   return xml
@@ -181,11 +184,15 @@ def sync_db(dbx,username,year,month,dir=".",verbose=False,force=False):
         if verbose:
           print("writing training %s" % (filename))
 
-        gpx = pygpx.GPX()
+        gpx = GPX()
         gpx.ReadTree(xml)
 
         sport = training['sport']
         timestamp = gpx.tracks[0].start_time()
+                
+        if not(timestamp):
+          print("Empty training found, skipping...")
+          continue
         
         print(sport, timestamp)
         
@@ -205,7 +212,7 @@ def sync_db(dbx,username,year,month,dir=".",verbose=False,force=False):
         f.close
         write_parsed_to_db(db,gpx,filename)
         try:
-          render_tiles.queue_render(db,filename)
+          queue_render(db,filename)
         except:
           None  
 
@@ -236,7 +243,7 @@ def sync_osm(username,password,year,month,dir=".",verbose=False,force=False):
         if verbose:
           print("writing training %s" % (filename))
 
-        gpx = pygpx.GPX()
+        gpx = GPX()
         gpx.ReadTree(xml)
 
         sport = training['sport']
@@ -258,7 +265,7 @@ def sync_osm(username,password,year,month,dir=".",verbose=False,force=False):
         f.close
         write_parsed_to_db(db,gpx,filename)
         try:
-          render_tiles.queue_render(db,filename)
+          queue_render(db,filename)
         except:
           None  
 
@@ -288,7 +295,7 @@ def sync_folder(username,year,month,dir=".",verbose=False,force=False):
         if verbose:
           print("writing training %s" % (filename))
 
-        gpx = pygpx.GPX()
+        gpx = GPX()
         gpx.ReadTree(xml)
 
         sport = tr[0]
@@ -307,7 +314,7 @@ def sync_folder(username,year,month,dir=".",verbose=False,force=False):
         f.close
         write_parsed_to_db(db,gpx,filename)
         try:
-          render_tiles.queue_render(db,filename)
+          queue_render(db,filename)
         except:
           None  
 
@@ -408,7 +415,7 @@ def main():
       elif dbauth:
         sync_db(dbx,pusername,current_year,current_month,outdir,options.verbose,options.force)  
 
-    generate_image.render_all(db,'/etc/mapnik-osm-carto-data/veloroad-imposm.xml',640,640)
+    render_all(db,'/etc/mapnik-osm-carto-data/veloroad-imposm.xml',640,640)
 
 if __name__ == "__main__":