Wir haben bereits festgestellt, dass es keinen Sinn macht, im JuraWiki ein Rechtslexikon zu schreiben (siehe KooperationMitJuraWiki). Mittels eines noch zu schreibenden Makros (HilfeZuMakros) könnten wir Wikipedia-Inhalte ins JuraWiki übernehmen. Das könnte z.B. wie folgt aussehen:
Auf der Seite BundesVerfassungsGericht schreibt man in den Quelltext
[[Wikipedia(Bundesverfassungsgericht)]]
Das Makro schlägt dann den betreffenden Artikel in Wikipedia nach und fügt den Titel und z.B. den ersten Absatz im JuraWiki ein. Das sähe dann etwa so aus:
Ein paar grundlegende Überlegungen zur Programmierung haben wir bereits beim WikiTreffen/2004-06-02 angestellt.
Ich habe mal einen Prototypen gemacht, den man hier besichtigen kann: http://zosel.dyndns.org/testwiki/BundesVerfassungsGericht
Wikipedia.py
1 import urllib, re
2
3 def execute(macro, args):
4
5 url = "http://de.wikipedia.org/wiki/" + args
6 urllib.URLopener.version ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
7 page = urllib.urlopen(url).read()
8 regexp = re.compile(r"<p>(?P<text>.*)</p>", re.DOTALL)
9 result = regexp.search(page)
10 text = result.group("text")
11
12 # Umschreiben der Links
13 # text = re.sub ("(<a[^>]*href=[\"'])(?!http:\/\/|ftp:\/\/)", "\\1http://de.wikipedia.org", text)
14
15 # Neue Version:
16 # Links und Quellenangaben umbiegen
17 server = "http://de.wikipedia.org/"
18 reg_flags = re.DOTALL or re.DOTALL or re.MULTILINE
19 regexp = re.compile ("(<\s*(img|a|form|script|link)[^>]*(src|href|action)\s*=\s*[\"']\s*)\/", reg_flags)
20 text = regexp.sub ("\\1"+server, text)
21
22
23
24 results = "<table align=\"right\" width=\"100\" border=\"0\" style=\"background-color:#FFDDDD;\"><tr><td><b>" + args + "</b> bei Wikipedia<br>"+text+"<br>... mehr bei <a href=\""+url+"\">Wikipedia</a></td></tr></table>"
25
26 return results
Ich habe mal macro/Wikipedia.py angelegt. Dort wurde der Code inzwischen schon weiter verbessert. Vielleicht findet sich ja noch jemand (der's kann), der das vervollständigt.
Hier ein Test-Skript, das die Wikipedia-Hauptseite lädt und vor der Ausgabe Links und Quellenangaben ersetzt. Allerdings nur die Ziele mit absoluten Pfadangaben, d.h. die, die mit "/" beginnen. Relative Pfadangaben habe ich in den Wiki-Seiten nicht entdeckt, deshalb konnte die RegExp-Syntax etwas vereinfacht werden.
import urllib, re print "content-type: text/html\n" # Seitenquelltext laden url = "http://de.wikipedia.org/wiki/Hauptseite" urllib.URLopener.version ="Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)" page = urllib.urlopen(url).read() if (page): # Links und Quellenangaben umbiegen server = "http://de.wikipedia.org/" reg_flags = re.DOTALL or re.DOTALL or re.MULTILINE regexp = re.compile ("(<\s*(img|a|form|script|link)[^>]*(src|href|action)\s*=\s*[\"']\s*)\/", reg_flags) page = regexp.sub ("\\1"+server, page) print page
Noch zu klären
- Was passiert, wenn die Seite nicht aufrufbar ist? Timeout?
* Bitte verwendet Caching (auch um den Wikipedia-Server zu schonen). -- JakobVoss
- Wie genau soll das zu generierende HTML aussehen?
- Sollen im Text eventuell vorhandene Links umgeschrieben werden?
:: Derzeit zeigt ein Link Befähigung in dem wikipedia-Text nicht auf die wikipedia, sondern intern ins wiki und meistens auf eine leere Seite. Das ist vermutlich unerwünscht -- ~~~~
- Gestattet die Wikipedia-Lizenz eine solche Übernahme?
:: Der Verweis auf Wikipedia ist schon sehr gut, es könnte noch erwähnt werden, daß dieser Text unter der GNU FDL steht. --~~~~ Muss sogar. -- JakobVoss
- ...