def main(): args = common.get_base_argparser().parse_args() common.configure_logging(args) race_path = common.get_race_path(args.race) with open(os.path.join(race_path, 'riders.json')) as f: riders = json.load(f) session = common.get_trackleaders_session() for rider in riders: try: logging.info('Getting data for {name}'.format(**rider)) rider_path = os.path.join(race_path, rider['url_fragment']) rider_points_path = os.path.join(rider_path, 'points.json') oldpoints = common.load_rider_points(rider_points_path=rider_points_path) spot_js_url = 'http://trackleaders.com/spot/{}/{}.js'.format(args.race, rider['url_fragment']) spot_js_response = common.retry(functools.partial(session.get, spot_js_url)) spot_js_response.raise_for_status() newpoints = parse_points_from_spotjs_text(spot_js_response.text) points_set = set(itertools.chain(oldpoints, newpoints)) points_sorted = [common.point_to_raw(point) for point in sorted(points_set)] if not points_sorted: logging.warning('No points for {name}.'.format(**rider)) with common.DelayedKeyboardInterrupt(): if not os.path.exists(rider_path): os.mkdir(rider_path) with open(rider_points_path, 'w') as f: json.dump(points_sorted, f, indent=2, sort_keys=True) except Exception: logging.exception('Error for {name}'.format(**rider))
def main(): args = common.get_base_argparser().parse_args() common.configure_logging(args) logging.info('Getting Riders') session = common.get_trackleaders_session() race_page_response = session.get('http://trackleaders.com/{}f.php'.format(args.race)) race_page_response.raise_for_status() riders = parse_riders_from_race_page(race_page_response.text) race_path = common.get_race_path(args.race) if not os.path.exists(race_path): os.mkdir(race_path) with open(common.get_riders_path(race_path), 'w') as f: json.dump(riders, f, indent=2, sort_keys=True)