示例#1
0
def main():
    if len(args) != 2:
        return
    pagemain = wp.Page(wp.toutf(args[0]))
    newlink = wp.toutf(args[1])
    pywikibot.output("old: " + pagemain.title())
    pywikibot.output("new: " + newlink)
    for page in pagemain.backlinks(content=True):
        pywikibot.output("processing " + page.title())
        txt = page.get()
        page.put(lre.sub(r"\[\[" + lre.escape(pagemain.title()),
                         "[[" + newlink.replace("_", " "), txt), u"ย้ายลิงก์ไปหน้าใหม่")
示例#2
0
def main():
    if "-html" not in args:
        return

    page = wp.Page(wp.toutf(raw_input()))
    dic = {}

    while True:
        if not page.exists():
            dic["error"] = u"ไม่มีหน้าดังกล่าว"
            break
        elif page.isRedirectPage():
            page = page.getRedirectTarget()
        else:
            try:
                oldtext = page.get()
            except:
                dic["error"] = u"เกิดข้อผิดพลาดไม่ทราบสาเหตุ"
            break

    if "error" not in dic:
        actuallen = lambda text: sum([int(32 < ord(i) < anchorBegin)
                                 for i in text])
        resgen = lambda x: "passed" if x else "failed"
        oldtext = lre.sub(r"[\t\r\f\v]", " ", oldtext)

        def placemarker(s):
            placemarker.i += 1
            return unichr((placemarker.i % (anchorEnd - anchorBegin + 1)) +
                          anchorBegin)

        placemarker.i = 0
        oldtext = lre.sub("(?m)^|$", placemarker, oldtext)
        oldtext = lre.sub(r"(?m)(?<=\|)(?=[^\[\]]*\]\])", placemarker, oldtext)
        oldtext = lre.sub(r"(?m)(?<=\])(?!\])", placemarker, oldtext)
        oldtext = lre.sub(r"(?m)(?<!\{)(?=\{)", placemarker, oldtext)
        oldtext = lre.sub(r"(?m)(?<=\})(?!\})", placemarker, oldtext)
        text = oldtext
        text, numinline0 = lre.subn(r"(?s)<ref[^>]*?/ *>", "", text)
        text, numinline = lre.subn(r"(?s)<ref.*?</ref>", "", text)
        numinline += numinline0
        dic["inline"] = {}
        dic["inline"]["value"] = (u"มีอ้างอิงในบรรทัดทั้งหมดจำนวน %d แห่ง" %
                                  numinline)
        dic["inline"]["result"] = "normal"
        dic["inline"]["text"] = u"อ้างอิง"
        text = rem(text)
        lentext = actuallen(text)
        dic["newtext"] = showdiff(oldtext, text)
        dic["len"] = {}
        dic["len"]["text"] = u"ความยาว"
        dic["len"]["result"] = resgen(lentext >= 2000)
        dic["len"]["value"] = u"%d อักขระ..." % lentext

        now = site.getcurrenttime()
        revid = None
        revtimestamp = None

        for rev in page.getVersionHistory(total=5000):
            ts = pywikibot.Timestamp.fromISOformat(rev[1])
            revid = rev[0]
            if (now - ts).days <= 14:
                revtimestamp = ts
            else:
                break

        dic["oldlen"] = {}
        dic["oldlen"]["text"] = u"รุ่นเก่า"

        if revtimestamp is None:
            dic["oldlen"]["result"] = resgen(False)
            dic["oldlen"]["value"] = u"ไม่พบรุ่นเก่าภายในเวลา 14 วัน"
        else:
            lenold = actuallen(rem(page.getOldVersion(revid)))
            dic["oldlen"]["result"] = resgen(
                                    (float(lentext)/float(lenold)) >= 3.0)
            dic["oldlen"]["value"] = (u"รุ่นเก่าก่อนการแก้ไขเมื่อ %s "
                                      u"(%d วันที่แล้ว) "
                                      u"มีความยาว %d อักขระ "
                                      u"จะได้ว่าขณะนี้มีเนื้อหาเป็น %.3f "
                                      u"เท่าเมื่อเทียบกับขณะนั้น..." %
                                (revtimestamp.strftime("%Y-%m-%d %H:%M:%S"),
                                (now - revtimestamp).days, lenold,
                                float(lentext)/float(lenold)))

        creator = page.getVersionHistory(reverseOrder=True, total=1)[0]
        tscreate = pywikibot.Timestamp.fromISOformat(creator[1])
        dic["create"] = {}
        dic["create"]["text"] = u"สร้างบทความ"
        dic["create"]["result"] = resgen((now - tscreate).days <= 14)
        dic["create"]["value"] = (u"บทความนี้สร้างโดย %s "
                                  u"เมื่อ %s (%d วันที่แล้ว)" % (creator[2],
                                  tscreate.strftime("%Y-%m-%d %H:%M:%S"),
                                  (now - tscreate).days))

        if ((dic["create"]["result"] == resgen(True)) or
                                        (dic["oldlen"]["result"] ==
                                        resgen(True))):
            if dic["create"]["result"] == resgen(False):
                dic["create"]["result"] = "normal"

            if dic["oldlen"]["result"] == resgen(False):
                dic["oldlen"]["result"] = "normal"

    print json.dumps(dic)
示例#3
0
def service(page, confpage, operation, verify, summary, debug=False):
    """
    Get:
        Service page
        Key to read from config page,
        Function to verify user
        Config page
        Site
        Summary function.

    Function:
        Clear service's page

    Return:
        Header of table
        List of rows
        Suspicious entry(/row)
    """
    lastrev = int(linfo.getdat(confpage, operation))
    oldcontent = page.get()
    header, table = lwikitable.wiki2table(oldcontent)
    disable = [False] * len(table)
    hist = page.fullVersionHistory(total=100)
    # There is no need to get all revisions, just 100 is fine.

    for i, version in enumerate(hist):
        if version[0] == lastrev:
            hist = hist[:i+1]
            break

    hist.reverse()
    pywikibot.output("Processing %d revision(s)" % len(hist))
    for i in xrange(len(hist) - 1):
        oldv = hist[i][3]
        newv = hist[i + 1][3]
        usernew = hist[i + 1][2]
        try:
            dummy, cold = lwikitable.wiki2table(oldv)
            dummy, cnew = lwikitable.wiki2table(newv)
        except:
            wp.error()
            continue
        oldvc = set([wp.toutf(x) for x in cold])
        newvc = set([wp.toutf(x) for x in cnew])
        difference = [eval(x) for x in (newvc - oldvc)]
        if not verify(usernew):
            for entry in difference:
                for cnt, fentry in enumerate(table):
                    if entry == fentry:
                        disable[cnt] = True
                        break

    newcontent = patclear.sub(r"\1\2", oldcontent)

    if oldcontent != newcontent:
        if not debug:
            page = wp.Page(page.title())
            page.put(newcontent, summary())
            pywikibot.output(page.getVersionHistory(total=1)[0][0])
            linfo.putdat(confpage, operation, page.getVersionHistory()[0][0])

    return header, table, disable
示例#4
0
文件: touch.py 项目: nullzero/wprobot
def main():
    if args:
        for page in wp.Category(wp.toutf(args[0])).articles(content=True):
            page.save("null edit", async=True)