Example #1
0
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
Example #2
0
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
Example #3
0
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))
Example #4
0
 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))