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.
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)
Respostas:
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.fonte
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm parece suportar exatamente isso. Infelizmente, é apenas um módulo perl, não um comando fácil de usar, por isso será um pouco mais difícil de usar do que se poderia querer ...
fonte
Inspirado nas respostas anteriores, adaptei o script Python pastebin anterior para usar git em vez de mercurial como back-end
Meu projeto está hospedado no GitLab
fonte
Outra solução pouco amigável seria a extensão mw-to-git para git, que provavelmente permitiria que você executasse
git blame
em uma página.fonte