Kleiner Einkauf Nachmittags, weil ich wieder zwei Nächte Haus und Hund hüte. Meine Mutter wurde kurz vor 18:00 für ihren Wochenendjob abgeholt und ich saß eine Weile wieder am Mac. Das System kam weiter voran.
Für Mediawiki mussten einige Extrensions her:
Scribunto war die erste, die mit dem Import der Templates fehlte. Ich importierte dann nur noch den Module Namespace (828) unter dem die Konvertierungssachen gespeichert waren. Das ging auch noch akzeptabel schnell. Weitere Sachen brauchte ich erst mal nicht. Für die Konvertierung von Einheiten wird da sogar Lua genommen, was auch noch richtige Rechte brauchte. Dann noch die TemplateStyles für sanitize-css
In die localSettings.php:
$wgShowExceptionDetails = true;
require_once "$IP/extensions/Scribunto/Scribunto.php";
wfLoadExtension( 'TemplateStyles' );
Nochmal:
php importDump.php --namespaces 10 --no-updates --conf ../LocalSettings.php ../downloads/enwikivoyage-latest-pages-articles-multistream.xml
php importDump.php --namespaces 828 --no-updates --conf ../LocalSettings.php ../downloads/enwikivoyage-latest-pages-articles-multistream.xml
Die Namespaces in eine „piped“ Liste zu machen, klappte nicht aber der Rest klappte. Ich kann nun lokal über die Mediawiki API jeglichen Wikitext samt Templates rendern.
http://wikitravel.local:8888//api.php?action=expandtemplates&format=json&text={{km|7}}
http://wikitravel.local:8888/api.php?action=parse&contentmodel=wikitext&disablelimitreport=true&mobileformat=true&disableeditsection=true&wrapoutputclass=pop&format=json&text=...
Ein netter Erfolg, den ich jetzt noch in meinem ersten Script übernehmen muss. Der Workflow wäre damit erst mal gelöst. Für Bilder später könnte ich dann auf Scraping aus ZIM zugreifen, womit die Arbeit von 1-2 Tagen auch noch verwendet werden würde.
Ganz so einfach war die Template Abwicklung dann doch nicht. Die Templates greifen teils rekursiv auf Daten im Wiki zu, abhängig auch von der aufrufenden Seite. Da ich eben nur die Templates im Mediawiki habe, fehlen somit Daten und Parameter. Über Parsing und einige Regex fand ich jedoch die letzten Variablennamen, die in den Templates durchnummert sind und kann somit wohl in bs4 die gerenderten Nodes beschränken. Wieder einmal scheint das alles sehr hackig aber muss ich dann die Tage probieren, wo Fehler auftauchen und welche Templates Probleme machen. Am Ende läuft es wohl doch auf eine komplette Mediawiki Installation hinaus – mit allen Daten. Die API scheint aber auch sonst nicht alles rekursiv abzuarbeiten. Das geht nur dann in der gerenderten Seite, womit ich wieder am Anfang wäre.










0 Responses to “Scribunto, API parsen”