API:Move/cs
| Tato stránka je součástí dokumentace k API Action MediaWiki. |
| Verze MediaWiki: | ≥ 1.12 |
Požadavek POST pro přesun stránky.
Dokumentace API
| Následující dokumentace je výstupem Special: |
action=move
- This module requires read rights.
- This module requires write rights.
- This module only accepts POST requests.
- Source: MediaWiki
- License: GPL-2.0-or-later
Move a page.
- from
Title of the page to rename. Cannot be used together with fromid.
- fromid
Page ID of the page to rename. Cannot be used together with from.
- Type: integer
- to
Title to rename the page to.
- This parameter is required.
- reason
Reason for the rename.
- Default: (empty)
- movetalk
Rename the talk page, if it exists.
- Type: boolean (details)
- movesubpages
Rename subpages, if applicable.
- Type: boolean (details)
- noredirect
Don't create a redirect.
- Type: boolean (details)
- watchlist
Unconditionally add or remove the page from the current user's watchlist, use preferences (ignored for bot users) or do not change watch.
- One of the following values: nochange, preferences, unwatch, watch
- Default: preferences
- watchlistexpiry
Watchlist expiry timestamp. Omit this parameter entirely to leave the current expiry unchanged.
- Type: expiry (details)
- ignorewarnings
Ignore any warnings.
- Type: boolean (details)
Change tags to apply to the entry in the move log and to the dummy revision on the destination page.
- Values (separate with | or alternative): AWB, convenient-discussions
- token
A "csrf" token retrieved from action=query&meta=tokens
- This parameter is required.
- Move Badtitle to Goodtitle without leaving a redirect.
- api.php?action=move&from=Badtitle&to=Goodtitle&token=123ABC&reason=Misspelled%20title&movetalk=&noredirect= [open in sandbox]
Příklad
Vytvoření jakéhokoli požadavku POST je proces složený z několika kroků:
- Přihlaste se jedním ze způsobů popsaných na stránce API:Přihlášení.
- GET CSRF token.
- Odešlete požadavek POST s tokenem CSRF, abyste provedli akci na stránce.
Níže uvedený ukázkový kód podrobně pokrývá poslední krok.
Požadavek POST
Odpověď
{
"move": {
"from": "CurrentTitle",
"to": "Page with new title",
"reason": "wrong title",
"talkfrom": "Talk:CurrentTitle",
"talkto": "Talk:Page with new title"
}
}
Ukázkový kód
Python
#!/usr/bin/python3
"""
move.py
Ukázky MediaWiki API
Ukázka modulu `Move`: Přesunutí stránky i s její diskusní stránkou bez přesměrování.
Licence MIT
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Krok 1: Získejte přihlašovací 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']
# Krok 2: Odešlete požadavek POST pro přihlášení. Pro tuto metodu přihlášení si nejprve získejte přihlašovací údaje na adrese https://www.test.wikipedia.org/wiki/Manual:Bot_passwords.
# Více informací o metodách přihlášení naleznete v https://www.mediawiki.org/wiki/API:Login.
PARAMS_2 = {
"action": "login",
"lgname": "user_name",
"lgpassword": "password",
"format": "json",
"lgtoken": LOGIN_TOKEN
}
R = S.post(URL, data=PARAMS_2)
DATA = R.json()
# Krok 3: Po přihlášení si získejte token CSRF
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"]
# Krok 4: Odešlete požadavek POST pro přesun stránky
PARAMS_4 = {
"action": "move",
"format": "json",
"from": "Current title",
"to": "Page with new title",
"reason": "Typo",
"movetalk": "1",
"noredirect": "1",
"token": CSRF_TOKEN
}
R = S.post(url=URL, data=PARAMS_4)
DATA = R.text
print(DATA)
PHP
<?php
/*
move.php
Ukázky MediaWiki API
Demo of `Move` module: Move a page with its talk page, without a redirect.
Licence MIT
*/
$endPoint = "https://test.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Krok 1
loginRequest( $login_Token ); // Krok 2
$csrf_Token = getCSRFToken(); // Krok 3
move( $csrf_Token ); // Krok 4
// Krok 1: Požadavek GET pro načtení přihlašovacího tokenu
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"];
}
// Krok 2: POST požadavek na přihlášení. Použití hlavního účtu pro přihlášení není podporováno.
// 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 );
}
// Krok 3: Požadavek GET pro načtení tokenu CSRF
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"];
}
// Krok 4: Požadavek POST na přesun stránky
function move( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "move",
"from" => "Current title",
"to" => "Page with new title",
"reason" => "API Testing",
"movetalk" => "1",
"noredirect" => "1",
"token" => $csrftoken,
"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
/*
move.js
Ukázky MediaWiki API
Demo of `Move` module: Move a page with its talk page, without a redirect.
Licence MIT
*/
var request = require('request').defaults({jar: true}),
url = "https://test.wikipedia.org/w/api.php";
// Krok 1: Požadavek GET pro načtení přihlašovacího tokenu
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);
});
}
// Krok 2: Požadavek POST na přihlášení.
// Použití hlavního účtu pro přihlášení není podporováno.
// 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();
});
}
// Krok 3: Požadavek GET pro načtení tokenu CSRF
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);
move(data.query.tokens.csrftoken);
});
}
// Krok 4: Požadavek POST na přesun stránky
function move(csrf_token) {
var params_3 = {
action: "move",
from: "Current title",
to: "Page with new title",
reason: "API Testing",
movetalk: "1",
noredirect: "1",
token: csrf_token,
format: "json"
};
request.post({ url: url, form: params_3 }, function (error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Začněte od kroku 1
getLoginToken();
MediaWiki JS
/*
move.js
Ukázky MediaWiki API
Demo of `Move` module: Move a page with its talk page, without a redirect.
Licence MIT
*/
var params = {
action: 'move',
from: 'Current title',
to: 'Page with new title',
reason: 'API Test',
movetalk: '1',
noredirect: '1',
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
Možné chyby
| Kód | Popis |
|---|---|
| nofrom | The from parameter must be set. |
| noto | The to parameter must be set. |
| notoken | The token parameter must be set. |
| cantmove-anon | Anonymous users can't move pages |
| cantmove | You don't have permission to přesunout tuto stránku. |
| cantmovefile | You don't have permission to přesunout tento soubor. Pokud je přesun souborů zcela zakázán, zobrazí se místo toho chyba immobilenamespace. |
| selfmove | Název je stejný; nelze stránku přesunout na sebe samu. |
| immobilenamespace | You tried to move pages from or to a namespace that is protected from moving |
| articleexists | The destination article already exists |
| redirectexists | $1 již existuje jako přesměrování a nelze ho smazat automaticky. Prosím, vyberte jiný název. |
| protectedpage | You don't have permission to perform this move |
| protectedtitle | The destination article has been protected from creation |
| nonfilenamespace | Nelze přesunout mimo jmenný prostor Soubor: |
| filetypemismatch | Nová přípona souboru neodpovídá jeho typu |
| mustbeposted | The move module requires a POST request. |
Historie parametrů
- v1.29: Představeno
tags - v1.17: Zastaralé
watch,unwatch - v1.17: Představeno
watchlist
Další poznámky
- Úspěšné použití parametru
noredirectvyžaduje právosuppressredirect, které je uděleno robotům a sysopům, nikoli běžným uživatelům. - Vytvoření přesměrování je výchozím chováním API. Pokud nemáte zadaný parametr
suppressredirect, API nevrátí chybu. Jednoduše vytvoří přesměrování. - Rozhraní Move API používá dvě další metody pro ošetření chyb, pokud se přesun stránky podařilo, ale přesun diskusní stránky nebo podstránky selhal:
- Diskusní stránka – příslušná chyba bude vrácena v polích
talkmove-error-codeatalkmove-error-info. - Podstránka – příslušná chyba bude vrácena jako standardní struktura
code/infopod klíčemsubpages.
- Diskusní stránka – příslušná chyba bude vrácena v polích
Související odkazy
- API:Import - interwiki import umožňuje alternativní způsob přesouvání stránek v rámci wiki.