def do_process_text(pagetitle, pagetext, index, func=None, verbose=False): def pagemsg(text): msg("Page %s %s: %s" % (index, pagetitle, text)) while True: try: if func: if verbose: pagemsg("Begin processing") new, comment = func(pagetitle, index, parse_text(pagetext)) if new: new = unicode(new) # Canonicalize shaddas when comparing pages so we don't do saves # that only involve different shadda orders. if reorder_shadda(pagetext) != reorder_shadda(new): if verbose: pagemsg('Replacing [[%s]] with [[%s]]' % (pagetext, new)) #if save: # pagemsg("Saving with comment = %s" % comment) # page.save(comment = comment) #else: pagemsg("Would save with comment = %s" % comment) else: pagemsg('Skipped, no changes') else: pagemsg('Skipped: %s' % comment) except: errmsg(u'Page %s %s: Error' % (index, pagetitle)) raise break
def do_edit(page, index, func=None, null=False, save=False, verbose=False): title = unicode(page.title()) def pagemsg(text): msg("Page %s %s: %s" % (index, title, text)) while True: try: if func: if verbose: pagemsg("Begin processing") new, comment = func(page, index, parse(page)) if new: new = unicode(new) # Canonicalize shaddas when comparing pages so we don't do saves # that only involve different shadda orders. if reorder_shadda(page.text) != reorder_shadda(new): if verbose: pagemsg('Replacing <%s> with <%s>' % (page.text, new)) page.text = new if save: pagemsg("Saving with comment = %s" % comment) page.save(comment = comment) else: pagemsg("Would save with comment = %s" % comment) elif null: pagemsg('Purged page cache') page.purge(forcelinkupdate = True) else: pagemsg('Skipped, no changes') elif null: pagemsg('Purged page cache') page.purge(forcelinkupdate = True) else: pagemsg('Skipped: %s' % comment) else: pagemsg('Purged page cache') page.purge(forcelinkupdate = True) except (pywikibot.LockedPage, pywikibot.NoUsername): errmsg(u'Page %s %s: Skipped, page is protected' % (index, title)) except urllib2.HTTPError as e: if e.code != 503: raise except: errmsg(u'Page %s %s: Error' % (index, title)) raise break
def process_page(page, index, refrom, reto, pagetitle_sub, comment, lang_only, warn_on_no_replacement, verbose): pagetitle = unicode(page.title()) def pagemsg(txt): blib.msg("Page %s %s: %s" % (index, pagetitle, txt)) if verbose: blib.msg("Processing %s" % pagetitle) #blib.msg("From: [[%s]], To: [[%s]]" % (refrom, reto)) text = unicode(page.text) origtext = text text = reorder_shadda(text) zipped_fromto = zip(refrom, reto) def replace_text(text): for fromval, toval in zipped_fromto: if pagetitle_sub: fromval = fromval.replace(pagetitle_sub, re.escape(pagetitle)) toval = toval.replace(pagetitle_sub, pagetitle) text = re.sub(fromval, toval, text, 0, re.M) return text if not lang_only: text = replace_text(text) else: sec_to_replace = None foundlang = False sections = re.split("(^==[^=]*==\n)", text, 0, re.M) for j in xrange(2, len(sections), 2): if sections[j - 1] == "==%s==\n" % lang_only: if foundlang: pagemsg( "WARNING: Found multiple %s sections, skipping page" % lang_only) if warn_on_no_replacement: pagemsg("WARNING: No replacements made") return foundlang = True sec_to_replace = j break if sec_to_replace is None: if warn_on_no_replacement: pagemsg("WARNING: No replacements made") return sections[sec_to_replace] = replace_text(sections[sec_to_replace]) text = "".join(sections) if warn_on_no_replacement and text == origtext: pagemsg("WARNING: No replacements made") return text, comment or "replace %s" % (", ".join( "%s -> %s" % (f, t) for f, t in zipped_fromto))
def rewrite_one_page(page, index, text): #blib.msg("From: [[%s]], To: [[%s]]" % (refrom, reto)) text = unicode(text) text = reorder_shadda(text) zipped_fromto = zip(refrom, reto) for fromval, toval in zipped_fromto: if pagetitle_sub: pagetitle = unicode(page.title()) fromval = fromval.replace(pagetitle_sub, re.escape(pagetitle)) toval = toval.replace(pagetitle_sub, pagetitle) text = re.sub(fromval, toval, text) return text, comment or "replace %s" % (", ".join("%s -> %s" % (f, t) for f, t in zipped_fromto))