Visualización línea por línea del autor responsable de la contribución en la página de MediaWiki

11

¿Hay alguna manera de mostrar "quién contribuyó a esta línea" de cada línea de una página de Wikipedia o de un sitio de MediaWiki?

Se mostraría por página y sería similar a la herramienta de subversión.

rogerdpack
fuente
¿Desea encontrar la primera aparición de una palabra o frase específica en el historial de revisiones de una página, o se trata de algo más? Debe haber alguna forma de descargar el historial de revisiones completo de una página específica, pero aún no lo he encontrado.
Anderson Green el
Sí, eso es correcto.
rogerdpack
1
Es muy fácil hacer esto usando WikiBlame, como se explica aquí: webapps.stackexchange.com/a/35914/20087
Anderson Green el
Wow eso está muy cerca. Parece que se profundiza para encontrar el confirmador de "palabras dadas" en la página wiki, tal vez podría modificarse para mostrar toda la página :)
rogerdpack
Ya muestra la revisión donde se agregó el texto, por lo que puede hacer clic en ese enlace para ver cómo se veía toda la página cuando se agregó el texto.
Anderson Green el

Respuestas:

3

A menudo necesito algo como esto también, pero parece que no hay una solución lista.

Lo que he hecho es escribir un script que me ayuda a obtener revisiones usando la API MediaWiki e importarlas al sistema de control de versiones de Bazaar. bzr qblame article.wiki, luego da una buena vista de quién cambió qué. El script no está realmente listo para su lanzamiento, pero puede encontrarlo a continuación o en Pastebin . El script se agrega a un repositorio mercurial, que luego se puede convertir a Bazar.

# 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)
EU G
fuente
0

Otra solución no muy fácil de usar sería la extensión de mw a git para git, que presumiblemente le permitiría ejecutar git blameen una página.

scribu
fuente