Один из способов сделать это - экспортировать историю статьи, а затем обработать редакции, используя локальный инструмент, например 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 несколько раз.