Voulez-vous trouver la première occurrence d'un mot ou d'une expression spécifique dans l'historique de révision d'une page, ou cette question concerne-t-elle autre chose? Il doit y avoir un moyen de télécharger l'historique complet des révisions pour une page spécifique, mais je ne l'ai pas encore trouvé.
Wow c'est assez proche. On dirait que l'on explore pour trouver le committer de "mots donnés" dans la page wiki, peut-être qu'il pourrait être modifié pour afficher la page entière :)
rogerdpack
Il montre déjà la révision où le texte a été ajouté, vous pouvez donc simplement cliquer sur ce lien pour voir à quoi ressemblait la page entière lorsque le texte a été ajouté.
Anderson Green
Réponses:
3
J'ai souvent besoin de quelque chose comme ça aussi, mais il semble qu'il n'y ait pas de solution prête.
J'ai écrit un script qui m'aide à saisir des révisions à l'aide de l'API MediaWiki et à les importer dans le système de contrôle de version de Bazaar. bzr qblame article.wiki, donne ensuite une belle vue de qui a changé quoi. Le script n'est pas vraiment prêt pour la sortie, mais vous pouvez le trouver ci-dessous ou sur Pastebin . Le script s'ajoute à un dépôt mercuriel, qui peut ensuite être converti en 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)
Réponses:
J'ai souvent besoin de quelque chose comme ça aussi, mais il semble qu'il n'y ait pas de solution prête.
J'ai écrit un script qui m'aide à saisir des révisions à l'aide de l'API MediaWiki et à les importer dans le système de contrôle de version de Bazaar.
bzr qblame article.wiki
, donne ensuite une belle vue de qui a changé quoi. Le script n'est pas vraiment prêt pour la sortie, mais vous pouvez le trouver ci-dessous ou sur Pastebin . Le script s'ajoute à un dépôt mercuriel, qui peut ensuite être converti en Bazar.la source
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm semble supporter exactement cela. Malheureusement, c'est juste un module perl, pas une commande conviviale, donc ça va être un peu plus difficile à utiliser qu'on ne le voudrait…
la source
Inspiré des réponses précédentes, j'ai adapté le script Python pastebin précédent pour utiliser git au lieu de mercurial comme backend
Mon projet est hébergé sur GitLab
la source
Une autre solution peu conviviale serait l' extension mw-to-git pour git, qui vous permettrait probablement d'exécuter
git blame
sur une page.la source