Чи є спосіб показати "хто сприяв цьому рядку" кожного рядка сторінки Вікіпедії або веб-сайту 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