我正在做一个游戏化网络应用程序来帮助维基媒体的社区健康。
我想知道哪些编辑在上周或最近100次编辑中编辑了与"Jake"相同的页面最多。
我知道我的查询,但我不知道我需要什么表,因为维基媒体数据库的布局一团糟。
所以,我想获得类似的东西
用户名 | 发生次数 | 页面|
---|---|---|
Mikey | 13 | 奥巴马 |
您可以使用时间戳参数筛选要检索的数据。这大大减少了所需的时间。有关它们的用法,请参阅文档。以下是使用Pywikibot使用时间戳获取数据的代码片段:
from collections import Counter
from datetime import timedelta
import pywikibot
from pywikibot.tools import filter_unique
site = pywikibot.Site()
user = pywikibot.User(site, username) # username must be a string
# Setup the Generator for the last 7 days.
# Do not care about the timestamp format if using pywikibot.Timestamp
stamp = pywikibot.Timestamp.now() - timedelta(days=7)
contribs = user.contributions(end=stamp)
contributors= []
# filter_unique is used to remove duplicates.
# The key uses the page title
for page, *_ in filter_unique(contribs, key=lambda x: str(x[0])):
# note: editors is a Counter
editors = page.contributors(endtime=stamp)
print('{:<35}: {}'.format(page.title(), editors))
contributors.extend(editors.elements())
total = Counter(contributors)
这将打印页面列表,并为每个页面显示给定时间范围内的编辑器及其贡献计数器。最后,total
应该具有与上面的get_contributor_ocurrences
函数相同的内容。
这需要一些额外的工作才能得到你上面提到的表格。