¿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.
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)
Respuestas:
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.fuente
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm parece admitir exactamente esto. Desafortunadamente, es solo un módulo perl, no un comando fácil de usar, por lo que será un poco más difícil de usar de lo que uno podría desear ...
fuente
Inspirado por respuestas anteriores, he adaptado el script anterior de Pastebin Python para usar git en lugar de mercurial como backend
Mi proyecto está alojado en GitLab
fuente
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 blame
en una página.fuente