Чи є спосіб показати "хто сприяв цьому рядку" кожного рядка сторінки Вікіпедії або веб-сайту MediaWiki?
Це відображатиметься на сторінці та було б схожим на інструмент вини у підриві.
Чи є спосіб показати "хто сприяв цьому рядку" кожного рядка сторінки Вікіпедії або веб-сайту MediaWiki?
Це відображатиметься на сторінці та було б схожим на інструмент вини у підриві.
Відповіді:
Мені часто потрібно щось подібне, але, схоже, немає готового рішення.
Те, що я зробив, - це написаний сценарій, який допомагає мені схопити версії за допомогою API MediaWiki та імпортувати їх до системи контролю версій 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)
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm, схоже, підтримує саме це. На жаль, це просто модуль perl, а не зручна для користувача команда, тому використовувати його буде дещо складніше, ніж можна було б хотіти ...
Натхненний попередніми відповідями, я адаптував попередній сценарій Python із пастіном для використання git замість mercurial як бекенда
Мій проект розміщується на GitLab