API:Revisiondelete
Esta página es parte de la documentación de la API de acciones de MediaWiki. |
Solicitud POST para eliminar y recuperar revisiones.
Versión de MediaWiki: | ≥ 1.23 |
API Documentación
Ejemplo
Hacer cualquier petición de CORREO es un proceso de múltiples-pasos:
- Inicia sesión, a través de uno de los métodos descritos en API:Login .
- GET un edit/CSRF token como muestra aquí API:Tokens
- Envía una solicitud POST, con el token CSRF, para eliminar y recuperar revisiones.
El código de muestra, abajo, cubre estos pasos.
Solicitud POST
Ocultar toda la información sobre una determinada revisión ID. (El objetivo, Página de Muestra, es innecesario en este caso.)
api.php? action=revisiondelete& type=revision& ids=71& hide=content|comment|user& reason=Because& token=feef47c29c326a3449f573576056b72d5e2159ea%2B%5C [Prueba en ApiSandbox]
Respuesta
{
"revisiondelete": {
"status": "Success",
"target": "Sample Page",
"items": [
{
"status": "Success",
"id": 71,
"timestamp": "2016-12-17T03:16:23Z",
"userhidden": "",
"commenthidden": "",
"texthidden": "",
"userid": 4,
"user": "Test User",
"comment": "This should get revdel'd"
}
]
}
Código de muestra
Python
#!/usr/bin/python3
"""
revision_delete.py
MediaWiki API Demos
Demo of `Revisiondelete` module: Hide all information about a certain revision ID.
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 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": "user_name",
"lgpassword": "password",
"format": "json",
"lgtoken": LOGIN_TOKEN
}
R = S.post(URL, data=PARAMS_2)
DATA = R.json()
# Step 3: While logged in, retrieve a CSRF token
PARAMS_3 = {
"action": "query",
"meta": "tokens",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()
CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"]
# Step 4: Send a POST request to hide all information about a certain revision ID.
PARAMS_4 = {
"action":"revisiondelete",
"type":"revision",
"ids":"71",
"format":"json",
"hide":"content|comment|user",
"reason":"Because",
"token" : CSRF_TOKEN
}
R = S.post(URL, data=PARAMS_4)
DATA = R.text
print(DATA)
PHP
<?php
/*
revision_delete.php
MediaWiki API Demos
Demo of `Revisiondelete` module: Hide all information about a certain revision ID.
MIT license
*/
$endPoint = "https://test.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
mergehistory( $csrf_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: Send a POST request to log in. For this login
// method, obtain 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.
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 CSRF token
function getCSRFToken() {
global $endPoint;
$params3 = [
"action" => "query",
"meta" => "tokens",
"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"]["csrftoken"];
}
# Step 4: Send a POST request to hide all information about a certain revision ID.
function mergeHistory( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "revisiondelete",
"type" => "revision",
"ids" => "71",
"format" => "json",
"hide" => "content|comment|user",
"reason" => "Because",
"token" => $csrftoken
];
$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" );
$response = curl_exec($ch);
curl_close($ch);
echo ($response);
}
JavaScript
/*
revision_delete.js
MediaWiki API Demos
Demo of `Revisiondelete` module: Hide all information about a certain revision ID.
MIT license
*/
var request = require("request").defaults({jar: true}),
url = "https://test.wikipedia.org/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: Send a POST request to log in. For this login
// method, obtain 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.
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;
}
getCsrfToken();
});
}
// Step 3: GET request to fetch CSRF token
function getCsrfToken() {
var params_2 = {
action: "query",
meta: "tokens",
format: "json"
};
request.get({ url: url, qs: params_2 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
mergeHistory(data.query.tokens.csrftoken);
});
}
// Step 4: Send a POST request to hide all information about a certain revision ID.
function mergeHistory(csrf_token) {
var params_3 = {
action:"revisiondelete",
type:"revision",
ids:"71",
format:"json",
hide:"content|comment|user",
reason:"Because",
token: csrf_token
};
request.post({ url: url, form: params_3 }, function(error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
revision_delete.js
MediaWiki API Demos
Demo of `Revisiondelete` module: Hide all information about a certain revision ID.
MIT license
*/
var params = {
action: 'revisiondelete',
type: 'revision',
ids: '71',
format: 'json',
hide: 'content|comment|user',
reason: 'Because',
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
Errores posibles
Código | Info |
---|---|
badtoken | La ficha CSRF no es válida. |
permissiondenied | You don't have permission to delete revisions |
paramempty | El parámetro ids no puede estar vacío. |
revdel-mutuallyexclusive | No se puede usar el mismo campo en hide y show. |
revdel-paramneeded | Se requiere al menos un valor para hide y/o show. |
revdel-needtarget | A target title is required for this RevDel type. |
Historial de parámetros
- v1.29: Introducido
tags
Véase también
- Manual:RevisionDelete - Para mostrar y esconder revisiones de página individual.
- Ayuda:Borrado de revisiones - Para esconder entradas individuales en un historial de página o registro.
- API:Deletedrevs - Parámetros API utilizados para listar revisiones eliminadas.
- API:Deletedrevisions - Para conseguir información de revisión eliminada.