예제 #1
0
 async def delete_page(self, title, nick, reason):
     reason_list = {
         1: "создание страниц без аккаунта запрещено",
         2: "создание новой страницы с подозрительным никнеймом"
     }
     page = self.wiki("parse", page=title,
                      prop="wikitext")["parse"]["wikitext"].replace(
                          "http", "")
     try:
         self.wiki("delete",
                   title=title,
                   reason=reason_list[reason],
                   token=self.wiki.token(),
                   POST=True)
     except pywikiapi.utils.ApiError as ex:
         if ex.data["code"] == "badtoken":
             await asyncio.sleep(2)
             self.wiki = init_wiki(False)
             return self.delete_page(title, nick, reason)
     msg = "**удалено:** `" + title + "` **автор**: <http://dfwk.ru/Служебная:Заблокировать/" + nick + \
           "> **причина:** `" + reason_list[reason] + "` **содержание:**" + page[:100] + "..."
     await self.send_message(msg)
예제 #2
0
 def __init__(self):
     super().__init__()
     self.timestamp = "20010115145600"
     self.wiki = init_wiki(False)
     self.channel_text = self.get_channel(int(os.environ["CHANNEL_ID"]))
     self.main_loop = self.loop.create_task(self.main_loop())
예제 #3
0
from util import load_db, find_redirect_and_not_redirect_pages, generate_name_id, init_wiki

db = load_db()
redirect_dict, _, _ = find_redirect_and_not_redirect_pages(db)
ni_redirect, ni_db = generate_name_id(redirect_dict), generate_name_id(
    db, False)
fixed_redirects = {}
wiki = init_wiki()


# рекурсивная функция которая находит страницы на которые ссылаются редиректы
# убрал поиск группами из за перенаправлений с #
def fix_redirect(obj, orig_name=None, redirection_counter=0, suffix=None):
    if orig_name is None:
        orig_name = obj["title"]

        redirect = obj["wikitext"].split("#")
        if len(redirect) > 2:
            redirect = obj["wikitext"].split("#")
            suffix = "#" + redirect[2].replace("]]", "")
        else:
            suffix = ""

    redirection_counter += 1

    if obj["title"].lower() == obj["redirect"][0].lower(
    ):  # игнорируем редиректы с разницой только в регистре
        return None, None, None  # что бы не уйти в рекурсию

    if len(obj["redirect"]) > 0 and obj["redirect"][0].lower(
    ) in ni_redirect.keys():