class MenaCreator(object): """ Create the MatchSchedule data for an event. This will add results to anything already played. Things we will NOT do: * Any disambigs * Check any one-team ff (both teams ff'ing WILL be handled though) * Split the data page in case it's too big * Label any tabs for playoffs etc """ heading = '== Day {} ==\n' outro = '{{MatchSchedule/End}}' def __init__(self, site: EsportsClient, title: str, bestof=1): self.site = site self.event = self.site.target(title).strip() self.toornament = self.site.cargo_client.query_one_result( tables='Tournaments', where='OverviewPage="{}"'.format(self.event), fields='ScrapeLink') self.summary = "Edit made by web scraping!" self.parser = Parser(self.toornament) self.intro_template = Template(name="MatchSchedule/Start") self.intro_template.add('bestof', str(bestof)) self.sandbox_page = self.site.client.pages[ 'User:RheingoldRiver/Toornament_Sandbox'] def run(self): matches = self.parser.run() output_list = [] current_day_index = 1 previousDate = time_from_str('1900-01-01 00:00:00+00:00') for match in matches: if match.timestamp.cet_date != previousDate.cet_date: if current_day_index > 1: output_list.append(self.outro) output_list.append(self.get_intro(current_day_index)) previousDate.cet_date = match.timestamp.cet_date current_day_index += 1 output_list.append(match.print()) output_list.append(self.outro) self.site.save_title(self.sandbox_page, '\n'.join(output_list)) return 'https://lol.gamepedia.com/' + self.sandbox_page.name.replace( ' ', '_') def get_intro(self, current_day_index: int): self.intro_template.add('tab', 'Day {}'.format(current_day_index), before="bestof") return self.heading.format(str(current_day_index)) + str( self.intro_template)
def redirect_cat(cat: pywikibot.Category, target: pywikibot.Category, summary: str) -> None: """ Redirect a category to another category. @param cat: Category to redirect @param target: Category redirect target @param summary: Edit summary """ tpl = Template('Category redirect') tpl.add('1', target.title(with_ns=False)) cat.text = str(tpl) cat.save(summary=summary)
def handle_template(tpl, code, namespace=None): if tpl.has('sprache'): if tpl.get('sprache').value.strip().lower() in ('englisch', 'english'): set_param_value(tpl, 'sprache', 'en') if tpl.get('sprache').value.strip().lower() in ('deutsch', 'german'): set_param_value(tpl, 'sprache', 'de') if tpl.has('wann'): if tpl.get('wann').value.strip() in ('Sommersemester', 'ss'): set_param_value(tpl, 'wann', 'SS') elif tpl.get('wann').value.strip() in ('Wintersemester', 'ws'): set_param_value(tpl, 'wann', 'WS') elif tpl.get('wann').value.strip() in ('Winter- und Sommersemester', 'Sommer- und Wintersemester'): set_param_value(tpl, 'wann', 'beide') if tpl.has('tiss'): if tpl.get('tiss').value.strip() == '1234567890': tpl.remove('tiss') archived = False successor = None if tpl.has('veraltet'): archived = True tpl.remove('veraltet') if tpl.has('nachfolger'): archived = True successor = tpl.get('nachfolger').value.strip() tpl.remove('nachfolger') for t in code.ifilter_templates( matches=lambda t: t.name.matches('Veraltet')): archived = True code.remove(t) archivedFlag = code.filter_templates( matches=lambda t: t.name.matches('Archiv')) if archived and not archivedFlag: tpl = Template(Wikicode([Text('Archiv')])) if successor: tpl.add('nachfolger', successor) code.insert(0, tpl) code.insert(1, '\n\n') if tpl.has('zuordnungen'): rels = tpl.get('zuordnungen').value.filter_templates() for rel in rels: if rel.has('2'): rel.get('2').value = str(rel.get('2').value).replace('–', '-') rels.sort(key=lambda x: x.get('1')) tpl.get('zuordnungen').value = '\n' + '\n'.join( [' ' * 4 + str(r) for r in rels]) + '\n' return 'fixe LVA-Daten'
def add_old_cfd( page: pywikibot.Page, cfd_page: CfdPage, action: str, result: str, summary: str, ) -> None: """Add {{Old CfD}} to the talk page.""" date = cfd_page.title(with_section=False).rpartition('/')[2] if page.exists(): wikicode = mwparserfromhell.parse(page.text, skip_style_tags=True) for tpl in wikicode.ifilter_templates(): try: template = pywikibot.Page(page.site, str(tpl.name), ns=10) if template not in TPL['old cfd'] or not tpl.has( 'date', ignore_empty=True): continue except pywikibot.InvalidTitle: continue if tpl.get('date').value.strip() == date: # Template already present. return old_cfd = Template('Old CfD') old_cfd.add('action', action) old_cfd.add('date', date) old_cfd.add('section', cfd_page.section()) old_cfd.add('result', result) page.text = str(old_cfd) + '\n' + page.text page.save(summary=summary)
def creditline_from_row(row): t = Template(parse('Credit line\n ')) t.add("DUMMY ", " VALUE\n ") # to set the formatting t.add("Author", wikify(row['realname'])) t.add("Other", Tag('i', wikify(row['title']), wiki_markup="''")) t.add("License", "CC-BY-SA-2.0") t.remove("DUMMY") return t
def print(self): template = Template(name="MatchSchedule") self.add_field(template, 'date', self.timestamp.cet_date) self.add_field(template, 'time', self.timestamp.cet_time) self.add_field(template, 'timezone', 'CET') self.add_field(template, 'dst', self.timestamp.dst) self.add_field(template, 'stream', ' ') self.add_field(template, 'team1', self.team1) self.add_field(template, 'team2', self.team2) self.add_field(template, 'team1score', self.team1score) self.add_field(template, 'team2score', self.team2score) if self.is_forfeit: template.add('ff', self.forfeit) self.add_field(template, 'winner', self.winner) self.add_field(template, 'direct_link', self.url) self.add_field(template, 'page', self.page) self.add_field(template, 'n_in_page', self.index_in_page) return str(template)
def treat_page(self) -> None: """Process one page.""" self.check_disabled() try: errors = self.validate_svg() except (AssertionError, RequestException, RuntimeError): pywikibot.exception() return if errors: n_errors = len(errors) new_tpl = Template('Invalid SVG') new_tpl.add('1', n_errors) summary = 'W3C invalid SVG: {} error{}'.format( n_errors, 's' if n_errors > 1 else '') else: new_tpl = Template('Valid SVG') summary = 'W3C valid SVG' wikicode = mwparserfromhell.parse(self.current_page.text, skip_style_tags=True) for tpl in wikicode.ifilter_templates(): try: template = pywikibot.Page( self.site, removeDisabledParts(str(tpl.name), site=self.site).strip(), ns=10, ) template.title() except pywikibot.InvalidTitle: continue if template in self.templates: wikicode.replace(tpl, new_tpl) break else: wikicode.insert(0, '\n') wikicode.insert(0, new_tpl) self.put_current(str(wikicode), summary=summary, minor=not errors)
def test_add(self): """test Template.add()""" node1 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node2 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node3 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node4 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node5 = Template(wraptext("a"), [pgens("b", "c"), pgens(" d ", "e")]) node6 = Template(wraptext("a"), [pgens("b", "c"), pgens("b", "d"), pgens("b", "e")]) node7 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node8p = pgenh("1", "d") node8 = Template(wraptext("a"), [pgens("b", "c"), node8p]) node9 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node10 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "e")]) node11 = Template(wraptext("a"), [pgens("b", "c")]) node12 = Template(wraptext("a"), [pgens("b", "c")]) node13 = Template(wraptext("a"), [ pgens("\nb ", " c"), pgens("\nd ", " e"), pgens("\nf ", " g")]) node14 = Template(wraptext("a\n"), [ pgens("b ", "c\n"), pgens("d ", " e"), pgens("f ", "g\n"), pgens("h ", " i\n")]) node15 = Template(wraptext("a"), [ pgens("b ", " c\n"), pgens("\nd ", " e"), pgens("\nf ", "g ")]) node16 = Template(wraptext("a"), [ pgens("\nb ", " c"), pgens("\nd ", " e"), pgens("\nf ", " g")]) node17 = Template(wraptext("a"), [pgenh("1", "b")]) node18 = Template(wraptext("a"), [pgenh("1", "b")]) node19 = Template(wraptext("a"), [pgenh("1", "b")]) node20 = Template(wraptext("a"), [pgenh("1", "b"), pgenh("2", "c"), pgenh("3", "d"), pgenh("4", "e")]) node21 = Template(wraptext("a"), [pgenh("1", "b"), pgenh("2", "c"), pgens("4", "d"), pgens("5", "e")]) node22 = Template(wraptext("a"), [pgenh("1", "b"), pgenh("2", "c"), pgens("4", "d"), pgens("5", "e")]) node23 = Template(wraptext("a"), [pgenh("1", "b")]) node24 = Template(wraptext("a"), [pgenh("1", "b")]) node25 = Template(wraptext("a"), [pgens("b", "c")]) node26 = Template(wraptext("a"), [pgenh("1", "b")]) node27 = Template(wraptext("a"), [pgenh("1", "b")]) node28 = Template(wraptext("a"), [pgens("1", "b")]) node29 = Template(wraptext("a"), [ pgens("\nb ", " c"), pgens("\nd ", " e"), pgens("\nf ", " g")]) node30 = Template(wraptext("a\n"), [ pgens("b ", "c\n"), pgens("d ", " e"), pgens("f ", "g\n"), pgens("h ", " i\n")]) node31 = Template(wraptext("a"), [ pgens("b ", " c\n"), pgens("\nd ", " e"), pgens("\nf ", "g ")]) node32 = Template(wraptext("a"), [ pgens("\nb ", " c "), pgens("\nd ", " e "), pgens("\nf ", " g ")]) node33 = Template(wraptext("a"), [pgens("b", "c"), pgens("d", "e"), pgens("b", "f"), pgens("b", "h"), pgens("i", "j")]) node34 = Template(wraptext("a"), [pgens("1", "b"), pgens("x", "y"), pgens("1", "c"), pgens("2", "d")]) node35 = Template(wraptext("a"), [pgens("1", "b"), pgens("x", "y"), pgenh("1", "c"), pgenh("2", "d")]) node36 = Template(wraptext("a"), [pgens("b", "c"), pgens("d", "e"), pgens("f", "g")]) node37 = Template(wraptext("a"), [pgenh("1", "")]) node38 = Template(wraptext("abc")) node1.add("e", "f", showkey=True) node2.add(2, "g", showkey=False) node3.add("e", "foo|bar", showkey=True) node4.add("e", "f", showkey=True, before="b") node5.add("f", "g", showkey=True, before=" d ") node6.add("f", "g", showkey=True, before="b") self.assertRaises(ValueError, node7.add, "e", "f", showkey=True, before="q") node8.add("e", "f", showkey=True, before=node8p) node9.add("e", "f", showkey=True, before=pgenh("1", "d")) self.assertRaises(ValueError, node10.add, "e", "f", showkey=True, before=pgenh("1", "d")) node11.add("d", "foo=bar", showkey=True) node12.add("1", "foo=bar", showkey=False) node13.add("h", "i", showkey=True) node14.add("j", "k", showkey=True) node15.add("h", "i", showkey=True) node16.add("h", "i", showkey=True, preserve_spacing=False) node17.add("2", "c") node18.add("3", "c") node19.add("c", "d") node20.add("5", "f") node21.add("3", "f") node22.add("6", "f") node23.add("c", "foo=bar") node24.add("2", "foo=bar") node25.add("b", "d") node26.add("1", "foo=bar") node27.add("1", "foo=bar", showkey=True) node28.add("1", "foo=bar", showkey=False) node29.add("d", "foo") node30.add("f", "foo") node31.add("f", "foo") node32.add("d", "foo", preserve_spacing=False) node33.add("b", "k") node34.add("1", "e") node35.add("1", "e") node36.add("d", "h", before="b") node37.add(1, "b") node38.add("1", "foo") self.assertRaises(ValueError, node38.add, "z", "bar", showkey=False) self.assertEqual("{{a|b=c|d|e=f}}", node1) self.assertEqual("{{a|b=c|d|g}}", node2) self.assertEqual("{{a|b=c|d|e=foo|bar}}", node3) self.assertIsInstance(node3.params[2].value.get(1), HTMLEntity) self.assertEqual("{{a|e=f|b=c|d}}", node4) self.assertEqual("{{a|b=c|f=g| d =e}}", node5) self.assertEqual("{{a|b=c|b=d|f=g|b=e}}", node6) self.assertEqual("{{a|b=c|d}}", node7) self.assertEqual("{{a|b=c|e=f|d}}", node8) self.assertEqual("{{a|b=c|e=f|d}}", node9) self.assertEqual("{{a|b=c|e}}", node10) self.assertEqual("{{a|b=c|d=foo=bar}}", node11) self.assertEqual("{{a|b=c|foo=bar}}", node12) self.assertIsInstance(node12.params[1].value.get(1), HTMLEntity) self.assertEqual("{{a|\nb = c|\nd = e|\nf = g|\nh = i}}", node13) self.assertEqual("{{a\n|b =c\n|d = e|f =g\n|h = i\n|j =k\n}}", node14) self.assertEqual("{{a|b = c\n|\nd = e|\nf =g |h =i}}", node15) self.assertEqual("{{a|\nb = c|\nd = e|\nf = g|h=i}}", node16) self.assertEqual("{{a|b|c}}", node17) self.assertEqual("{{a|b|3=c}}", node18) self.assertEqual("{{a|b|c=d}}", node19) self.assertEqual("{{a|b|c|d|e|f}}", node20) self.assertEqual("{{a|b|c|4=d|5=e|f}}", node21) self.assertEqual("{{a|b|c|4=d|5=e|6=f}}", node22) self.assertEqual("{{a|b|c=foo=bar}}", node23) self.assertEqual("{{a|b|foo=bar}}", node24) self.assertIsInstance(node24.params[1].value.get(1), HTMLEntity) self.assertEqual("{{a|b=d}}", node25) self.assertEqual("{{a|foo=bar}}", node26) self.assertIsInstance(node26.params[0].value.get(1), HTMLEntity) self.assertEqual("{{a|1=foo=bar}}", node27) self.assertEqual("{{a|foo=bar}}", node28) self.assertIsInstance(node28.params[0].value.get(1), HTMLEntity) self.assertEqual("{{a|\nb = c|\nd = foo|\nf = g}}", node29) self.assertEqual("{{a\n|b =c\n|d = e|f =foo\n|h = i\n}}", node30) self.assertEqual("{{a|b = c\n|\nd = e|\nf =foo }}", node31) self.assertEqual("{{a|\nb = c |\nd =foo|\nf = g }}", node32) self.assertEqual("{{a|b=k|d=e|i=j}}", node33) self.assertEqual("{{a|1=e|x=y|2=d}}", node34) self.assertEqual("{{a|x=y|e|d}}", node35) self.assertEqual("{{a|b=c|d=h|f=g}}", node36) self.assertEqual("{{a|b}}", node37) self.assertEqual("{{abc|foo}}", node38)
def test_add(self): """test Template.add()""" node1 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node2 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node3 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node4 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node5 = Template( wraptext("a"), [pgens("b", "c"), pgens(" d ", "e")]) node6 = Template(wraptext("a"), [pgens("b", "c"), pgens("b", "d"), pgens("b", "e")]) node7 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node8p = pgenh("1", "d") node8 = Template(wraptext("a"), [pgens("b", "c"), node8p]) node9 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "d")]) node10 = Template(wraptext("a"), [pgens("b", "c"), pgenh("1", "e")]) node11 = Template(wraptext("a"), [pgens("b", "c")]) node12 = Template(wraptext("a"), [pgens("b", "c")]) node13 = Template( wraptext("a"), [pgens("\nb ", " c"), pgens("\nd ", " e"), pgens("\nf ", " g")]) node14 = Template(wraptext("a\n"), [ pgens("b ", "c\n"), pgens("d ", " e"), pgens("f ", "g\n"), pgens("h ", " i\n") ]) node15 = Template( wraptext("a"), [pgens("b ", " c\n"), pgens("\nd ", " e"), pgens("\nf ", "g ")]) node16 = Template( wraptext("a"), [pgens("\nb ", " c"), pgens("\nd ", " e"), pgens("\nf ", " g")]) node17 = Template(wraptext("a"), [pgenh("1", "b")]) node18 = Template(wraptext("a"), [pgenh("1", "b")]) node19 = Template(wraptext("a"), [pgenh("1", "b")]) node20 = Template(wraptext("a"), [ pgenh("1", "b"), pgenh("2", "c"), pgenh("3", "d"), pgenh("4", "e") ]) node21 = Template(wraptext("a"), [ pgenh("1", "b"), pgenh("2", "c"), pgens("4", "d"), pgens("5", "e") ]) node22 = Template(wraptext("a"), [ pgenh("1", "b"), pgenh("2", "c"), pgens("4", "d"), pgens("5", "e") ]) node23 = Template(wraptext("a"), [pgenh("1", "b")]) node24 = Template(wraptext("a"), [pgenh("1", "b")]) node25 = Template(wraptext("a"), [pgens("b", "c")]) node26 = Template(wraptext("a"), [pgenh("1", "b")]) node27 = Template(wraptext("a"), [pgenh("1", "b")]) node28 = Template(wraptext("a"), [pgens("1", "b")]) node29 = Template( wraptext("a"), [pgens("\nb ", " c"), pgens("\nd ", " e"), pgens("\nf ", " g")]) node30 = Template(wraptext("a\n"), [ pgens("b ", "c\n"), pgens("d ", " e"), pgens("f ", "g\n"), pgens("h ", " i\n") ]) node31 = Template( wraptext("a"), [pgens("b ", " c\n"), pgens("\nd ", " e"), pgens("\nf ", "g ")]) node32 = Template( wraptext("a"), [pgens("\nb ", " c "), pgens("\nd ", " e "), pgens("\nf ", " g ")]) node33 = Template(wraptext("a"), [ pgens("b", "c"), pgens("d", "e"), pgens("b", "f"), pgens("b", "h"), pgens("i", "j") ]) node34 = Template(wraptext("a"), [ pgens("1", "b"), pgens("x", "y"), pgens("1", "c"), pgens("2", "d") ]) node35 = Template(wraptext("a"), [ pgens("1", "b"), pgens("x", "y"), pgenh("1", "c"), pgenh("2", "d") ]) node36 = Template(wraptext("a"), [pgens("b", "c"), pgens("d", "e"), pgens("f", "g")]) node37 = Template(wraptext("a"), [pgenh("1", "")]) node38 = Template(wraptext("abc")) node39 = Template(wraptext("a"), [pgenh("1", " b ")]) node40 = Template(wraptext("a"), [pgenh("1", " b"), pgenh("2", " c")]) node41 = Template(wraptext("a"), [pgens("1", " b"), pgens("2", " c")]) node1.add("e", "f", showkey=True) node2.add(2, "g", showkey=False) node3.add("e", "foo|bar", showkey=True) node4.add("e", "f", showkey=True, before="b") node5.add("f", "g", showkey=True, before=" d ") node6.add("f", "g", showkey=True, before="b") self.assertRaises(ValueError, node7.add, "e", "f", showkey=True, before="q") node8.add("e", "f", showkey=True, before=node8p) node9.add("e", "f", showkey=True, before=pgenh("1", "d")) self.assertRaises(ValueError, node10.add, "e", "f", showkey=True, before=pgenh("1", "d")) node11.add("d", "foo=bar", showkey=True) node12.add("1", "foo=bar", showkey=False) node13.add("h", "i", showkey=True) node14.add("j", "k", showkey=True) node15.add("h", "i", showkey=True) node16.add("h", "i", showkey=True, preserve_spacing=False) node17.add("2", "c") node18.add("3", "c") node19.add("c", "d") node20.add("5", "f") node21.add("3", "f") node22.add("6", "f") node23.add("c", "foo=bar") node24.add("2", "foo=bar") node25.add("b", "d") node26.add("1", "foo=bar") node27.add("1", "foo=bar", showkey=True) node28.add("1", "foo=bar", showkey=False) node29.add("d", "foo") node30.add("f", "foo") node31.add("f", "foo") node32.add("d", "foo", preserve_spacing=False) node33.add("b", "k") node34.add("1", "e") node35.add("1", "e") node36.add("d", "h", before="b") node37.add(1, "b") node38.add("1", "foo") self.assertRaises(ValueError, node38.add, "z", "bar", showkey=False) node39.add("1", "c") node40.add("3", "d") node41.add("3", "d") self.assertEqual("{{a|b=c|d|e=f}}", node1) self.assertEqual("{{a|b=c|d|g}}", node2) self.assertEqual("{{a|b=c|d|e=foo|bar}}", node3) self.assertIsInstance(node3.params[2].value.get(1), HTMLEntity) self.assertEqual("{{a|e=f|b=c|d}}", node4) self.assertEqual("{{a|b=c|f=g| d =e}}", node5) self.assertEqual("{{a|b=c|b=d|f=g|b=e}}", node6) self.assertEqual("{{a|b=c|d}}", node7) self.assertEqual("{{a|b=c|e=f|d}}", node8) self.assertEqual("{{a|b=c|e=f|d}}", node9) self.assertEqual("{{a|b=c|e}}", node10) self.assertEqual("{{a|b=c|d=foo=bar}}", node11) self.assertEqual("{{a|b=c|foo=bar}}", node12) self.assertIsInstance(node12.params[1].value.get(1), HTMLEntity) self.assertEqual("{{a|\nb = c|\nd = e|\nf = g|\nh = i}}", node13) self.assertEqual("{{a\n|b =c\n|d = e|f =g\n|h = i\n|j =k\n}}", node14) self.assertEqual("{{a|b = c\n|\nd = e|\nf =g |h =i}}", node15) self.assertEqual("{{a|\nb = c|\nd = e|\nf = g|h=i}}", node16) self.assertEqual("{{a|b|c}}", node17) self.assertEqual("{{a|b|3=c}}", node18) self.assertEqual("{{a|b|c=d}}", node19) self.assertEqual("{{a|b|c|d|e|f}}", node20) self.assertEqual("{{a|b|c|4=d|5=e|f}}", node21) self.assertEqual("{{a|b|c|4=d|5=e|6=f}}", node22) self.assertEqual("{{a|b|c=foo=bar}}", node23) self.assertEqual("{{a|b|foo=bar}}", node24) self.assertIsInstance(node24.params[1].value.get(1), HTMLEntity) self.assertEqual("{{a|b=d}}", node25) self.assertEqual("{{a|foo=bar}}", node26) self.assertIsInstance(node26.params[0].value.get(1), HTMLEntity) self.assertEqual("{{a|1=foo=bar}}", node27) self.assertEqual("{{a|foo=bar}}", node28) self.assertIsInstance(node28.params[0].value.get(1), HTMLEntity) self.assertEqual("{{a|\nb = c|\nd = foo|\nf = g}}", node29) self.assertEqual("{{a\n|b =c\n|d = e|f =foo\n|h = i\n}}", node30) self.assertEqual("{{a|b = c\n|\nd = e|\nf =foo }}", node31) self.assertEqual("{{a|\nb = c |\nd =foo|\nf = g }}", node32) self.assertEqual("{{a|b=k|d=e|i=j}}", node33) self.assertEqual("{{a|1=e|x=y|2=d}}", node34) self.assertEqual("{{a|x=y|e|d}}", node35) self.assertEqual("{{a|b=c|d=h|f=g}}", node36) self.assertEqual("{{a|b}}", node37) self.assertEqual("{{abc|foo}}", node38) self.assertEqual("{{a|c}}", node39) self.assertEqual("{{a| b| c|d}}", node40) self.assertEqual("{{a|1= b|2= c|3= d}}", node41)
def handle(site, index): src_ns = next(site.results(prop='info', titles=index))['ns'] for page in site.results(generator='allpages', gapprefix=index.split(':')[1] + '/Beispiel ', gaplimit='max', prop='revisions', rvprop='content', gapnamespace=src_ns): orig = page['revisions'][0]['*'] if mwbot.parse_redirect(orig): continue code = mwbot.parse(orig) templates = code.filter_templates( matches=lambda x: x.name.matches('Beispiel')) if len(templates) > 0: template = templates[0] else: template = Template(Wikicode([Text('Beispiel')])) code.insert(0, template) code.insert(1, '\n') # legacy format handling template.name = 'Beispiel' if template.has('1') and not template.get('1').value.startswith('\n'): template.get('1').value.insert(0, '\n') if template.has('status'): if str(template.get('status').value).strip() not in ('extern', 'Datei'): print('unknown status: {}'.format(k)) if template.has('1'): if str(template.get('1').value).strip() == 'teils': template.add('teils', '') template.remove('1') elif str(template.get('1').value).strip() == 'falsch': template.add('falsch', '') template.remove('1') if not template.has('1'): angabe_div = code.filter_tags( matches=lambda x: x.tag.matches('blockquote') or len([ x for x in x.attributes if '{{Angabe}}' in x or '#EFEFEF' in x ])) if angabe_div: template.add('1', '\n' + str(angabe_div[0].contents).strip() + '\n', showkey=True) code.remove(angabe_div[0]) else: angabe_sec = code.get_sections(matches='Angabe|Aufgabe') if angabe_sec: code.remove(angabe_sec[0].nodes[0]) template.add('1', '\n' + str(angabe_sec[0]).strip() + '\n', showkey=True) code.replace(angabe_sec[0], '\n') mwbot.save(site, page['title'], orig, str(code), 'beispiel_fixer.py', strip_consec_nl=True)