Wikipedia Diskussion:Exzellente Artikel/Diskrepanz
aus Wikipedia, der freien Enzyklopädie
[Bearbeiten] Herstellung der Liste
Unter Verwendung der cygwin-Programme wget, sed, diff
und weiterer Windows-Standardprogramme erzeuge ich diese Liste mittels folgender Batch-Dateien unter Windows. Hochgeladen wird sie aber manuell! --SirJective 20:34, 24. Mai 2005 (CEST)
Achtung! Die hier vorgestellte Methode funktioniert auch bei mir nicht mit Sicherheit: Ich mache in den sed-Kommandos implizite Annahmen über den Zeilenaufbau der gelieferten HTML-Seiten; der kann jedoch in zukünftigen Versionen von MediaWiki und bereits jetzt z.B. für andere Kategorie-Seiten auf unerwartete Weise anders sein. Auch Meldungen des Servers über Überlastungen können zu unvorhergesehenen Ergebnissen führen!
load_articletext.bat
@echo off if %2l==l goto ende rem Laedt eine WP-Bearbeiten-Seite herunter wget "http://de.wikipedia.org/wiki/index.php?title=%1&action=edit" -O load_articletext.tmp rem extrahiert den Quelltext des Artikels sed -f load_articletext.sed load_articletext.tmp > %2 del load_articletext.tmp :ende
load_articletext.sed
# Die (einzige) Textarea auf der Seite ermitteln 1,/<textarea/{/<textarea/!d;/>/!d} /<\/textarea/,${/<\/textarea/!d} # Dies tritt hoechstens in der ersten Zeile der Textarea auf s/^.*>// # Dies tritt hoechstens in der letzten Zeile der Textarea auf s/<.*$// # Entfernt die HTML-Quotes s/</</g s/>/>/g s/"/"/g s/&/\&/g
get_category.bat
@echo off if %2l==l goto ende rem Laedt eine Kategorie komplett herunter set cattitle=%1 set restitle=%2 set arttitle= if exist %restitle% del %restitle% rem Nichtrekursiver Aufruf get_category2.bat :ende
get_category2.bat
@echo off rem Hilfsprogramm fuer get_category.bat if %cattitle%l==l goto ende echo Lade Kategorie %cattitle% ab Artikel %arttitle% ... rem Ab der zweiten Seite kurz Warten if not %arttitle%l==l sleep 10 rem Naechste Seite holen wget "http://de.wikipedia.org/wiki/index.php?title=Kategorie:%cattitle%&from=%arttitle%" -O _get_category.html rem Trennt die HTML-Liste der Artikel heraus sed -e "1,/Artikel in der Kategorie/{/Artikel in der Kategorie/!d};/<div class=\"printfooter\"/,$d" _get_category.html > _get_category.tmp2 rem Erzeugt eine reine Titel-Liste sed -e "s/^.*<h2>//;/<li>/!d;s@</li><li>@</li>\n<li>@g" _get_category.tmp2 | sed -e "s/^<ul>//;s@</ul>$@@;s/^.*title=[^>]*>//;s@</a>.*$@@;s/_/ /g" > _get_category.tmp3 rem Liste der Artikel in Ergebnisdatei sichern type _get_category.tmp3 >> %restitle% rem Ermittele den naechsten Startartikel sed -n -f get_category2.sed _get_category.tmp2 > _get_category_tmp.tmp rem naechsten Startartikel in Variable uebernehmen echo set arttitle= > _get_category_tmp.bat rem der letzte s-Befehl dupliziert Prozentzeichen, das ist fuer die Batch-Verarbeitung noetig sed -e "s/ /_/g;s/.*/set arttitle=&/;s/%%/%%%%/g" _get_category_tmp.tmp >> _get_category_tmp.bat call _get_category_tmp.bat rem Test, ob es die letzte Seite war if %arttitle%l==l goto ende rem Ruft sich selbst nichtrekursiv auf get_category2.bat :ende set cattitle= set arttitle= set restitle= del _get_category_tmp.tmp del _get_category_tmp.bat del _get_category.tmp2 del _get_category.tmp3 del _get_category.html
get_category2.sed
# Extrahiert aus der vorgeschnittenen Kategorie-HTML-Seite den Titel # der naechsten Kategorie-Seite. # Hilfsdatei fuer get_category.bat # Keine Angabe ueber vorherige oder naechste Seite /vorherige/!q # alles vor der ersten Klammergrenze entfernen - "vorherige 200" s/) (/)@@@(/;s/^.*@@@(// # kein Link -> Abbruch /<a/!q # interessierendes Linksegment extrahieren s/^.*index\.php.title=//;s/".*$//;s/^.*from=// p q
exzellente_diskrepanz.bat
@echo off call load_articletext.bat Wikipedia:Exzellente_Artikel _wpea.txt call load_articletext.bat Wikipedia:Exzellente_Artikel_nach_Datum _wpeand.txt rem Extrahiert aus dem Quelltext von rem Wikipedia:Exzellente_Artikel rem die Liste der exzellenten Artikel. sed -e "1,/Alle exzellenten Artikel/d;/__NOEDITSECTION__/,$d" _wpea.txt | sed -e "s/\]\]/\n/g" | sed -e "/\[/!d;s/^.*\[\[//;/^Bild:/d;s/|.*$//" | sort > _wpea.lst rem Extrahiert aus dem Quelltext von rem Wikipedia:Exzellente_Artikel_nach_Datum rem die Liste der exzellenten Artikel. sed -e "/^#/!d;s/\]\].*$//;s/^.*\[\[//" _wpeand.txt | sort > _wpeand.lst del _wpea.txt del _wpeand.txt rem Liste der Artikel in der Kategorie komplett herunterladen call get_category.bat Exzellenter_Artikel _katea.tmp sort _katea.tmp > _katea.lst del _katea.tmp rem Jetzt haben wir die drei Artikel-Listen, die wir wollten. if exist exzellente_diskrepanz.txt del exzellente_diskrepanz.txt echo ==EA - Kat==>>exzellente_diskrepanz.txt diff -U 0 _wpea.lst _katea.lst | sed -e "/^@/d;/^--- /d;/^\+\+\+ /d;s/^-/*EA :[[/;s/^\+/*Kat:[[/;s/$/]]/;" >> exzellente_diskrepanz.txt echo ==EA - EAnD==>>exzellente_diskrepanz.txt diff -U 0 _wpea.lst _wpeand.lst | sed -e "/^@/d;/^--- /d;/^\+\+\+ /d;s/^-/*EA :[[/;s/^\+/*EAnD:[[/;s/$/]]/;" >> exzellente_diskrepanz.txt
Das Ergebnis liegt nach Aufruf von exzellente_diskrepanz.bat in der Datei exzellente_diskrepanz.txt und kann von dort in die WP hochgeladen werden. --SirJective 20:34, 24. Mai 2005 (CEST)
- Die Batchdatei exzellente_diskrepanz.bat wollte bei mir nicht gleich funktionieren. Das lag an zwei Fehlern, zum einen einen Hash als Kommentar, der unter Windows nicht funktioniert, zum anderen fand er die aufgerufenen Batch-Dateien nicht, ich habe also .\ hinzugefügt. Jetzt geht es bei mir, er kann aber scheinbar die Liste der Artikel nach Datum nicht herunterladen, ich weiß noch nicht wieso. Ansonsten funktioniert es super, danke dafür. Außerdem wird das Zählen durch die extrahierte Liste in Textform erheblich erleichtert, man benötigt nur noch einen Editor mit Zeilennummern. -- Dishayloo [ +] 12:55, 25. Mai 2005 (CEST)
- Stop, die Angabe des aktuellen Verzeichnisses ist unnötig, tatsächlich war der Skriptname einer Batch-Datei falsch (artitle), das habe ich hier geändert, jetzt sollten die Skripte bei jedem mit Cygwin auf Anhieb funktionieren. Die exzellente Liste nach Datum funktioniert jetzt bei mir auch. -- Dishayloo [ +] 13:00, 25. Mai 2005 (CEST)
-
-
- Danke fuer die Korrekturen. Diese Dateien sind halt bei mir noch sehr im Fluss... ;) --SirJective 13:53, 25. Mai 2005 (CEST)
-
- Hab einen weiteren Fehler in get_category2.bat korrigiert. --SirJective 22:48, 2. Jun 2005 (CEST)