Бот Mediawiki узнает об изменениях за последние часы - PullRequest
0 голосов
/ 31 января 2019

Запрашивается:

Я хочу использовать бота (mediawiki api или прямой доступ к базе данных), который узнает об изменениях всех страниц за последние часы.Мне нужен diff и я хочу обработать текст позже.Достаточно угадать правильное направление (разница последних правок).Я знаю, как перебирать страницы.

Справочная информация:

Я хочу обработать diff, чтобы найти новые ссылки для загрузки как часть вызова шаблона.Для этого шага мне не нужна помощь.

1 Ответ

0 голосов
/ 03 февраля 2019

Вы можете использовать pywikibot , Это должно быть (возможно) хорошим началом:

from pywikibot import Site
from datetime import timedelta

my_site = Site(language, family) # Or set default site with pywikibot config file

# From this object you may get the changes by timestamp, pywikibot.Timestamp are datetime objects as well.
current_time = my_site.getcurrenttime()
my_site.recentchanges(start = current_time, end=current_time - timedelta(hours=6))

Вы можете просматривать страницы, которые изменились за последние X (6) часов, и длякаждый из них:

from pywikibot import Page

current_page = Page(my_site, page_title)  # Page title written in the recentchanges 
return object
revisions = current_page.revisions(total=some_number, content=True)

После этого вы можете использовать некоторые внутренние API для получения различий между двумя ревизиями:

from pywikibot.diff import PatchManager

PatchManager(first_rev_text, second_rev_text).print_hunks()  # print_hunks is for interactive changes, but you can work with any internals api here (that might not be simple).

Это не полностью код, как вам нужно, но вы можете работать здесьи добавьте еще немного логики, чтобы решить ваше дело, удачи:)

...