Mediawiki 机器人找出最近几个小时的变化
Mediawiki bot to find out the changes of the last hours
要求:
我想使用一个机器人(mediawiki api 或直接数据库访问),找出最近几个小时所有页面的变化。我需要一个差异并想在之后处理文本。猜测正确的方向(上次编辑的差异)就足够了。我知道如何迭代页面。
背景:
我想处理差异以找出新的下载链接作为模板调用的一部分。对于这一步,我不需要帮助。
你可以使用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).
这不是您需要的完整代码,但您可以从这里开始工作并添加更多逻辑来解决您的问题,
祝你好运:)
要求:
我想使用一个机器人(mediawiki api 或直接数据库访问),找出最近几个小时所有页面的变化。我需要一个差异并想在之后处理文本。猜测正确的方向(上次编辑的差异)就足够了。我知道如何迭代页面。
背景:
我想处理差异以找出新的下载链接作为模板调用的一部分。对于这一步,我不需要帮助。
你可以使用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).
这不是您需要的完整代码,但您可以从这里开始工作并添加更多逻辑来解决您的问题, 祝你好运:)