Bunu yapmanın bir yolu, makale geçmişini dışa aktarmak ve sonra gibi yerel bir araç kullanarak revizyonları işlemektir git blame
. Bu bir komut dosyası kullanılarak yapılabilir.
Makale geçmişini aktarmak için kullanmakSpecial:Export
özellikle: https://en.wikipedia.org/w/index.php?title=Special:Export&history=1&action=submit&pages=Blinkenlights
.
Suçu oluşturmak için önce revizyonları geçici bir git deposuna ekleyin (Python 3'te gösterilmiştir):
import tempfile
import subprocess
with tempfile.TemporaryDirectory() as repo:
os.chdir(repo.name)
subprocess.check_call(['git', 'init'])
Daha sonra dışa aktarılan geçmiş XML'sini indirin, benzer bir şeyle ayrıştırın lxml.etree
ve revizyonlar (xpath //revision
) üzerinde döngü yapın . Her revizyon için metni bir dosyaya yazın (diyelim article.wiki
), yazarı okuyun ve çalıştırın
subprocess.check_call(['git', 'commit', '-a', '-m', 'blah', '--author=' + str(author)])
Repoya tüm revizyonlar eklendikten sonra git blame article.wiki
, her satırın yazarını görmek için .
Not: Special:Export
dışa aktarılan düzeltmelerin sayısını kısıtlayabilir, bu nedenle uzun geçmişi olan sayfalarda XML'i birden çok kez getirmeniz gerekebilir.