Một cách để làm điều đó là xuất lịch sử bài viết, sau đó xử lý các sửa đổi bằng cách sử dụng một công cụ cục bộ như thế nào git blame
. Điều này có thể được thực hiện bằng cách sử dụng một kịch bản.
Để xuất lịch sử bài viết, sử dụngSpecial:Export
, cụ thể : https://en.wikipedia.org/w/index.php?title=Special:Export&history=1&action=submit&pages=Blinkenlights
.
Để tạo lỗi, trước tiên hãy thêm các sửa đổi vào kho git tạm thời (hiển thị trong Python 3):
import tempfile
import subprocess
with tempfile.TemporaryDirectory() as repo:
os.chdir(repo.name)
subprocess.check_call(['git', 'init'])
Sau đó tải xuống XML lịch sử đã xuất, phân tích cú pháp bằng một cái gì đó giống như lxml.etree
và lặp lại các bản sửa đổi (xpath //revision
). Đối với mỗi sửa đổi, hãy viết văn bản vào một tệp (giả sử article.wiki
), đọc tác giả và chạy
subprocess.check_call(['git', 'commit', '-a', '-m', 'blah', '--author=' + str(author)])
Sau khi tất cả các sửa đổi được thêm vào repo, hãy chạy git blame article.wiki
để xem tác giả của từng dòng.
Lưu ý: Special:Export
có thể hạn chế số lần sửa đổi được xuất, do đó, trong các trang có lịch sử lâu dài, bạn có thể phải tìm nạp XML nhiều lần.