API:Revisiondelete
Appearance
Cette page fait partie de la documentation de l'API MediaWiki Action. |
Requête POST pour supprimer et rétablir les révisions.
Version de MediaWiki : | ≥ 1.23 |
Documentation de l'API
Exemple
Toute requête POST est un processus en plusieurs étapes :
- Connectez-vous, via l'une des méthodes décrites sur API:Authentification .
- GET an edit/CSRF token as shown here API:Tokens
- Send a POST request, with the CSRF token, to delete and undelete revisions.
The sample codes below cover these steps.
Requête POST
Masquer toutes les informations concernant une révision donnée. (La cible, la page Sample, sont nécessaires dans ce cas.)
api.php? action=revisiondelete& type=revision& ids=71& hide=content|comment|user& reason=Because& token=feef47c29c326a3449f573576056b72d5e2159ea%2B%5C [Essayez !]
Réponse
{
"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"
}
]
}
Exemple de code
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 );
} );
Erreurs possibles
Code | Info |
---|---|
badtoken | Jeton CSRF non valide. |
permissiondenied | You don't have permission to delete revisions |
paramempty | Le paramètre ids ne peut pas être vide. |
revdel-mutuallyexclusive | Le même champ ne peut pas être utilisé à la fois pour hide et show. |
revdel-paramneeded | Au moins une valeur est nécessaire pour hide et/ou show. |
revdel-needtarget | Un titre cible est nécessaire pour ce type RevDel. |
Historique des paramètres
- v1.29: Ajouté
tags
Voir aussi
- Suppression des révisions - To show and hide individual page revisions.
- Aide:Suppression de révision - To hide individual entries in a page history or log.
- API:Deletedrevs - API parameters used for listing deleted revisions.
- API:Deletedrevisions - To get deleted revision information.