Exibição linha a linha do autor responsável pela contribuição na página MediaWiki

11

Existe uma maneira de mostrar "quem contribuiu para esta linha" de cada linha de uma página da Wikipedia ou de um site do MediaWiki?

Seria exibido por página e seria semelhante à ferramenta de culpa do subversion.

rogerdpack
fonte
Deseja encontrar a primeira ocorrência de uma palavra ou frase específica no histórico de revisões de uma página ou esta pergunta é sobre outra coisa? Deve haver uma maneira de fazer o download do histórico de revisões completo de uma página específica, mas ainda não o encontrei.
Anderson Green
Sim, isso é certo.
Rogerdpack #
1
É muito fácil de fazer isso usando WikiBlame, como explicado aqui: webapps.stackexchange.com/a/35914/20087
Anderson Verde
Uau, isso é bem perto. Looks como aquele brocas para encontrar o committer de "palavras dadas" na página de wiki, talvez ele poderia ser modificado para mostrar a página inteira :)
rogerdpack
Ele já mostra a revisão em que o texto foi adicionado, então você pode simplesmente clicar nesse link para ver como era a página inteira quando o texto foi adicionado.
Anderson Green

Respostas:

3

Muitas vezes também preciso de algo assim, mas parece que não há solução pronta.

O que eu fiz foi escrever um script que me ajuda a obter revisões usando a API MediaWiki e importá-las para o sistema de controle de versões do Bazaar. bzr qblame article.wiki, fornece uma boa visão de quem mudou o quê. O script não está realmente pronto para o lançamento, mas você pode encontrá-lo abaixo ou no Pastebin . O script adiciona um repositório mercurial, que pode ser convertido em 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)
eu G
fonte
0

Outra solução pouco amigável seria a extensão mw-to-git para git, que provavelmente permitiria que você executasse git blameem uma página.

scribu
fonte