在MediaWiki页面上逐行显示负责撰写的作者


11

有没有一种方法可以显示Wikipedia页面或MediaWiki站点的每一行的“谁对此行做出了贡献”?

它会按页面显示,并且类似于颠覆指责工具。


您是否要在页面的修订历史中查找特定单词或短语的首次出现,还是有关其他问题?必须有某种方法可以下载特定页面的完整修订历史记录,但是我还没有找到它。
安德森·格林

是的,那是正确的。
rogerdpack 2012年

1
使用WikiBlame做到这一点非常容易,如下所述:webapps.stackexchange.com/a/35914/20087
Anderson Green

哇,非常接近。看起来像是在wiki页面上找到“给定单词”的提交者,也许可以对其进行修改以显示整个页面:)
rogerdpack 2012年

它已经显示了修订版本,其中添加了文本,因此您只需单击该链接即可查看添加文本时整个页面的外观。
安德森·格林

Answers:


3

我经常也需要类似的东西,但是似乎没有现成的解决方案。

我所做的是编写了一个脚本,该脚本可以帮助我使用MediaWiki API来获取修订并将其导入到Bazaar版本控制系统中。bzr qblame article.wiki,然后可以很好地了解谁更改了内容。该脚本尚未真正准备好发布,但是您可以在下方或Pastebin上找到它。该脚本会添加到商品回购中,然后可以将其转换为Bazaar。

# I hereby place this script into the Public Domain!
import os, sys
import time

import mwclient

import mercurial.ui
from mercurial import localrepo
from mercurial import commands

article = 'Love'
#start_time = None
start_time = '2011-01-01T00:00:00Z'

# set up mercurial repo
ui = mercurial.ui.ui()
repo_dir = article
repo = localrepo.localrepository(ui, path=repo_dir, create = not os.path.isdir(repo_dir))
#if not os.path.isdir(article):
#   os.mkdir(article)
#os.chdir(article)
print "rep in", repo.root
content_path = os.path.join(repo.root, article + '.wiki')

site = mwclient.Site('en.wikipedia.org')
page = site.Pages[article]

for rev in page.revisions(start=start_time, limit=50,dir='newer', prop='ids|timestamp|flags|comment|user|content'):
    content = rev['*']
    timestamp = time.asctime(rev['timestamp'])
    comment = rev['comment'].encode('utf8')
    if len(comment) == 0: comment = "blank"
    print "writing revision from", timestamp

    f = open(content_path, 'wb')
    f.write(content.encode('utf8'))
    f.close()

    commands.addremove(ui, repo)
    commands.commit(ui, repo, message=comment, user=rev['user'].encode('utf8'), date=timestamp)



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.