Один из способов сделать это - экспортировать историю статьи, а затем обработать редакции, используя локальный инструмент, например git blame
. Это можно сделать с помощью сценария.
Чтобы экспортировать историю статьи, использоватьSpecial:Export
, в частности: https://en.wikipedia.org/w/index.php?title=Special:Export&history=1&action=submit&pages=Blinkenlights
.
Чтобы сгенерировать вину, сначала добавьте ревизии во временный репозиторий git (показанный в Python 3):
import tempfile
import subprocess
with tempfile.TemporaryDirectory() as repo:
os.chdir(repo.name)
subprocess.check_call(['git', 'init'])
Затем загрузите экспортированный XML-файл истории, проанализируйте его с помощью чего-то вроде lxml.etree
и переберите ревизии (xpath //revision
). Для каждой ревизии запишите текст в файл (скажем article.wiki
), прочитайте автора и запустите
subprocess.check_call(['git', 'commit', '-a', '-m', 'blah', '--author=' + str(author)])
После того, как все ревизии добавлены в репозиторий, запустите, git blame article.wiki
чтобы увидеть автора каждой строки.
Примечание: Special:Export
может ограничивать количество экспортируемых ревизий, поэтому на страницах с длинной историей вам, возможно, придется загружать XML несколько раз.