Jump to content

API:巡回

From mediawiki.org
This page is a translated version of the page API:Patrol and the translation is 63% complete.
MediaWiki バージョン:
1.14

ページまたは版を巡回済みにする POST リクエストです。

APIの説明文書

action=patrol

(main | patrol)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Patrol a page or revision.

Specific parameters:
Other general parameters are available.
rcid

Recentchanges ID to patrol.

Type: integer
revid

Revision ID to patrol.

Type: integer
tags

Change tags to apply to the entry in the patrol log.

Values (separate with | or alternative): AWB, convenient-discussions
token

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

This parameter is required.


Patrolling a request is a multi-step process:

  1. Log in, via one of the methods described on API:ログイン .
  2. GET a patrol token . This token is the same for all pages, but changes at every login.
  3. Send a POST request, with the patrol token, to patrol a request.

The sample code below covers the final step in detail.

POST リクエスト

rcid 437659の最近の更新を巡回します。

レスポンス

{
  "patrol": {
    "rcid": 437659,
    "ns": 0,
    "title": "Sandbox"
  }
}

サンプル コード

Python

#!/usr/bin/python3

"""
    patrol.py

    MediaWiki API Demos
    Demo of `Patrol` module: Patrol a recent change
    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 bot 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": "username",
    "lgpassword": "password",
    "format": "json",
    "lgtoken": LOGIN_TOKEN
}

R = S.post(URL, data=PARAMS_2)
DATA = R.json()

# Step 3: While logged in, retrieve a patrol token
PARAMS_3 = {
    "action": "query",
    "meta": "tokens",
    "type":"patrol",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()

PATROL_TOKEN = DATA["query"]["tokens"]["patroltoken"]

# Step 4: Send a POST request to patrol a recent change
PARAMS_4 = {
    "action": "patrol",
    "format": "json",
    "rcid":"437659",
    "token": PATROL_TOKEN
}

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

print(DATA)

PHP

<?php

/*
    patrol.php

    MediaWiki API Demos
	Demo of `Patrol` module: Patrol a recent change

    MIT license
*/

$endPoint = "https://test.wikipedia.org/w/api.php";

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$patrol_Token = getPatrolToken(); // Step 3
patrol( $patrol_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 Patrol token
function getPatrolToken() {
	global $endPoint;

	$params3 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "patrol",
		"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"]["patroltoken"];
}

// Step 4: POST request to patrol a recent change
function patrol( $patroltoken ) {
	global $endPoint;

	$params4 = [
		"action" => "patrol",
		"rcid" => "91",
		"token" => $patroltoken,
		"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

/*  
    patrol.js
 
    MediaWiki API Demos
    Demo of `Patrol` module: Patrol a recent change

    MIT license
*/

var request = require('request').defaults({jar: true}),
    url = "http://dev.wiki.local.wmftest.net:8080/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;
        }
        getPatrolToken();
    });
}

// Step 3: GET request to fetch Patrol token
function getPatrolToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        type: "patrol",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        patrol(data.query.tokens.patroltoken);
    });
}

// Step 4: POST request to patrol a recent change
function patrol(patrol_token) {
    var params_3 = {
        action: "patrol",
        rcid: "104",
        token: patrol_token,
        format: "json"
    };

    request.post({ url: url, form: params_3 }, function (error, res, body) {
        if (error) {
            return;
        }
        console.log(body);
    });
}

// Start From Step 1
getLoginToken();

MediaWiki JS

/*
	patrol.js

	MediaWiki API Demos
	Demo of `Patrol` module: Patrol a recent change

	MIT License
*/

var params = {
		action: 'patrol',
		revid: '77',
		format: 'json'
	},
	api = new mw.Api();

api.postWithToken( 'patrol', params ).done( function ( data ) {
	console.log( data );
} );

起こりうるエラー

コード 情報
patroldisabled このウィキでは巡回が無効化されています
noautopatrol あなたには自分の編集を巡回済みにする権限がありません。
autopatrol権限を持つ利用者のみがこれを行うことができます
notpatrollable The revision rid can't be patrolled as it's too old.
nosuchrcid There is no recent change with ID rcid.
nosuchrevid There is no revision with ID revid.

パラメーターの履歴

  • v1.27: tags を導入しました
  • v1.22: revid を導入しました

追加的な注記

  • For MediaWiki versions earlier than 1.17, the patrol token is the same the edit token.
  • autopatrol rights are required in order to use this module.