Wiki - KEONHACAI COPA

Thành viên:Plantaest/Nháp 27

protect.py

from pywikibot import Site, User, Page
from datetime import timedelta

# Init variables
site = Site()
tags = ['mw-undo', 'mw-rollback', 'mw-manual-revert']

# Trả về danh sách các trang cần khóa: { title, revertEditNum, protection }
# Là các trang có ít nhất 2 sửa đổi lùi trong 10 ngày gần nhất
# Không tính các sửa đổi lùi lại chính mình
# Không tính sửa đổi mà ngay trước là 1 sửa đổi lùi khác?
def getPagesNeedToProtect():
    end_time = site.server_time() - timedelta(hours = 24, minutes = 0)
    feed = site.recentchanges(end = end_time, bot = False, namespaces = [0, 1])
    
    # 1. Lấy danh sách các tên trang của sửa đổi lùi
    titles = []
    for edit in feed:
        if any(x in tags for x in edit['tags']):
            titles.append(edit['title'])
    uniqueTitles = set(titles)
    
    # 2. Duyệt qua danh sách tên trang
    result = []
    for title in uniqueTitles:
        page = Page(site, title)
        revertEditNum = 0
        for rev in page.revisions(endtime = site.server_time() - timedelta(days = 10)):
            if any(x in tags for x in rev['tags']):
                # Không xét các sửa đổi lùi lại sửa đổi của mình ngay trước đó
                parentRev = page._revisions.get(rev['parentid'])
                if parentRev and rev['user'] != parentRev.user:
                    revertEditNum += 1
        if revertEditNum >= 2:
            result.append({ 'title': title, 'revertEditNum': revertEditNum, 'protection': page.protection() })
            
        print('.', end = '', flush = True)
            
    result.sort(key = lambda p: p['revertEditNum'], reverse = True)
    return result

def report():
    reportPage = Page(site, 'Thành viên:Plantaest/Nháp 25')
    pages = getPagesNeedToProtect()
    text = ''
    
    for page in pages:
        if 'edit' in page['protection']:
            text += '# {{Pagelinks|%s}} / Revert edits: %s / {{Tình trạng khóa|%s}}\n' % (page['title'], page['revertEditNum'], page['title'])
        else:
            text += '# \'\'\'{{Pagelinks|%s}}\'\'\' / Revert edits: %s\n' % (page['title'], page['revertEditNum'])
    
    reportPage.text = text
    reportPage.save(summary = 'Trang cần khóa.', minor = True)
    
report()
Wiki - Keonhacai copa chuyên cung cấp kiến thức thể thao, keonhacai tỷ lệ kèo, bóng đá, khoa học, kiến thức hằng ngày được chúng tôi cập nhật mỗi ngày mà bạn có thể tìm kiếm tại đây có nguồn bài viết: https://vi.wikipedia.org/wiki/Th%C3%A0nh_vi%C3%AAn:Plantaest/Nh%C3%A1p_27