From: Philipp Spitzer Date: Fri, 15 Jul 2022 16:17:51 +0000 (+0200) Subject: Fix typo in filename. X-Git-Url: https://git.toastfreeware.priv.at/philipp/winterrodeln/wrpylib.git/commitdiff_plain/10b65ee3f9662f2039b773e65d17505acec1fa25 Fix typo in filename. --- diff --git a/bots/update_sledrun_json_from_wikitext_corection.py b/bots/update_sledrun_json_from_wikitext_corection.py deleted file mode 100644 index 01311a3..0000000 --- a/bots/update_sledrun_json_from_wikitext_corection.py +++ /dev/null @@ -1,117 +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. - -Update a sledrun JSON page from a detail in a sledrun wikitext page. - -The following generators and filters are supported: - -¶ms; -""" -import io -import json -import re -from itertools import takewhile, dropwhile -from typing import Optional - -import jsonschema -import mwparserfromhell -from mwparserfromhell.nodes.extras import Parameter - -import pywikibot -from mwparserfromhell.nodes import Tag, Text, ExternalLink, Template, Wikilink, Heading -from mwparserfromhell.wikicode import Wikicode -from pywikibot import pagegenerators, Page -from pywikibot.bot import ( - AutomaticTWSummaryBot, - ConfigParserBot, - ExistingPageBot, - NoRedirectPageBot, - SingleSiteBot, -) -from pywikibot.logging import warning -from pywikibot.site._namespace import BuiltinNamespace -from wrpylib.json_tools import order_json_keys - -from wrpylib.wrmwmarkup import create_sledrun_wiki, lonlat_to_json, lonlat_ele_to_json, parse_wrmap -from wrpylib.wrvalidators import rodelbahnbox_from_template, tristate_german_to_str, difficulty_german_to_str, \ - avalanches_german_to_str, public_transport_german_to_str, opt_lonlat_from_str, \ - opt_uint_from_str -from wrpylib.lib_sledrun_wikitext_to_json import optional_set, get_sledrun_description - -docuReplacements = {'¶ms;': pagegenerators.parameterHelp} - - -class UpdateSledrunJsonFromWikiText( - 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.""" - 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 - - wikicode = mwparserfromhell.parse(self.current_page.text) - - sledrun_json_page = Page(self.site, self.current_page.title() + '/Rodelbahn.json') - if not sledrun_json_page.exists(): - return - sledrun_json = json.loads(sledrun_json_page.text) - sledrun_json_orig = json.loads(sledrun_json_page.text) - sledrun_json_orig_text = json.dumps(sledrun_json_orig, ensure_ascii=False, indent=4) - - def _button_bar(): - bb_iter = wikicode.ifilter_templates(recursive=False, matches=lambda t: t.name.strip() == 'Buttonleiste') - bb = next(bb_iter, None) - if bb is not None: - correction_email = bb.get('Korrektur_To', None) - if isinstance(correction_email, Parameter) and correction_email.value.strip() != "": - sledrun_json['correction_email'] = correction_email.value.strip() - correction_name = bb.get('Korrektur_To_Name', None) - if isinstance(correction_name, Parameter) and correction_name.value.strip() != "": - sledrun_json['correction_name'] = correction_name.value.strip() - freizeitticket = bb.get('Freizeitticket', None) - if isinstance(freizeitticket, Parameter) and freizeitticket.value.strip() == "Ja": - sledrun_json['freizeitticket_tyrol'] = True - regiocard = bb.get('Regiocard', None) - if isinstance(regiocard, Parameter) and regiocard.value.strip() != "": - sledrun_json['regio_card_tyrol'] = True - - _button_bar() - - jsonschema.validate(instance=sledrun_json, schema=self.sledrun_schema) - sledrun_json_ordered = order_json_keys(sledrun_json, self.sledrun_schema) - assert sledrun_json_ordered == sledrun_json - if sledrun_json == sledrun_json_orig: - return - sledrun_json_text = json.dumps(sledrun_json_ordered, ensure_ascii=False, indent=4) - summary = 'Korrektur-Kontakt Information im Rodelbahn JSON aktualisiert vom Wikitext.' - self.userPut(sledrun_json_page, sledrun_json_orig_text, sledrun_json_text, summary=summary, contentmodel='json') - - -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 = UpdateSledrunJsonFromWikiText(generator=gen) - bot.run() - else: - pywikibot.bot.suggest_help(missing_generator=True) - - -if __name__ == '__main__': - main() diff --git a/bots/update_sledrun_json_from_wikitext_correction.py b/bots/update_sledrun_json_from_wikitext_correction.py new file mode 100644 index 0000000..01311a3 --- /dev/null +++ b/bots/update_sledrun_json_from_wikitext_correction.py @@ -0,0 +1,117 @@ +#!/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. + +Update a sledrun JSON page from a detail in a sledrun wikitext page. + +The following generators and filters are supported: + +¶ms; +""" +import io +import json +import re +from itertools import takewhile, dropwhile +from typing import Optional + +import jsonschema +import mwparserfromhell +from mwparserfromhell.nodes.extras import Parameter + +import pywikibot +from mwparserfromhell.nodes import Tag, Text, ExternalLink, Template, Wikilink, Heading +from mwparserfromhell.wikicode import Wikicode +from pywikibot import pagegenerators, Page +from pywikibot.bot import ( + AutomaticTWSummaryBot, + ConfigParserBot, + ExistingPageBot, + NoRedirectPageBot, + SingleSiteBot, +) +from pywikibot.logging import warning +from pywikibot.site._namespace import BuiltinNamespace +from wrpylib.json_tools import order_json_keys + +from wrpylib.wrmwmarkup import create_sledrun_wiki, lonlat_to_json, lonlat_ele_to_json, parse_wrmap +from wrpylib.wrvalidators import rodelbahnbox_from_template, tristate_german_to_str, difficulty_german_to_str, \ + avalanches_german_to_str, public_transport_german_to_str, opt_lonlat_from_str, \ + opt_uint_from_str +from wrpylib.lib_sledrun_wikitext_to_json import optional_set, get_sledrun_description + +docuReplacements = {'¶ms;': pagegenerators.parameterHelp} + + +class UpdateSledrunJsonFromWikiText( + 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.""" + 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 + + wikicode = mwparserfromhell.parse(self.current_page.text) + + sledrun_json_page = Page(self.site, self.current_page.title() + '/Rodelbahn.json') + if not sledrun_json_page.exists(): + return + sledrun_json = json.loads(sledrun_json_page.text) + sledrun_json_orig = json.loads(sledrun_json_page.text) + sledrun_json_orig_text = json.dumps(sledrun_json_orig, ensure_ascii=False, indent=4) + + def _button_bar(): + bb_iter = wikicode.ifilter_templates(recursive=False, matches=lambda t: t.name.strip() == 'Buttonleiste') + bb = next(bb_iter, None) + if bb is not None: + correction_email = bb.get('Korrektur_To', None) + if isinstance(correction_email, Parameter) and correction_email.value.strip() != "": + sledrun_json['correction_email'] = correction_email.value.strip() + correction_name = bb.get('Korrektur_To_Name', None) + if isinstance(correction_name, Parameter) and correction_name.value.strip() != "": + sledrun_json['correction_name'] = correction_name.value.strip() + freizeitticket = bb.get('Freizeitticket', None) + if isinstance(freizeitticket, Parameter) and freizeitticket.value.strip() == "Ja": + sledrun_json['freizeitticket_tyrol'] = True + regiocard = bb.get('Regiocard', None) + if isinstance(regiocard, Parameter) and regiocard.value.strip() != "": + sledrun_json['regio_card_tyrol'] = True + + _button_bar() + + jsonschema.validate(instance=sledrun_json, schema=self.sledrun_schema) + sledrun_json_ordered = order_json_keys(sledrun_json, self.sledrun_schema) + assert sledrun_json_ordered == sledrun_json + if sledrun_json == sledrun_json_orig: + return + sledrun_json_text = json.dumps(sledrun_json_ordered, ensure_ascii=False, indent=4) + summary = 'Korrektur-Kontakt Information im Rodelbahn JSON aktualisiert vom Wikitext.' + self.userPut(sledrun_json_page, sledrun_json_orig_text, sledrun_json_text, summary=summary, contentmodel='json') + + +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 = UpdateSledrunJsonFromWikiText(generator=gen) + bot.run() + else: + pywikibot.bot.suggest_help(missing_generator=True) + + +if __name__ == '__main__': + main()