Benutzer:Schnark/js/autoedit
Das Skript Benutzer:Schnark/js/autoedit.js
stellt Funktionen zur Verfügung, mit denen man in einem Skript mehr oder weniger automatisch Seiten bearbeiten kann.
Die Funktionen liegen alle im Objekt mw.libs.autoedit
. Im Zweifelsfall ist dem Quellcode mehr Glauben zu schenken als dieser Dokumentation. Einige Funktionen funktionieren im Interface-Modus nicht, andere sind überhaupt nicht getestet.
Einzelne Bearbeitungen
[Bearbeiten | Quelltext bearbeiten]Alle Funktionen für eine einzelne Bearbeitungen erwarten ein JSON-Objekt als Parameter, das festlegt, was getan werden soll. Folgende Eigenschaften dieses Objekts gelten für alle Funktionen:
Parameter | Typ | Standardwert | Bedeutung | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
title |
string |
aktuelle Seite | Name der betroffenen Seite | ||||||||
aktuelle Seite (ohne Namensraum) | Name des betroffenen Benutzers | ||||||||||
summary |
string |
Pflichtparameter | Bearbeitungskommentar etc. | ||||||||
method |
string |
'interface' |
'interface' für eine Bearbeitung über das normale Interface (erfordt meist Abspeichern von Hand), 'API' für eine Bearbeitung über die API
| ||||||||
newwindow |
number |
0 |
| ||||||||
callback |
function |
keine Callback-Funktion | Callback-Funktion, die mit dem Status als erstem und dem Titel als zweitem Parameter aufgerufen wird
|
Zurückgegeben wird false
bei einem falschen Aufruf, sonst true
.
Statt eine Funktion direkt aufzurufen kann man auch die edit
-Funktion aufrufen und zusätzlich edit
auf den Namen der eigentlich gewünschten Funktion setzen.
edit
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.edit
bearbeitet einzelne Seiten. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:
Parameter | Typ | Standardwert | Bedeutung | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
section |
number |
gesamter Artikel | Nummer des zu bearbeitenden Abschnitts | ||||||||
string |
'new' für neuen Abschnitt, 'last' für letzten Abschnitt, 'T-n' für den n-ten transkludierten Abschnitt
| ||||||||||
object |
{title: 'Foo' [, count: 2]} Abschnitt namens Foo [und zwar der zweite], {number: '1.2.3'} Abschnitt mit Nummer 1.2.3
| ||||||||||
change |
string |
Pflichtparameter | Text, der dem vorhandenen Text vorangestellt wird (bzw. neuer Text, falls bisher keiner vorhanden) | ||||||||
function |
Funktion, die mit dem alten Text aufgerufen wird (Leerstring, falls bisher keiner vorhanden) und den neuen Text zurückliefert oder false zum Abbruch
| ||||||||||
minor |
boolean |
false |
kleine Änderung? | ||||||||
action |
string |
'wpDiff' |
Falls über das Interface bearbeitet wird, wird die Seite mit den Änderungen …
| ||||||||
create |
boolean |
false |
soll die Seite erstellt werden, wenn sie nicht existiert? | ||||||||
transcluded |
boolean |
false |
soll eine andere Seite bearbeitet werden, wenn der angeforderte Abschnitt von einer anderen Seite stammt? |
Für die Callback-Funktion sind folgende Status zusätzlich möglich:
Status | Bedeutung |
---|---|
'missing' |
Seite nicht vorhanden, create == false
|
'missingsection' |
Abschnitt nicht vorhanden |
'transcluded' |
Abschnitt wird von anderer Seite eingebunden, transcluded == false , dritter Parameter ist der Name dieser Seite, vierter die Nummer des Abschnitts (mit führendem T-)
|
'nochange' |
change gab false zurück, dritter Parameter ist der alte Text
|
del
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.del
löscht eine Seite.
block
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.block
(ent-)sperrt einen Benutzer. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
expiry |
string |
'infinite' |
Sperrdauer ('unblock' zum Entsperren)
|
anononly |
boolean |
true |
nur unangemeldete Benutzer sperren |
nocreate |
boolean |
false |
Erstellung von Benutzerkonten verhindern |
autoblock |
boolean |
false |
Autoblock einsetzen |
noemail |
boolean |
false |
E-Mail-Versand blockieren |
allowusertalk |
boolean |
true |
Schreibzugriff auf Diskussionsseite zulassen |
watchuser |
boolean |
true |
Benutzer beobachten |
protect
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.protect
(ent-)schützt eine Seite. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
expiry |
string |
'infinite' |
Sperrdauer ('unprotect' zum Entsperren)
|
protections |
string |
'edit=autoconfirmed|move=autoconfirmed' |
Sperroptionen in der Form Art=Level , Pipe-separiert, 'move' steht für 'move=sysop' , 'sysop' für 'edit=sysop|move=sysop'
|
cascade |
boolean |
false |
Kaskadensperre |
move
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.move
verschiebt eine Seite. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
to |
string |
Pflichtparameter | Zielseite |
movetalk |
boolean |
true |
Diskussionsseite mitverschieben |
movesubpages |
boolean |
false |
Unterseiten mitverschieben |
noredirect |
boolean |
false |
Weiterleitung unterdrücken |
Die Funktion mw.libs.autoedit.mail
schickte eine Email an einen Benutzer. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
text |
string |
Pflichtparameter | Text der E-Mail |
ccme |
boolean |
false |
Kopie an sich selbst verschicken |
revert
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.revert
revertiert eine Änderung. Zusätzlich zu den obigen Parametern gibt es noch die folgenden:
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
revert |
object |
Pflichtparameter | siehe unten |
forceapi |
boolean |
false |
bei method == 'API' Benutzung der API erzwingen, verhindert automatische Sichtung
|
Über revert
wird ein Objekt angegeben, das festlegt, was revertiert werden soll (genau einer der folgenden Parameter als Eigenschaft):
Parameter | Inhalt | Bedeutung |
---|---|---|
rollback |
Name des zurückzusetzenden Benutzers | führt ein Rollback durch, erfordt das Rollback-Recht, speichert automatisch |
fakerollback |
Name des zurückzusetzenden Benutzers | simuliert ein Rollback |
reset |
Versionsnummer | setzt auf alte Version zurück |
undo |
Versionsnummer | revertiert diese Änderung bzw. alle bis undoafter
|
Mehrere Bearbeitungen
[Bearbeiten | Quelltext bearbeiten]massedit
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.massedit
bearbeitet eine Reihe von Seiten. Bevor du damit einen Bot betreibst, liest du dir WP:BOT durch und sagst mir Bescheid.
Die Parameter sind in dieser Reihenfolge
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
titles |
array |
Pflichtparameter | Liste der Titel, die bearbeitet werden sollen |
param |
object |
Pflichtparameter | Objekt wie für edit , title und callback werden automatisch gesetzt, wird für method ein von 'API' (Standard) abweichender Wert gewählt, muss newwindow auf > 0 gesetzt werden
|
function |
Funktion, die mit dem Titel aufgerufen wird und ein Objekt wie oben zurückliefert | ||
callback |
function |
keine Callback-Funktion | wird mit der Anzahl aller Titel, der Anzahl der erfolgreichen Bearbeitungen, einem Array der fehlgeschlagenen Bearbeitungen und einem Objekt der Form {'Titel': 'status'} aufgerufen
|
delay |
number |
12 | Zeit in Sekunden zwischen zwei Bearbeitungen |
Um zu funktionieren muss jquery.async
eingebunden werden, etwa durch mw.loader.using('jquery.async', meine_tolle_funktion_die_dann_loslegt);
.
edit_series
[Bearbeiten | Quelltext bearbeiten]Die Funktion mw.libs.autoedit.edit_series
bearbeitet eine Reihe von Seiten nacheinanber, beim ersten Fehler wird abgebrochen. Gedacht ist dies etwa für das Einfügen eines Löschantrags im Artikel, dem Eintrag auf der aktuellen LA-Seite und der Benachrichtigung des Erstellers.
Die Parameter sind in dieser Reihenfolge
Parameter | Typ | Standardwert | Bedeutung |
---|---|---|---|
params |
array |
Pflichtparameter | Liste der Parameter in JSON-Notation für autoedit.edit
|
autosave |
boolean |
Pflichtparameter | sollen alle Bearbeitungen automatisch gespeichert werden? |
array |
Liste mit dieser Entscheidung für jede Seite aus params einzeln
| ||
callback |
function |
keine Callback-Funktion | wird mit dem Resultat der letzten Bearbeitung und der Anzahl aller Bearbeitungen aufgerufen |
replace_last |
boolean |
false |
letzte Bearbeitung wird im aktuellen Fenster durchgeführt, Callback-Funktion wird im Erfolgsfall dann nicht aufgerufen |
Quick&Dirty-Lösung um mehreren Benutzern eine Nachricht zu hinterlassen
[Bearbeiten | Quelltext bearbeiten]Das Skript kann verwendet werden, wenn man schnell einer größeren Anzahl von Benutzern einen Hinweis auf die Diskussionsseite setzen möchte:
- 1. Aktiviere in deinen Einstellungen die neue Werkzeugleiste.
- 2. Öffne Spezial:Meine Benutzerseite/völlig beliebiger Name.js zum Bearbeiten.
- 3. Kopiere den Quelltext von Benutzer:Schnark/js/autoedit.js dort hin.
- 4. Füge am Ende vor der Zeile
})(jQuery);
folgenden Code ein:
var list = ['PASS', 'MICH', 'AN'];
for (var i = 0; i < list.length; i++) {
list[i] = 'Benutzer Diskussion:' + list[i];
}
var title = 'PASS MICH AN';
var text = 'Hallo {{ers:SEITENNAME}}!\nPASS MICH AN Viele Grüße --~~~~';
autoedit.massedit(list, {change: text, section: 'new', summary: title, create: true})
- Dabei sollte
list
die Benutzernamen (ohneBenutzer:
oderBenutzer Diskussion:
enthalten,title
die Betreffzeile undtext
den Text.
- Dabei sollte
- 5. Klicke auf Vorschau.
- 6. Warte. In einem anderen Tab kannst du deine eigenen Beiträge nachverfolgen. Sobald das Skript alle Benutzer informiert hat, kannst du das Tab ohne zu speichern schließen.
Alternativen
[Bearbeiten | Quelltext bearbeiten]Alternativen zu meinem Skript sind Benutzer:D/monobook/api.js und Benutzer:Ireas/düp-helperfunctions-monobook.js.
Code
[Bearbeiten | Quelltext bearbeiten]Der Javascript-Code befindet sich unter Benutzer:Schnark/js/autoedit.js und wird in Benutzer:Schnark/js/autoantraege.js verwendet.