Möchten Sie das erste Vorkommen eines bestimmten Wortes oder einer bestimmten Phrase im Revisionsverlauf einer Seite finden, oder handelt es sich bei dieser Frage um etwas anderes? Es muss eine Möglichkeit geben, den vollständigen Revisionsverlauf für eine bestimmte Seite herunterzuladen, aber ich habe ihn noch nicht gefunden.
Wow das ist ziemlich nah. Sieht so aus, als würde man den Committer der "gegebenen Wörter" auf der Wiki-Seite finden. Vielleicht könnte er so geändert werden, dass die gesamte Seite
angezeigt wird
Es wird bereits die Revision angezeigt, in der der Text hinzugefügt wurde. Sie können also einfach auf diesen Link klicken, um zu sehen, wie die gesamte Seite aussah, als der Text hinzugefügt wurde.
Anderson Green
Antworten:
3
Ich brauche oft auch so etwas, aber es sieht so aus, als gäbe es keine fertige Lösung.
Ich habe ein Skript geschrieben, mit dem ich Revisionen mithilfe der MediaWiki-API abrufen und in das Bazaar-Versionskontrollsystem importieren kann. bzr qblame article.wiki, gibt dann einen schönen Blick darauf, wer was geändert hat. Das Skript ist noch nicht wirklich zur Veröffentlichung bereit, aber Sie finden es unten oder auf Pastebin . Das Skript fügt ein Quecksilber-Repo hinzu, das dann in Bazaar konvertiert werden kann.
# 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)
Inspiriert von früheren Antworten habe ich das vorherige Pastebin-Python-Skript so angepasst , dass Git anstelle von Mercurial als Backend verwendet wird
Eine andere nicht sehr benutzerfreundliche Lösung wäre die Erweiterung mw-to-git für git, mit der Sie vermutlich git blameauf einer Seite ausgeführt werden können.
Antworten:
Ich brauche oft auch so etwas, aber es sieht so aus, als gäbe es keine fertige Lösung.
Ich habe ein Skript geschrieben, mit dem ich Revisionen mithilfe der MediaWiki-API abrufen und in das Bazaar-Versionskontrollsystem importieren kann.
bzr qblame article.wiki
, gibt dann einen schönen Blick darauf, wer was geändert hat. Das Skript ist noch nicht wirklich zur Veröffentlichung bereit, aber Sie finden es unten oder auf Pastebin . Das Skript fügt ein Quecksilber-Repo hinzu, das dann in Bazaar konvertiert werden kann.quelle
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm scheint genau dies zu unterstützen. Leider ist es nur ein Perl-Modul, kein benutzerfreundlicher Befehl, daher wird es etwas schwieriger zu bedienen sein, als man vielleicht möchte ...
quelle
Inspiriert von früheren Antworten habe ich das vorherige Pastebin-Python-Skript so angepasst , dass Git anstelle von Mercurial als Backend verwendet wird
Mein Projekt wird auf GitLab gehostet
quelle
Eine andere nicht sehr benutzerfreundliche Lösung wäre die Erweiterung mw-to-git für git, mit der Sie vermutlich
git blame
auf einer Seite ausgeführt werden können.quelle