Рядко за рядком відображається автор, відповідальний за внесок на сторінку MediaWiki


12

Чи є спосіб показати "хто сприяв цьому рядку" кожного рядка сторінки Вікіпедії або веб-сайту MediaWiki?

Це відображатиметься на сторінці та було б схожим на інструмент вини у підриві.


Ви хочете знайти перше виникнення конкретного слова чи фрази в історії перегляду сторінки чи це питання про щось інше? Має бути якийсь спосіб завантажити повну історію версій для певної сторінки, але я її ще не знайшов.
Андерсон Грін

Так, це правильно.
rogerdpack

1
Це зробити дуже просто за допомогою WikiBlame, як пояснено тут: webapps.stackexchange.com/a/35914/20087
Anderson Green

Нічого собі, це дуже близько. Схоже, що хтось шукає, щоб знайти виконавця "заданих слів" на сторінці вікі, можливо, його можна було б змінити, щоб показати всю сторінку :)
rogerdpack

Він уже показує редакцію, куди додано текст, тож ви можете просто натиснути на це посилання, щоб побачити, як виглядала вся сторінка, коли текст був доданий.
Андерсон Грін

Відповіді:


3

Мені часто потрібно щось подібне, але, схоже, немає готового рішення.

Те, що я зробив, - це написаний сценарій, який допомагає мені схопити версії за допомогою 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)

3

http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm, схоже, підтримує саме це. На жаль, це просто модуль perl, а не зручна для користувача команда, тому використовувати його буде дещо складніше, ніж можна було б хотіти ...


Але можна зробити веб-інтерфейс для цього модуля, подібний до wikipedia.ramselehof.de/wikiblame.php
Немо


0

Іншим не дуже зручним рішенням буде розширення mw-git для git, яке, імовірно, дозволить вам запускати git blameсторінку.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.