Affichage ligne par ligne de l'auteur responsable de la contribution sur la page MediaWiki

11

Existe-t-il un moyen de montrer "qui a contribué à cette ligne" de chaque ligne d'une page de Wikipédia ou d'un site MediaWiki?

Il s'afficherait par page et serait similaire à l'outil de blâme de subversion.

rogerdpack
la source
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é.
Anderson Green
Ouais c'est à peu près juste.
rogerdpack
1
Il est très facile de le faire en utilisant WikiBlame, comme expliqué ici: webapps.stackexchange.com/a/35914/20087
Anderson Green
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)
eug
la source
0

Une autre solution peu conviviale serait l' extension mw-to-git pour git, qui vous permettrait probablement d'exécuter git blamesur une page.

scribu
la source