Tampilan baris demi baris dari penulis yang bertanggung jawab atas kontribusi pada halaman MediaWiki

11

Apakah ada cara untuk menunjukkan "siapa yang berkontribusi pada baris ini" dari setiap baris halaman Wikipedia atau situs MediaWiki?

Itu akan ditampilkan per halaman dan akan mirip dengan alat menyalahkan subversi.

rogerdpack
sumber
Apakah Anda ingin menemukan kemunculan pertama kata atau frasa tertentu dalam riwayat revisi halaman, atau apakah ini pertanyaan tentang sesuatu yang lain? Pasti ada beberapa cara untuk mengunduh riwayat revisi lengkap untuk halaman tertentu, tetapi saya belum menemukannya.
Anderson Green
Ya itu benar.
rogerdpack
1
Sangat mudah untuk melakukan ini menggunakan WikiBlame, seperti yang dijelaskan di sini: webapps.stackexchange.com/a/35914/20087
Anderson Green
Wow, itu cukup dekat. Sepertinya seseorang berlatih untuk menemukan pengalih dari "kata-kata yang diberikan" di halaman wiki, mungkin itu dapat dimodifikasi untuk menampilkan seluruh halaman :)
rogerdpack
Itu sudah menunjukkan revisi di mana teks ditambahkan, jadi Anda bisa mengklik tautan itu untuk melihat seperti apa seluruh halaman ketika teks ditambahkan.
Anderson Green

Jawaban:

3

Saya sering membutuhkan sesuatu seperti ini juga, tetapi sepertinya tidak ada solusi yang siap.

Apa yang saya lakukan adalah menulis skrip yang membantu saya mengambil revisi menggunakan MediaWiki API dan mengimpornya ke sistem kontrol versi Bazaar. bzr qblame article.wiki, lalu memberikan tampilan yang bagus tentang siapa yang mengubah apa. Script tidak benar-benar siap untuk dirilis, tetapi Anda dapat menemukannya di bawah atau di Pastebin . Script menambah repo lincah, yang kemudian dapat dikonversi ke Bazaar.

# 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
sumber
0

Solusi lain yang tidak terlalu ramah pengguna adalah ekstensi mw-to-git untuk git, yang mungkin memungkinkan Anda untuk berjalan git blamedi halaman.

scribu
sumber