Advertisement
Guest User

Untitled

a guest
May 5th, 2023
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.44 KB | None | 0 0
  1. import requests
  2. import login
  3. import time
  4. from lists import pairs
  5.  
  6.  
  7. API_URL = 'https://ru.wikinews.org/w/api.php'
  8. USER_AGENT = {"User-Agent": "IluvatarBot; iluvatar@tools.wmflabs.org; python3.9; requests"}
  9.  
  10.  
  11. def delete_page(title, summary, token, cookies):
  12.     params = {'action': "delete", 'title': title, 'token': token, 'format': "json", 'reason': summary, 'utf8': 1}
  13.     r = requests.post(API_URL, data=params, cookies=cookies, headers=USER_AGENT)
  14.     print(r.json())
  15.  
  16.  
  17. def move_page(from_title, to_title, summary, token, cookies, supress=0, move_subpages=1, move_talk=1):
  18.     params = {"action": "move", "noredirect": supress, "movesubpages": move_subpages, "token": token,
  19.               "format": "json", "utf8": 1, "from": from_title, "to": to_title, "reason": summary, "movetalk": move_talk}
  20.     r = requests.post(API_URL, data=params, cookies=cookies, headers=USER_AGENT)
  21.     print(r.json())
  22.  
  23.  
  24. def edit_page(title, text, summary, token, cookies):
  25.     params = {"action": "edit", "title": title, 'recreate': 0, 'nocreate': 0,
  26.         "token": token, 'bot': 1, 'summary': summary, "format": "json", 'utf8': 1, "text": text}
  27.  
  28.     r = requests.post(url=API_URL, data=params, cookies=cookies, headers=USER_AGENT)
  29.     print(r.json())
  30.  
  31.  
  32. def check_backlinks(title, namespaces):
  33.     params = {"action": "query",  "format": "json", "list": "backlinks",
  34.               "bltitle": title, 'blnamespace': namespaces, 'utf8': 1, 'bllimit': 500}
  35.     r = requests.post(url=API_URL, data=params)
  36.     resp = r.json()["query"]["backlinks"]
  37.     return len(resp), [i for i in resp if i['ns'] == 0 if 'redirect' in i]
  38.  
  39.  
  40. def utf8len(s):
  41.     return len(s.encode('utf-8'))
  42.  
  43.  
  44. counter = 0
  45. for page in pairs.storage3:
  46.     if "&" not in page[0] or ";" not in page[0] or repr(page[1])[1] == '\\':
  47.         continue
  48.     print('\n'*19)
  49.     if input(f"""\033[36m{'Не влезет что-то!' if utf8len('Статистика страниц/Комментарии:' + repr(page[1])) > 255 else ''}\033[0m
  50.    \033[31m{repr(page[0])}\033[0m
  51.    \033[32m{repr(page[1])}\033[0m
  52.    
  53.    Будет удалено:
  54.    \t\t\033[31m{page[1]}\033[0m
  55.    \t\t\033[31mВикиновости:Статистика страниц/{page[1]}\033[0m
  56.    Будет переименовано:
  57.    \t\t\033[31m{page[0]}\033[0m
  58.    \t\t\033[31mКомментарии:{repr(page[0])}\033[0m
  59.    \t\t\033[31mВикиновости:Статистика страниц/{repr(page[0])}\033[0m
  60.    \t\t\033[31mВикиновости:Статисватика страниц/Комментарии:{repr(page[0])}\033[0m
  61.    Будет отредактировано:
  62.    \t\t\033[31mВикиновости:Статистика страниц/{repr(page[0])}\033[0m
  63.    \t\t\033[31mВикиновости:Статистика страниц/Комментарии:{repr(page[0])}\033[0m
  64.    Начинаем? Enter:\n""").lower() == "":
  65.         summ = "Ошибка в названии ([[Викиновости:Форум/Общий#Битые заголовки|more info]]) ([[m:GS|global sysop]] action)"
  66.         summ2 = 'Для возможности переименования ([[Викиновости:Форум/Общий#Битые заголовки|more info]]) ([[m:GS|global sysop]] action)'
  67.         token, cookies = login.login(is_bot=False, server="ru.wikinews")
  68.         delete_page(page[1], summ2, token, cookies)
  69.         time.sleep(2)
  70.         delete_page(f'Викиновости:Статистика страниц/{page[1]}', summ2, token, cookies)
  71.         time.sleep(2)
  72.         token, cookies = login.login(is_bot=True, server="ru.wikinews")
  73.         move_page(page[0], page[1], summ, token, cookies, supress=1)
  74.         time.sleep(2)
  75.         move_page(f'Комментарии:{page[0]}', f'Комментарии:{page[1]}', summ, token, cookies, supress=1)
  76.         time.sleep(2)
  77.         move_page(f'Викиновости:Статистика страниц/{page[0]}', f'Викиновости:Статистика страниц/{page[1]}', summ,
  78.                   token, cookies, supress=1)
  79.         time.sleep(2)
  80.         edit_page(f'Викиновости:Статистика страниц/{page[1]}', '{{Статистика страницы|' + page[1] + '}}',
  81.                   'Переименовано', token, cookies)
  82.         time.sleep(2)
  83.         move_page(f'Викиновости:Статистика страниц/Комментарии:{page[0]}',
  84.                   f'Викиновости:Статистика страниц/Комментарии:{page[1]}', summ, token, cookies, supress=1)
  85.         time.sleep(2)
  86.         edit_page(f'Викиновости:Статистика страниц/Комментарии:{page[1]}', '{{Статистика страницы|Комментарии:' + page[1] + '}}',
  87.                   'Переименовано', token, cookies)
  88.  
  89.         check = True
  90.         backlinks, redirects = check_backlinks(page[0], '0|4|14|102')
  91.         if backlinks > 0:
  92.             if len(redirects) == 1:
  93.                 print('Исправляем редирект')
  94.                 edit_page(f'{redirects[0]["title"]}', f'#REDIRECT [[{page[1]}]]', 'Переименовано', token, cookies)
  95.                 backlinks, redirects = check_backlinks(page[0], '0|4|14|102')
  96.                 if backlinks > 0:
  97.                     check = False
  98.             else: check = False
  99.         backlinks, redirects = check_backlinks(f'Викиновости:Статистика страниц/{page[0]}', '0|4|14|102')
  100.         if backlinks > 0: check = False
  101.         backlinks, redirects = check_backlinks(f'Комментарии:{page[0]}', '0|4|14|102')
  102.         if backlinks > 0: check = False
  103.         backlinks, redirects = check_backlinks(f'Викиновости:Статистика страниц/Комментарии:{page[0]}', '0|4|14|102')
  104.         if backlinks > 0: check = False
  105.         if check is False:
  106.             input(f"""Проверить обратные ссылки после переименований:
  107.            \t\t\033[33m{page[0]}\033[0m
  108.            \t\t\033[33mКомментарии:{page[0]}\033[0m
  109.            \t\t\033[33mВикиновости:Статистика страниц/{page[0]}\033[0m
  110.            \t\t\033[33mВикиновости:Статистика страниц/Комментарии:{page[0]}\033[0m
  111.            Выполните проверку редиректов и нажмите Enter.""")
  112.     counter += 1
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement