From: Philipp Spitzer Date: Sun, 13 Mar 2022 20:02:09 +0000 (+0100) Subject: Rename bots for consistency. X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wrpylib.git/commitdiff_plain/676c0336d9bab52a0344d107b5dc14f3f8884b2e Rename bots for consistency. --- diff --git a/bots/json_edit.py b/bots/json_edit.py deleted file mode 100644 index 648b189..0000000 --- a/bots/json_edit.py +++ /dev/null @@ -1,75 +0,0 @@ -#!/usr/bin/python -""" -User script for pywikibot (https://gerrit.wikimedia.org/r/pywikibot/core.git), tested with version 6.6.1. -Put it in directory scripts/userscripts. - -Edit JSON associated with sledruns. - -The following generators and filters are supported: - -¶ms; -""" -import json - -import pywikibot -from jsonschema import validate -from pywikibot import pagegenerators, Page -from pywikibot.bot import ( - AutomaticTWSummaryBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - SingleSiteBot, -) - -from wrpylib.json_tools import order_json_keys -from wrpylib.wrmwmarkup import create_sledrun_wiki - - -docuReplacements = {'¶ms;': pagegenerators.parameterHelp} - - -class SledrunFromJsonBot( - SingleSiteBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - AutomaticTWSummaryBot, -): - def setup(self) -> None: - schema = Page(self.site, 'Winterrodeln:Datenschema/Rodelbahn/V1.json') - assert schema.content_model == 'json' - self.sledrun_schema = json.loads(schema.text) - - def treat_page(self) -> None: - """Load the given page, do some changes, and save it.""" - if self.current_page.content_model != 'json': - return - content_json = json.loads(self.current_page.text) - - # *here*, content_json can be processed - processed_json = content_json - - validate(instance=processed_json, schema=self.sledrun_schema) - processed_json_ordered = order_json_keys(processed_json, self.sledrun_schema) - assert processed_json_ordered == processed_json - text = json.dumps(processed_json_ordered, ensure_ascii=False, indent=4) - - summary = 'JSON Daten aktualisiert.' - self.put_current(text, summary=summary) - - -def main(*args: str) -> None: - local_args = pywikibot.handle_args(args) - gen_factory = pagegenerators.GeneratorFactory() - gen_factory.handle_args(local_args) - gen = gen_factory.getCombinedGenerator(preload=True) - if gen: - bot = SledrunFromJsonBot(generator=gen) - bot.run() - else: - pywikibot.bot.suggest_help(missing_generator=True) - - -if __name__ == '__main__': - main() diff --git a/bots/json_validate.py b/bots/json_validate.py deleted file mode 100644 index 4dbccfd..0000000 --- a/bots/json_validate.py +++ /dev/null @@ -1,73 +0,0 @@ -#!/usr/bin/python -""" -User script for pywikibot (https://gerrit.wikimedia.org/r/pywikibot/core.git), tested with version 6.6.1. -Put it in directory scripts/userscripts. - -Edit JSON associated with sledruns. - -The following generators and filters are supported: - -¶ms; -""" -import json -import jsonschema -from jsonschema import validate - -import pywikibot -from pywikibot import pagegenerators, Page -from pywikibot.bot import ( - AutomaticTWSummaryBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - SingleSiteBot, -) - -from wrpylib.json_tools import order_json_keys - -docuReplacements = {'¶ms;': pagegenerators.parameterHelp} - - -class SledrunFromJsonBot( - SingleSiteBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - AutomaticTWSummaryBot, -): - def setup(self) -> None: - schema = Page(self.site, 'Winterrodeln:Datenschema/Rodelbahn/V1.json') - assert schema.content_model == 'json' - self.sledrun_schema = json.loads(schema.text) - - def treat_page(self) -> None: - """Load the given page, do some changes, and save it.""" - content_json = json.loads(self.current_page.text) - try: - validate(instance=content_json, schema=self.sledrun_schema) - - content_json_ordered = order_json_keys(content_json, self.sledrun_schema) - assert content_json_ordered == content_json - text = json.dumps(content_json_ordered, ensure_ascii=False, indent=4) - - except jsonschema.exceptions.ValidationError as e: - text = str(e) - - summary = 'JSON Daten aktualisiert.' - self.put_current(text, summary=summary) - - -def main(*args: str) -> None: - local_args = pywikibot.handle_args(args) - gen_factory = pagegenerators.GeneratorFactory() - gen_factory.handle_args(local_args) - gen = gen_factory.getCombinedGenerator(preload=True) - if gen: - bot = SledrunFromJsonBot(generator=gen) - bot.run() - else: - pywikibot.bot.suggest_help(missing_generator=True) - - -if __name__ == '__main__': - main() diff --git a/bots/sledrun_from_json.py b/bots/sledrun_from_json.py deleted file mode 100644 index 73367bd..0000000 --- a/bots/sledrun_from_json.py +++ /dev/null @@ -1,76 +0,0 @@ -#!/usr/bin/python -""" -User script for pywikibot (https://gerrit.wikimedia.org/r/pywikibot/core.git), tested with version 6.6.1. -Put it in directory scripts/userscripts. - -Replace a sledrun page with content generated from associated JSON subpages -(Rodelbahn and Landkarte). - -The following generators and filters are supported: - -¶ms; -""" -import json - -import pywikibot -from pywikibot import pagegenerators, Page -from pywikibot.bot import ( - AutomaticTWSummaryBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - SingleSiteBot, -) -from pywikibot.logging import warning - -from wrpylib.wrmwmarkup import create_sledrun_wiki - - -docuReplacements = {'¶ms;': pagegenerators.parameterHelp} - - -class SledrunFromJsonBot( - SingleSiteBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - AutomaticTWSummaryBot, -): - def treat_page(self) -> None: - """Load the given page, do some changes, and save it.""" - sledrun_json_page = Page(self.site, self.current_page.title() + '/Rodelbahn.json') - if not sledrun_json_page.exists(): - warning(f"{sledrun_json_page.title()} does not exist. Skipping.") - return - if sledrun_json_page.content_model != 'json': - warning(f"Content model of {sledrun_json_page.title()} is not 'json'.") - return - sledrun_json = json.loads(sledrun_json_page.text) - map_json_page = Page(self.site, self.current_page.title() + '/Landkarte.json') - if map_json_page.exists(): - map_json = json.loads(map_json_page.text) - else: - map_json = None - impressions = None - sledrun_impressions_page = Page(self.site, self.current_page.title() + '/Impressionen') - if sledrun_impressions_page.exists(): - impressions = sledrun_impressions_page.title() - text = create_sledrun_wiki(sledrun_json, map_json, impressions) - summary = 'Rodelbahnbeschreibung von aus JSON Daten aktualisiert.' - self.put_current(text, summary=summary) - - -def main(*args: str) -> None: - local_args = pywikibot.handle_args(args) - gen_factory = pagegenerators.GeneratorFactory() - gen_factory.handle_args(local_args) - gen = gen_factory.getCombinedGenerator(preload=True) - if gen: - bot = SledrunFromJsonBot(generator=gen) - bot.run() - else: - pywikibot.bot.suggest_help(missing_generator=True) - - -if __name__ == '__main__': - main() diff --git a/bots/sledrun_json_edit.py b/bots/sledrun_json_edit.py new file mode 100644 index 0000000..648b189 --- /dev/null +++ b/bots/sledrun_json_edit.py @@ -0,0 +1,75 @@ +#!/usr/bin/python +""" +User script for pywikibot (https://gerrit.wikimedia.org/r/pywikibot/core.git), tested with version 6.6.1. +Put it in directory scripts/userscripts. + +Edit JSON associated with sledruns. + +The following generators and filters are supported: + +¶ms; +""" +import json + +import pywikibot +from jsonschema import validate +from pywikibot import pagegenerators, Page +from pywikibot.bot import ( + AutomaticTWSummaryBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + SingleSiteBot, +) + +from wrpylib.json_tools import order_json_keys +from wrpylib.wrmwmarkup import create_sledrun_wiki + + +docuReplacements = {'¶ms;': pagegenerators.parameterHelp} + + +class SledrunFromJsonBot( + SingleSiteBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + AutomaticTWSummaryBot, +): + def setup(self) -> None: + schema = Page(self.site, 'Winterrodeln:Datenschema/Rodelbahn/V1.json') + assert schema.content_model == 'json' + self.sledrun_schema = json.loads(schema.text) + + def treat_page(self) -> None: + """Load the given page, do some changes, and save it.""" + if self.current_page.content_model != 'json': + return + content_json = json.loads(self.current_page.text) + + # *here*, content_json can be processed + processed_json = content_json + + validate(instance=processed_json, schema=self.sledrun_schema) + processed_json_ordered = order_json_keys(processed_json, self.sledrun_schema) + assert processed_json_ordered == processed_json + text = json.dumps(processed_json_ordered, ensure_ascii=False, indent=4) + + summary = 'JSON Daten aktualisiert.' + self.put_current(text, summary=summary) + + +def main(*args: str) -> None: + local_args = pywikibot.handle_args(args) + gen_factory = pagegenerators.GeneratorFactory() + gen_factory.handle_args(local_args) + gen = gen_factory.getCombinedGenerator(preload=True) + if gen: + bot = SledrunFromJsonBot(generator=gen) + bot.run() + else: + pywikibot.bot.suggest_help(missing_generator=True) + + +if __name__ == '__main__': + main() diff --git a/bots/sledrun_json_validate.py b/bots/sledrun_json_validate.py new file mode 100644 index 0000000..4dbccfd --- /dev/null +++ b/bots/sledrun_json_validate.py @@ -0,0 +1,73 @@ +#!/usr/bin/python +""" +User script for pywikibot (https://gerrit.wikimedia.org/r/pywikibot/core.git), tested with version 6.6.1. +Put it in directory scripts/userscripts. + +Edit JSON associated with sledruns. + +The following generators and filters are supported: + +¶ms; +""" +import json +import jsonschema +from jsonschema import validate + +import pywikibot +from pywikibot import pagegenerators, Page +from pywikibot.bot import ( + AutomaticTWSummaryBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + SingleSiteBot, +) + +from wrpylib.json_tools import order_json_keys + +docuReplacements = {'¶ms;': pagegenerators.parameterHelp} + + +class SledrunFromJsonBot( + SingleSiteBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + AutomaticTWSummaryBot, +): + def setup(self) -> None: + schema = Page(self.site, 'Winterrodeln:Datenschema/Rodelbahn/V1.json') + assert schema.content_model == 'json' + self.sledrun_schema = json.loads(schema.text) + + def treat_page(self) -> None: + """Load the given page, do some changes, and save it.""" + content_json = json.loads(self.current_page.text) + try: + validate(instance=content_json, schema=self.sledrun_schema) + + content_json_ordered = order_json_keys(content_json, self.sledrun_schema) + assert content_json_ordered == content_json + text = json.dumps(content_json_ordered, ensure_ascii=False, indent=4) + + except jsonschema.exceptions.ValidationError as e: + text = str(e) + + summary = 'JSON Daten aktualisiert.' + self.put_current(text, summary=summary) + + +def main(*args: str) -> None: + local_args = pywikibot.handle_args(args) + gen_factory = pagegenerators.GeneratorFactory() + gen_factory.handle_args(local_args) + gen = gen_factory.getCombinedGenerator(preload=True) + if gen: + bot = SledrunFromJsonBot(generator=gen) + bot.run() + else: + pywikibot.bot.suggest_help(missing_generator=True) + + +if __name__ == '__main__': + main() diff --git a/bots/sledrun_wikitext_from_json.py b/bots/sledrun_wikitext_from_json.py new file mode 100644 index 0000000..73367bd --- /dev/null +++ b/bots/sledrun_wikitext_from_json.py @@ -0,0 +1,76 @@ +#!/usr/bin/python +""" +User script for pywikibot (https://gerrit.wikimedia.org/r/pywikibot/core.git), tested with version 6.6.1. +Put it in directory scripts/userscripts. + +Replace a sledrun page with content generated from associated JSON subpages +(Rodelbahn and Landkarte). + +The following generators and filters are supported: + +¶ms; +""" +import json + +import pywikibot +from pywikibot import pagegenerators, Page +from pywikibot.bot import ( + AutomaticTWSummaryBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + SingleSiteBot, +) +from pywikibot.logging import warning + +from wrpylib.wrmwmarkup import create_sledrun_wiki + + +docuReplacements = {'¶ms;': pagegenerators.parameterHelp} + + +class SledrunFromJsonBot( + SingleSiteBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + AutomaticTWSummaryBot, +): + def treat_page(self) -> None: + """Load the given page, do some changes, and save it.""" + sledrun_json_page = Page(self.site, self.current_page.title() + '/Rodelbahn.json') + if not sledrun_json_page.exists(): + warning(f"{sledrun_json_page.title()} does not exist. Skipping.") + return + if sledrun_json_page.content_model != 'json': + warning(f"Content model of {sledrun_json_page.title()} is not 'json'.") + return + sledrun_json = json.loads(sledrun_json_page.text) + map_json_page = Page(self.site, self.current_page.title() + '/Landkarte.json') + if map_json_page.exists(): + map_json = json.loads(map_json_page.text) + else: + map_json = None + impressions = None + sledrun_impressions_page = Page(self.site, self.current_page.title() + '/Impressionen') + if sledrun_impressions_page.exists(): + impressions = sledrun_impressions_page.title() + text = create_sledrun_wiki(sledrun_json, map_json, impressions) + summary = 'Rodelbahnbeschreibung von aus JSON Daten aktualisiert.' + self.put_current(text, summary=summary) + + +def main(*args: str) -> None: + local_args = pywikibot.handle_args(args) + gen_factory = pagegenerators.GeneratorFactory() + gen_factory.handle_args(local_args) + gen = gen_factory.getCombinedGenerator(preload=True) + if gen: + bot = SledrunFromJsonBot(generator=gen) + bot.run() + else: + pywikibot.bot.suggest_help(missing_generator=True) + + +if __name__ == '__main__': + main()