Jump to content
MediaWiki

API:Přesun

From mediawiki.org
This page is a translated version of the page API:Move and the translation is 100% complete.
Tato stránka je součástí dokumentace k API Action MediaWiki.
Akce API MediaWiki
Základní informace
Přihlášení
Uživatelské účty a uživatelé
Operace spojené se stránkou
Vyhledávání
Nástroje pro vývojáře
Návody
v · d · u
Verze MediaWiki:
≥ 1.12

Požadavek POST pro přesun stránky.

Dokumentace API

Následující dokumentace je výstupem Special:ApiHelp/move, automaticky generovaným pre-release verzí MediaWiki, která je spuštěna na tomto webu (MediaWiki.org).

action=move

(main | 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.

Specific parameters:
Other general parameters are available.
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)
tags

Change tags to apply to the entry in the move log and to the null 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.

Příklad

Vytvoření jakéhokoli požadavku POST je proces složený z několika kroků:

  1. Přihlaste se jedním ze způsobů popsaných na stránce API:Přihlášení .
  2. GET CSRF token .
  3. 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

Přesunout "CurrentTitle" a jeho diskusní stránku na "Page with new title" bez vytvoření přesměrování.

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
"""
importrequests
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(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
move( $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 );
}
// 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
*/
varrequest=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
functiongetLoginToken(){
varparams_0={
action:"query",
meta:"tokens",
type:"login",
format:"json"
};
request.get({url:url,qs:params_0},function(error,res,body){
if(error){
return;
}
vardata=JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Krok 2: Požadavek POST na přihlášení. 
// Use of main account for login is not supported.
// Obtain credentials via Special:BotPasswords (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
functionloginRequest(login_token){
varparams_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
functiongetCsrfToken(){
varparams_2={
action:"query",
meta:"tokens",
format:"json"
};
request.get({url:url,qs:params_2},function(error,res,body){
if(error){
return;
}
vardata=JSON.parse(body);
move(data.query.tokens.csrftoken);
});
}
// Krok 4: Požadavek POST na přesun stránky
functionmove(csrf_token){
varparams_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
*/
varparams={
action:'move',
from:'Current title',
to:'Page with new title',
reason:'API Test',
movetalk:'1',
noredirect:'1',
format:'json'
},
api=newmw.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 noredirect vyžaduje právo suppressredirect , 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-code a talkmove-error-info.
    • Podstránka – příslušná chyba bude vrácena jako standardní struktura code/info pod klíčem subpages.

Související odkazy

  • API:Import - interwiki import umožňuje alternativní způsob přesouvání stránek v rámci wiki.

AltStyle によって変換されたページ (->オリジナル) /