API:Tag
Bu sayfa MediaWiki Eylem API'si belgelerinin bir parçasıdır. |
POST isteği, tek tek düzeltmelere veya günlük girişlerine etiket eklemek veya bu girişlerden etiket kaldırmak için.
MediaWiki sürümü: | ≥ 1.25 |
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ı
- Tek tek düzeltmelerden veya günlük girişlerinden etiket eklemek veya kaldırmak için CSRF anahtarıyla bir POST isteği gönderin.
Aşağıdaki örnek kodlar bu adımları kapsar.
POST isteği
Spam etiketini
Wrongly applied
nedeni ile 123 numaralı günlük girişi kimliğinden kaldırın.api.php? action=tag& logid=123& remove=spam& reason=Wrongly+applied& token=123ABC [ApiSandbox'ta deneyin]
Yanıt
{
"tag": [
{
"logid": 123,
"status": "success",
"noop": ""
}
]
}
Örnek kod
Python
#!/usr/bin/python3
"""
tag.py
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
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 remove the spam tag from log entry ID 123
# with the reason Wrongly applied
PARAMS_4 = {
"token":CSRF_TOKEN,
"action":"tag",
"format":"json",
"logid":"123",
"remove":"spam",
"reason":"Wrongly applied"
}
R = S.post(URL, data=PARAMS_4)
DATA = R.text
print(DATA)
PHP
<?php
/*
tag.php
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
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
stashEdit( $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: 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 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 remove the spam tag from log entry ID 123
// with the reason Wrongly applied
function stashEdit( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "tag",
"format" => "json",
"token" => $csrftoken,
"logid" => "123",
"remove" => "spam",
"reason" => "Wrongly applied"
];
$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
/*
tag.js
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
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: 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;
}
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);
stashEdit(data.query.tokens.csrftoken);
});
}
// Step 4: remove the spam tag from log entry ID 123 with the reason Wrongly applied
function stashEdit(csrf_token) {
var params_3 = {
action: "compare",
format: "json",
token: csrf_token,
logid: "123",
remove: "spam",
reason: "Wrongly applied"
};
request.post({ url: url, form: params_3 }, function(error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
tag.js
MediaWiki API Demos
Demo of `Tag` module: Remove the spam tag from log entry ID 123 with the reason Wrongly
applied
MIT license
*/
var params = {
action: "compare",
format: "json",
token: csrf_token,
logid: "123",
remove: "spam",
reason: "Wrongly applied"
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
Olası hatalar
Kod | Bilgi |
---|---|
apierror-blocked | Düzenlemeniz engellendi. |
apierror-nosuchlogid | logid kimliğine sahip bir günlük girişi yok. |
apierror-nosuchrcid | rcid kimliğinde yeni bir değişiklik yok. |
apierror-nosuchrevid | revid kimliğine sahip bir düzeltme yok. |
Parametre geçmişi
- v1.29:
tags
tanıtıldı