API:Patrolowanie
Ta strona jest częścią dokumentacji API akcji MediaWiki. |
Wersja MediaWiki: | ≥ 1.14 |
POST request to patrol a page or a revision.
Dokumentacja API
Przykład
Patrolling a request is a multi-step process:
- Log in, via one of the methods described on API:Logowanie .
- GET a patrol token . This token is the same for all pages, but changes at every login.
- Send a POST request, with the patrol token, to patrol a request.
The sample code below covers the final step in detail.
Żądanie POST
Patrolling a recent change of
rcid
437659.
Odpowiedź
{
"patrol": {
"rcid": 437659,
"ns": 0,
"title": "Sandbox"
}
}
Przykładowy kod
Python
#!/usr/bin/python3
"""
patrol.py
MediaWiki API Demos
Demo of `Patrol` module: Patrol a recent change
MIT license
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Step 1: Retrieve a login token
PARAMS_1 = {
"action": "query",
"meta": "tokens",
"type": "login",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_1)
DATA = R.json()
LOGIN_TOKEN = DATA['query']['tokens']['logintoken']
# Step 2: Send a POST request to log in. For this login
# method, obtain bot credentials by first visiting
# https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
# See https://www.mediawiki.org/wiki/API:Login for more
# information on log in methods.
PARAMS_2 = {
"action": "login",
"lgname": "username",
"lgpassword": "password",
"format": "json",
"lgtoken": LOGIN_TOKEN
}
R = S.post(URL, data=PARAMS_2)
DATA = R.json()
# Step 3: While logged in, retrieve a patrol token
PARAMS_3 = {
"action": "query",
"meta": "tokens",
"type":"patrol",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()
PATROL_TOKEN = DATA["query"]["tokens"]["patroltoken"]
# Step 4: Send a POST request to patrol a recent change
PARAMS_4 = {
"action": "patrol",
"format": "json",
"rcid":"437659",
"token": PATROL_TOKEN
}
R = S.post(url=URL, data=PARAMS_4)
DATA = R.json()
print(DATA)
PHP
<?php
/*
patrol.php
MediaWiki API Demos
Demo of `Patrol` module: Patrol a recent change
MIT license
*/
$endPoint = "https://test.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$patrol_Token = getPatrolToken(); // Step 3
patrol( $patrol_Token ); // Step 4
// Step 1: GET request to fetch login token
function getLoginToken() {
global $endPoint;
$params1 = [
"action" => "query",
"meta" => "tokens",
"type" => "login",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params1 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["logintoken"];
}
// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
global $endPoint;
$params2 = [
"action" => "login",
"lgname" => "bot_user_name",
"lgpassword" => "bot_password",
"lgtoken" => $logintoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
}
// Step 3: GET request to fetch Patrol token
function getPatrolToken() {
global $endPoint;
$params3 = [
"action" => "query",
"meta" => "tokens",
"type" => "patrol",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params3 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["patroltoken"];
}
// Step 4: POST request to patrol a recent change
function patrol( $patroltoken ) {
global $endPoint;
$params4 = [
"action" => "patrol",
"rcid" => "91",
"token" => $patroltoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
echo ( $output );
}
JavaScript
/*
patrol.js
MediaWiki API Demos
Demo of `Patrol` module: Patrol a recent change
MIT license
*/
var request = require('request').defaults({jar: true}),
url = "http://dev.wiki.local.wmftest.net:8080/w/api.php";
// Step 1: GET request to fetch login token
function getLoginToken() {
var params_0 = {
action: "query",
meta: "tokens",
type: "login",
format: "json"
};
request.get({ url: url, qs: params_0 }, function (error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Step 2: POST request to log in.
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
var params_1 = {
action: "login",
lgname: "bot_username",
lgpassword: "bot_password",
lgtoken: login_token,
format: "json"
};
request.post({ url: url, form: params_1 }, function (error, res, body) {
if (error) {
return;
}
getPatrolToken();
});
}
// Step 3: GET request to fetch Patrol token
function getPatrolToken() {
var params_2 = {
action: "query",
meta: "tokens",
type: "patrol",
format: "json"
};
request.get({ url: url, qs: params_2 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
patrol(data.query.tokens.patroltoken);
});
}
// Step 4: POST request to patrol a recent change
function patrol(patrol_token) {
var params_3 = {
action: "patrol",
rcid: "104",
token: patrol_token,
format: "json"
};
request.post({ url: url, form: params_3 }, function (error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
patrol.js
MediaWiki API Demos
Demo of `Patrol` module: Patrol a recent change
MIT License
*/
var params = {
action: 'patrol',
revid: '77',
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'patrol', params ).done( function ( data ) {
console.log( data );
} );
Możliwe błędy
In addition to the standard error messages :
Kod | Info |
---|---|
patroldisabled | Patrolowanie jest wyłączone na tej wiki |
noautopatrol | Nie masz uprawnień wymaganych do oznaczania swoich edycji jako „sprawdzone”. Tylko użytkownicy z uprawnieniem
autopatrol mogą to robić |
notpatrollable | The revision rid can't be patrolled as it's too old. |
nosuchrcid | There is no recent change with ID rcid. |
nosuchrevid | Nie ma wersji z identyfikatorem revid. |
Historia zmian parametrów
- v1.27: Wprowadzono
tags
- v1.22: Wprowadzono
revid
Dodatkowe informacje
- For MediaWiki versions earlier than 1.17, the patrol token is the same the edit token.
autopatrol
rights are required in order to use this module.
revid
andrcid
may be obtained through API:Recentchanges .