Benutzer:StipenTreublatt/Bot: Unterschied zwischen den Versionen
Zeile 55: | Zeile 55: | ||
'''python weblinkchecker.py -start:!''' | '''python weblinkchecker.py -start:!''' | ||
:Lädt alle Wikiseiten und überprüft externe Links. | :Lädt alle Wikiseiten und überprüft externe Links. Gefundene deadlinks werden ersteinmal in einer lokalen .dat-Datei gespeichert. Mindestens eine Woche später weiterhin als inaktiv angetroffene Links werden dann in einer Textdatei im Unterordner "deadlinks" gespeichert. Diese ist in Wikisyntax gehalten. | ||
'''python weblinkchecker.py -repeat''' | '''python weblinkchecker.py -repeat''' |
Version vom 6. Februar 2009, 22:27 Uhr
- Software und Anpassungen
- Testseite
- isbn.py Hilfe
- Regex-Aufrufe
- Hilfe:Regular Expressions; Wiki Aventurica:Robots/Dokumentation zu replace.py
- Befehle zum Kopieren und Einfügen:
- set path=%path%;F:\programme\python25
- cd F:\programme\python25\pywikipediabot
- python login.py
- Wichtig:Bei Artikelnamen mit Leerzeichen als Parameter muss ein _ das Leerzeichen ersetzen, sonst wird der Teil des Namens nach dem Leerzeichen als weiterer Parameter übernommen.
- Beispiel:
- -start:Arkos Schah
- versucht von Arkos an die Artikel alphabetisch zu berühren, plus zusätzlich den Artikel Schah. Da beide Artikel nicht vorhanden sind passiert einfach nix.
- Es funktioniert ebenfalls den Artikelnamen in "Anführungszeichen" zu schreiben.
- Befehl zum Abbrechen eines MS-Windows-Kommandozeilen-Prozesses: "Strg+C"
- Kategorie:WLH leeren - Bot schreiben, der die ganze Sache automatisiert?
touch.py
touch.py -start:Chrysir
- Alle Seiten ab Chrysir werden berührt
touch.py -cat:Kategorie:Meisterinformationen_zu_Abenteuern
- Alle Seiten in der Kategorie:Meisterinformationen zu Abenteuern werden berührt
redirect.py
redirect.py double
- Doppelte Weiterleitungen werden repariert, mit Änderungsnachfrage.
redirect.py broken
- Redirs auf nicht vorhandene Seiten werden nach Bestätigung gelöscht.
delete.py
delete.py -links:"Benutzer:StipenTreublatt/Wiki Aventurica/StipBot/Testseite" -always
- Alle von Benutzer:StipenTreublatt/Wiki Aventurica/StipBot/Testseite verlinkten Artikel werden gelöscht, keine Nachfrage
delete.py -cat:"Löschen" -always
- Alle Artikel in Kategorie:Löschen werden gelöscht, keine Nachfrage
template.py
python template.py "Navigationsleiste Aventurischer Index" "Nav Aventurischer Index"
- Ersetzt eine Vorlage durch eine andere auf allen Seiten, auf denen sie eingebunden ist. Praktisch wenn man Vorlagen umbenennt.
- BUG: Stellen an denen die Vorlage mittels {{Vorlage:Vorlage}} eingebunden ist werden nicht verändert.
python template.py -category:Soloabenteuer "Infobox Soloabenteuer" "Infobox Soloabenteuer/neues Format"
- Ebenfalls eine Vorlagenersetzung, es wird auf allen geänderten Seiten die angegebene Kategorie hinzugefügt. Ungeschickt dass das Kategoriehinzufügen nicht ohne das Ersetzen der Vorlage funktioniert. Daher: Alternative zum Herausbrechen einer Kategorie aus einer Vorlage.
python template.py -remove Spoiler
- Vorlage wird komplett entfernt. Man kann jedoch keine Kategorie angeben, auf die das Entfernen eingeschränkt bleiben soll. Zweiter Minuspunkt für dieses Skript.
python template.py -xml:WikiAventurica.xml -remove Spoiler
- Entfernt die Einbindung der "Vorlage:Spoiler" auf allen im XML-Dump angegebenen Seiten durch ein Leerzeichen. Der Dump muss dabei im Ordner pywikipediabot liegen.
weblinkchecker.py
python weblinkchecker.py -weblink:www.farben-der-tsa.de
- Funktioniert bei uns noch nicht, wegen der fehlenden Spezialseite Spezial:Linksearch.
python weblinkchecker.py -start:!
- Lädt alle Wikiseiten und überprüft externe Links. Gefundene deadlinks werden ersteinmal in einer lokalen .dat-Datei gespeichert. Mindestens eine Woche später weiterhin als inaktiv angetroffene Links werden dann in einer Textdatei im Unterordner "deadlinks" gespeichert. Diese ist in Wikisyntax gehalten.
python weblinkchecker.py -repeat
- Überprüft alle beim letzten Durchlauf als inaktiv gemeldeten externen Links.
Interessante Fehler:
Exception while processing URL http://www.alveran.org/index.php?id=157&publikationID=43 in page Das Grauen von Ranak Exception in thread Das Grauen von Ranak - http://www.alveran.org/index.php?id=157&publikationID=43: Traceback (most recent call last): File "F:\Programme\Python25\lib\threading.py", line 460, in __bootstrap self.run() File "weblinkchecker.py", line 512, in run ok, message = linkChecker.check() File "weblinkchecker.py", line 443, in check msg = error[1] IndexError: tuple index out of range
Exception in thread Grafschaft Theg├╗n - http://www.veliris.de/schloss/horas/bar onien/thegun.htm: Traceback (most recent call last): File "F:\Programme\Python25\lib\threading.py", line 460, in __bootstrap self.run() File "weblinkchecker.py", line 521, in run self.history.setLinkDead(self.url, message, self.page) File "weblinkchecker.py", line 609, in setLinkDead archiveURL = iac.getArchiveURL() File "weblinkchecker.py", line 258, in getArchiveURL f = urllib2.urlopen(archiveURL) File "F:\programme\python25\lib\urllib2.py", line 121, in urlopen return _opener.open(url, data) File "F:\programme\python25\lib\urllib2.py", line 374, in open response = self._open(req, data) File "F:\programme\python25\lib\urllib2.py", line 392, in _open '_open', req) File "F:\programme\python25\lib\urllib2.py", line 353, in _call_chain result = func(*args) File "F:\programme\python25\lib\urllib2.py", line 1100, in http_open return self.do_open(httplib.HTTPConnection, req) File "F:\programme\python25\lib\urllib2.py", line 1073, in do_open r = h.getresponse() File "F:\programme\python25\lib\httplib.py", line 924, in getresponse response.begin() File "F:\programme\python25\lib\httplib.py", line 385, in begin version, status, reason = self._read_status() File "F:\programme\python25\lib\httplib.py", line 349, in _read_status raise BadStatusLine(line) BadStatusLine
replace.py
Einige Notizen zur Regex:
"Suchen"-Regex:
. ^ $ * + ? { } [ ] \ | ( )
\r\n |
"Ersetzen"-Regex:
"
\n |
Einige beispielhafte, einfache Aufrufe (Speziellere auf einer Unterseite):
replace.py -page:"Alptraum ohne Ende (Meisterinformationen)" -regex "\{\{Spoiler.*?\}\}" ""
- Ersetzt die Einbindung der "Vorlage:Spoiler" auf "Alptraum ohne Ende (Meisterinformationen)" durch nichts.
replace.py -xml:WikiAventurica.xml -regex "\{\{Spoiler.*?\}\}" ""
- Ersetzt die Einbindung der "Vorlage:Spoiler" auf allen im XML-Dump angegebenen Seiten durch nichts. Der Dump muss dabei im Ordner pywikipediabot liegen.
replace.py -cat:Herrscherauflistung -regex "\{\{Prettytable\}\}" "class=\"wikitable\""
- Ersetzt auf allen Seiten der Kategorie:Herrscherauflistung die die Vorlage:Prettytable durch die css-Klasse wikitable.
replace.py -cat:Gruppenabenteuer -regex "=Abenteuerbeschreibung=\s\s" ""
- Entfernt die Zeile "=Abenteuerbeschreibung=" vollständig aus jeder Seite der Kat:Gruppenabenteuer.
replace.py -ref:"Zyklop (Rasse)" -regex "\[\[Zyklop \(Rasse\)(\]\]|/|#|\|)" "[[Zyklop\1"
- Beispielhafter Aufruf für Kategorie:WLH leeren. \1 verstehe ich jedoch nicht... bedeutet vielleicht dass das letzte gefundene Zeichen nicht ersetzt wird.
- ( und ) bilden eine sogenannte konsumierende Gruppierung. Im Ersetze-String kann man mit \1, \2 usw. die gruppierten Teile wieder einbauen. Die Numerierung beginnt bei der am weitesten links stehenden sich öffenden Klammer. Du hast aber richtig geraten. Ich gruppiere etwas und füge es an gleicher Stelle wieder ein. Dadurch wird es nicht ersetzt. Aber mit der Angabe im Suchestring verhindere ich Treffer bei Begriffen die noch weitergehen. --Falk Steinhauer 23:04, 11. Nov. 2008 (CET)
replace.py -catr:Spielwelt -regex " usw\.=" "="
- Entfernt "usw." aus allen Überschriften auf allen Seiten in allen Unterkategorien von Kat:Spielwelt.
replace.py -cat:Gruppenabenteuer -regex "<!-- Diese Seiteninformationen wurden vom AbListe2Mediawiki-Makro V0\.\d\d erstellt -->\s\s" ""
- Entfernt den Kommentar mit allen aufgetretenen Versionsnummern.
replace.py -catr:Index -regex "( |')(?P<Zahl>\d|\d\d|)0( ff|ff| ff\.|ff\.)( |\s|'|,|;)" "\1\g<Zahl>0-\g<Zahl>2\4" "( |')(?P<Zahl>\d|\d\d|)1( ff|ff| ff.|ff.)( |\s|'|,|;)" "\1\g<Zahl>1-\g<Zahl>3\4"
replace.py -catr:Regelindex -regex "( |')(?P<Zahl>\d|\d\d|)0( f|f| f\.|f\.)( |\s|'|,|;)" "\1\g<Zahl>0-\g<Zahl>1\4" "( |')(?P<Zahl>\d|\d\d|)2( f|f| f\.|f\.)( |\s|'|,|;)" "\1\g<Zahl>2-\g<Zahl>3\4"
- Zwei Aufrufe, die Seitenangaben mit ff oder f durch eine entsprechden Zahlenangabe ersetzen. Eine vollständige Liste zum Erwischen aller solcher Angaben findet sich in der Versionsgeschichte.
replace.py -cat:Roman -regex "\|(Nr|Seitenzahl|Autoren|Cover|Zeit|Ort|Erscheinungsdatum|Preis|ISBN|Direktlinks)=-\r\n" "|\1=\n"
- Entfernt die - aus den Infoboxeinträgen der Romane, da diese die dpl-Listen stören.
replace.py -xml:WikiAventurica.xml -regex "align=.*?right.*?.*?\{\{Prettytable\}\}\s\s!bgcolor=#ffff80\|Name\s\s!bgcolor=#ffff80\|Titel\s\s!bgcolor=#ffff80\|von\s\s!bgcolor=#ffff80\|bis\s\s" "class=\"wikitable\" align=\"right\"\n|-class=\"vordergrund\"\n!Name!!Titel!!von!!bis\n"
- Funktioniert unerklärlicherweise nicht.
category.py
For the actions tidy and tree, the bot will store the category structure locally in category.dump. This saves time and server load, but if it uses these data later, they may be outdated; use the -rebuild parameter in this case.
- Anscheinend benutzt das Script auch bei anderen Befehlen den dump. Ab und zu -rebuild scheint angebracht.
category.py tidy
- Which category do you want to tidy up? Regelindex
- Script bietet lädt nacheinander alle Seiten aus der Kategorie und bietet Auswahlmöglichkeiten zum Verändern der Kategorie.
category.py move -from:"Index einer Publikation" -to:"Offizieller Index"
- Script schiebt alle Artikel von einer Kategorie in eine andere. Praktisch wenn man Kategorien umbenennt.
category.py listify -from:"Programmieren" -to:"Benutzer:StipenTreublatt/Wiki Aventurica/StipBot/Testseite"
- Erstellt eine Liste der Artikel und Kategorien in Kategorie:Programmieren, die auf der Testseite gespeichert wird. Falls Seite schon vorhanden ist wird der Prozess abgebrochen.
category.py listify -overwrite -from:"Hörbuch" -to:"Benutzer:StipenTreublatt/Wiki Aventurica/StipBot/Testseite"
- Dasselbe, Liste wird allerdings ersetzt falls schon vorhanden.
category.py add
- Links from which page should be processed? Benutzer:StipenTreublatt/Wiki Aventurica/StipBot/Testseite
- Category to add (do not give namespace): Datei
- Von der angegebenen Seite werden alle Links gelesen. Man bekommt dann für jeden Artikel die Entscheidungsmöglichkeit, die angegebene Kategorie hinzuzufügen.
- BUG: Links auf Seiten im Namensraum "Bild:" werden nicht beachtet.
- Lösung: Standardnamensraum ist "Datei", Namensraum "Bild" muss in der WikiAventurica-family deklariert werden. Ebenso dann Bild Diskussion.
- BUG: Links auf Seiten im Namensraum "Bild:" werden nicht beachtet.
- Von der angegebenen Seite werden alle Links gelesen. Man bekommt dann für jeden Artikel die Entscheidungsmöglichkeit, die angegebene Kategorie hinzuzufügen.
category.py remove -from:"Soloabenteuer"
- Entfernt die Kategorie aus allen Seiten in der Kategorie.
- Nach Entfernen versucht sich das Script mit einem Sysop-account einzuloggen und fragt dann ob die Kategorie gelöscht werden soll.
category.py tree
- For which category do you want to create a tree view? Inoffiziell
- Please enter the name of the file where the tree should be saved, or press enter to simply show the tree: tree.txt
- Erstellt eine Baumansicht der gewählten Kategorie, wahlweise per Bildschirmausgabe oder als Ausdruck in eine Datei.
- Dateiausdruck funktioniert (mit tree.txt getestet, es wird ohne Nachfrage im Ordner pywikipediabot gespeichert)
- Bildschirmausdruck funktioniert leider nicht
- Erstellt eine Baumansicht der gewählten Kategorie, wahlweise per Bildschirmausgabe oder als Ausdruck in eine Datei.
Saving results in F:\Programme\Python25\pywikipediabot Dumping to category.dump.bz2, please wait... Traceback (most recent call last): File "F:\Programme\Python25\pywikipediabot\category.py", line 901, in <module> bot.run() File "F:\Programme\Python25\pywikipediabot\category.py", line 794, in run f = codecs.open(self.filename, 'a', 'utf-8') File "F:\Programme\Python25\lib\codecs.py", line 817, in open file = __builtin__.open(filename, mode, buffering) IOError: [Errno 13] Permission denied: 'F:\\Programme\\Python25\\pywikipediabot'
- Der Fehler ist seit r5551 behoben (siehe [1]) --Falk Steinhauer 22:28, 11. Nov. 2008 (CET)
Benutzer:FalkBot/CalculateAverage.py
CalculateAverage.py "-cat:Aventurischer Bote"
- Rechnet den Durchschnitt aller Bewertungsboxen in der Kategorie:Aventurischer Bote aus.