Czy chcesz znaleźć pierwsze wystąpienie określonego słowa lub frazy w historii zmian na stronie, czy może to pytanie dotyczy czegoś innego? Musi być jakiś sposób na pobranie pełnej historii zmian dla określonej strony, ale jeszcze jej nie znalazłem.
Wow, to całkiem blisko. Wygląda na to, że ktoś się wtrąca, by znaleźć
osobę zapisującą
Pokazuje już wersję, w której tekst został dodany, więc możesz po prostu kliknąć ten link, aby zobaczyć, jak wyglądała cała strona po dodaniu tekstu.
Anderson Green,
Odpowiedzi:
3
Często też czegoś takiego potrzebuję, ale wygląda na to, że nie ma gotowego rozwiązania.
To, co zrobiłem, to napisanie skryptu, który pomaga mi pobierać wersje za pomocą API MediaWiki i importować je do systemu kontroli wersji Bazaar. bzr qblame article.wiki, a następnie daje ładny widok, kto co zmienił. Skrypt nie jest tak naprawdę gotowy do wydania, ale można go znaleźć poniżej lub na Pastebin . Skrypt dodaje się do repozytorium rtęciowego, które można następnie przekształcić w 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)
Innym niezbyt przyjaznym dla użytkownika rozwiązaniem byłoby rozszerzenie mw-to-git dla git, które prawdopodobnie pozwoliłoby ci działać git blamena stronie.
Odpowiedzi:
Często też czegoś takiego potrzebuję, ale wygląda na to, że nie ma gotowego rozwiązania.
To, co zrobiłem, to napisanie skryptu, który pomaga mi pobierać wersje za pomocą API MediaWiki i importować je do systemu kontroli wersji Bazaar.
bzr qblame article.wiki
, a następnie daje ładny widok, kto co zmienił. Skrypt nie jest tak naprawdę gotowy do wydania, ale można go znaleźć poniżej lub na Pastebin . Skrypt dodaje się do repozytorium rtęciowego, które można następnie przekształcić w Bazar.źródło
http://search.cpan.org/~daxim/Mediawiki-Blame-0.0.3/lib/Mediawiki/Blame.pm wydaje się wspierać dokładnie to. Niestety jest to tylko moduł perla, a nie przyjazne dla użytkownika polecenie, więc korzystanie z niego będzie nieco trudniejsze, niż można by się spodziewać…
źródło
Zainspirowany poprzednimi odpowiedziami dostosowałem poprzedni skrypt Pytebona pastebin do używania git zamiast mercurial jako backendu
Mój projekt jest hostowany na GitLab
źródło
Innym niezbyt przyjaznym dla użytkownika rozwiązaniem byłoby rozszerzenie mw-to-git dla git, które prawdopodobnie pozwoliłoby ci działać
git blame
na stronie.źródło