#!/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. Create a sledrun JSON page from a sledrun wikitext page (including map). 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 SledrunWikiTextToJsonBot( SingleSiteBot, ConfigParserBot, ExistingPageBot, NoRedirectPageBot, AutomaticTWSummaryBot, ): def treat_page(self) -> None: """Load the given page, do some changes, and save it.""" wikitext_content_model = 'wikitext' if self.current_page.content_model != wikitext_content_model: warning(f"The content model of {self.current_page.title()} is {self.current_page.content_model} " f"instead of {wikitext_content_model}.") return sledrun_json_page = Page(self.site, self.current_page.title() + '/Rodelbahn.json') if sledrun_json_page.exists(): warning(f"{sledrun_json_page.title()} already exists, skipping {self.current_page.title()}.") return map_json_page = Page(self.site, self.current_page.title() + '/Landkarte.json') if map_json_page.exists(): warning(f"{map_json_page.title()} already exists, skipping {self.current_page.title()}.") return sledrun_json = { "name": self.current_page.title(), "description": "Holadrio!", } map_json = None text = create_sledrun_wiki(sledrun_json, map_json) summary = 'Rodelbahnbeschreibung nach Konvertierung nach und von JSON.' 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 = SledrunWikiTextToJsonBot(generator=gen) bot.run() else: pywikibot.bot.suggest_help(missing_generator=True) if __name__ == '__main__': main()