6 from itertools import islice
7 from typing import List
11 from wrpylib.json_tools import order_json_keys, format_json
12 from wrpylib.mwapi import WikiSite, page_json
15 def update_sledrun(db_cities: sqlite3.Connection, site: WikiSite, title: str):
16 sledrun_json_page = site.query_page(f'{title}/Rodelbahn.json')
17 sledrun_json = page_json(sledrun_json_page)
18 sledrun_json_orig = sledrun_json.copy()
20 car_parking = sledrun_json.get('car_parking')
24 position = car_parking[0].get('position', {}).get('position')
28 sql = 'select Name, st_x(geometry) as lon, st_y(geometry) as lat from cities where ' \
29 'st_distance(geometry, st_point(?, ?), 0) < ?;'
32 for row in db_cities.execute(sql, [position['longitude'], position['latitude'], max_dist_m]):
33 city_name, city_lon, city_lat = row
34 print(f"* {city_name}")
38 def update_car_distances(ini_files: List[str]):
39 db_cities = sqlite3.connect('/home/philipp/projects/winterrodeln/geodata/Ausgangspunkte.sqlite')
40 db_cities.enable_load_extension(True)
41 db_cities.execute("SELECT load_extension('mod_spatialite');")
43 site = WikiSite(ini_files)
44 for result in site.query(list='categorymembers', cmtitle='Kategorie:Rodelbahn', cmlimit='max'):
45 for page in result['categorymembers']:
46 update_sledrun(db_cities, site, page['title'])
50 parser = argparse.ArgumentParser(description='Update car distance information in sledrun JSON files.')
51 parser.add_argument('inifile', nargs='+', help='inifile.ini, see: https://www.winterrodeln.org/trac/wiki/ConfigIni')
52 args = parser.parse_args()
53 update_car_distances(args.inifile)
56 if __name__ == '__main__':