API:移動

From MediaWiki.org
Jump to navigation Jump to search
This page is a translated version of the page API:Move and the translation is 56% complete.

Other languages:
Deutsch • ‎English • ‎dansk • ‎polski • ‎中文 • ‎日本語
MediaWiki バージョン: 1.12

ページを移動する POST リクエストです。

APIの説明文書


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.

Parameters:
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 or do not change watch.

One of the following values: watch, unwatch, preferences, nochange
Default: preferences
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):
token

A "csrf" token retrieved from action=query&meta=tokens

This parameter is required.

Making any POST request is a multi-step process:

  1. Log in, via one of the methods described on API:ログイン .
  2. GET a CSRF token .
  3. Send a POST request, with the CSRF token, to take action on a page.

The sample code below covers the final step in detail.

POST リクエスト

Move "CurrentTitle" and its talk page to "Page with new title", without creating a redirect.

レスポンス

{
    "move": {
        "from": "CurrentTitle",
        "to": "Page with new title",
        "reason": "wrong title",
        "talkfrom": "Talk:CurrentTitle",
        "talkto": "Talk:Page with new title"
    }
}

サンプル コード

move.py

#!/usr/bin/python3

"""
    move.py
    MediaWiki Action API Code Samples
    Demo of `Move` module: Move a page with its
    talk page, without a redirect.
    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 move the page
PARAMS_4 = {
    "action": "move",
    "format": "json",
    "from": "Current title",
    "to": "Page with new title",
    "reason": "wrong title",
    "movetalk": "1",
    "noredirect": "1",
    "token": CSRF_TOKEN
}

R = S.post(url=URL, data=PARAMS_4)
DATA = R.text

print(DATA)

起こりうるエラー

コード 情報
nofrom パラメーター from を設定してください。
noto パラメーター to を設定してください。
notoken パラメーター token を設定してください。
cantmove-anon Anonymous users can't move pages
cantmove このページの移動に必要な権限がありません。
cantmovefile このファイルの移動に必要な権限がありません。
If file moving is disabled altogether, you'll get an immobilenamespace error instead
selfmove Can't move a page to itself
immobilenamespace You tried to move pages from or to a namespace that is protected from moving
articleexists The destination article already exists and is not a redirect to the source article
protectedpage You don't have permission to perform this move
protectedtitle The destination article has been protected from creation
nonfilenamespace ファイルを、ファイル名前空間以外に移動させることはできません
filetypemismatch 新しいファイルの拡張子がファイルのタイプと一致していません
mustbeposted The move module requires a POST request.

パラメーターの履歴

  • v1.29: tags を導入しました
  • v1.17: watch, unwatch を廃止予定にしました
  • v1.17: watchlist を導入しました

追加的な注記

  • Successful use of the noredirect parameter requires the suppressredirect right, which is granted to bots and sysops, not ordinary users.
  • Creating a redirect is the API's default behavior. If you do not have the suppressredirect right, the API will not return an error; it will simply create a redirect.
  • The Move API uses two additional error handling methods when the page move succeeded, but the talk page or subpage move failed:
    • トーク ページ - The relevant error will be returned in the talkmove-error-code and talkmove-error-info fields.
    • 下位ページ - The relevant error will be returned as a standard code/info structure under the subpages key.

関連項目

  • API:取り込み - interwiki imports allow for an alternate way to move pages around a wiki.