#!/usr/bin/python import argparse from typing import List from wrpylib.json_tools import format_json from wrpylib.mwapi import WikiSite, page_json def update_wrgeojson(site: WikiSite, title: str): wrgeojson_page = site.query_page(title) if 'missing' in wrgeojson_page: return wrgeojson_json = page_json(wrgeojson_page) wrgeojson_orig = wrgeojson_json.copy() properties = wrgeojson_json.pop('properties', {}).copy() if "simplified" not in properties: properties["simplified"] = True wrgeojson_json['properties'] = properties if wrgeojson_json == wrgeojson_orig: return site( 'edit', pageid=wrgeojson_page['pageid'], text=format_json(wrgeojson_json), summary=f'Eigenschaft "simplified" eingefügt.', minor=1, bot=1, baserevid=wrgeojson_page['revisions'][0]['revid'], nocreate=1, token=site.token(), ) def update_wiki_wrgeojson(ini_files: List[str]): site = WikiSite(ini_files) for result in site.query(list='categorymembers', cmtitle='Kategorie:Rodelbahn'): for title in result['categorymembers']: wrgeojson_title = f'{title["title"]}/Landkarte.json' update_wrgeojson(site, wrgeojson_title) def main(): parser = argparse.ArgumentParser(description='Update wrgeojson Wiki pages: Add attribute "simplified".') parser.add_argument('inifile', nargs='+', help='inifile.ini, see: https://www.winterrodeln.org/trac/wiki/ConfigIni') args = parser.parse_args() update_wiki_wrgeojson(args.inifile) if __name__ == '__main__': main()