]> ToastFreeware Gitweb - philipp/winterrodeln/wrpylib.git/blob - scripts/update_wiki_wrgeojson_add_simplified.py
VAO is missing important streets in Switzerland.
[philipp/winterrodeln/wrpylib.git] / scripts / update_wiki_wrgeojson_add_simplified.py
1 #!/usr/bin/python
2 import argparse
3 from typing import List
4
5 from wrpylib.json_tools import format_json
6 from wrpylib.mwapi import WikiSite, page_json
7
8
9 def update_wrgeojson(site: WikiSite, title: str):
10     wrgeojson_page = site.query_page(title)
11     if 'missing' in wrgeojson_page:
12         return
13     wrgeojson_json = page_json(wrgeojson_page)
14     wrgeojson_orig = wrgeojson_json.copy()
15
16     properties = wrgeojson_json.pop('properties', {}).copy()
17     if "simplified" not in properties:
18         properties["simplified"] = True
19     wrgeojson_json['properties'] = properties
20     if wrgeojson_json == wrgeojson_orig:
21         return
22
23     site(
24         'edit',
25         pageid=wrgeojson_page['pageid'],
26         text=format_json(wrgeojson_json),
27         summary=f'Eigenschaft "simplified" eingefügt.',
28         minor=1,
29         bot=1,
30         baserevid=wrgeojson_page['revisions'][0]['revid'],
31         nocreate=1,
32         token=site.token(),
33     )
34
35
36 def update_wiki_wrgeojson(ini_files: List[str]):
37     site = WikiSite(ini_files)
38     for result in site.query(list='categorymembers', cmtitle='Kategorie:Rodelbahn'):
39         for title in result['categorymembers']:
40             wrgeojson_title = f'{title["title"]}/Landkarte.json'
41             update_wrgeojson(site, wrgeojson_title)
42
43
44 def main():
45     parser = argparse.ArgumentParser(description='Update wrgeojson Wiki pages: Add attribute "simplified".')
46     parser.add_argument('inifile', nargs='+', help='inifile.ini, see: https://www.winterrodeln.org/trac/wiki/ConfigIni')
47     args = parser.parse_args()
48     update_wiki_wrgeojson(args.inifile)
49
50
51 if __name__ == '__main__':
52     main()