API:Revisiondelete
Bu sayfa MediaWiki Eylem API'si belgelerinin bir parçasıdır. |
Revizyonları silmek ve geri almak için POST isteği.
MediaWiki sürümü: | ≥ 1.23 |
API belgesi
Örnek
Herhangi bir POST isteği yapmak çok adımlı bir işlemdir:
- API:Oturum aç üzerinde açıklanan yöntemlerden biriyle oturum açın.
- API:Tokens burada gösterildiği gibi bir GET düzenlemesi/CSRF anahtarı
- Revizyonları silmek ve geri almak için CSRF anahtarıyla bir POST isteği gönderin.
Aşağıdaki örnek kodlar bu adımları kapsar.
POST isteği
Belirli bir düzeltme kimliğiyle ilgili tüm bilgileri gizleyin. (Hedef, Örnek Sayfa, bu durumda gereksizdir.)
api.php? action=revisiondelete& type=revision& ids=71& hide=content|comment|user& reason=Because& token=feef47c29c326a3449f573576056b72d5e2159ea%2B%5C [ApiSandbox'ta deneyin]
Yanıt
{
"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"
}
]
}
Örnek kod
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 );
} );
Olası hatalar
Kod | Bilgi |
---|---|
badtoken | Geçersiz CSRF anahtarı. |
permissiondenied | You don't have permission to delete revisions |
paramempty | ids parametresi boş olmayabilir. |
revdel-mutuallyexclusive | Aynı alan hem hide hem de show kullanılamaz. |
revdel-paramneeded | hide ve/veya show için en az bir değer gerekir. |
revdel-needtarget | Bu RevDel türü için bir hedef başlığı gerekir. |
Parametre geçmişi
- v1.29:
tags
tanıtıldı
Ayrıca bakınız
- Manual:RevisionDelete - Tek tek sayfa revizyonları göstermek ve gizlemek için.
- Help:RevisionDelete - Bir sayfa geçmişindeki veya günlükteki tek tek girişleri gizlemek için.
- API:Deletedrevs - Silinen revizyonları listelemek için kullanılan API parametreleri.
- API:Deletedrevisions - Silinen revizyon bilgilerini almak için.