Jump to content

API:已删除修订

From mediawiki.org
This page is a translated version of the page API:Deletedrevisions and the translation is 100% complete.

使用GET请求来获取已删除修订信息。

MediaWiki版本:
1.25

API帮助文档

prop=deletedrevisions (drv)

(main | query | deletedrevisions)
  • This module requires read rights.
  • This module can be used as a generator.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Get deleted revision information.

May be used in several ways:

  1. Get deleted revisions for a set of pages, by setting titles or pageids. Ordered by title and timestamp.
  2. Get data about a set of deleted revisions by setting their IDs with revids. Ordered by revision ID.
Specific parameters:
Other general parameters are available.
drvprop

Which properties to get for each revision:

ids
The ID of the revision.
flags
Revision flags (minor).
timestamp
The timestamp of the revision.
user
User that made the revision. If the user has been revision deleted, a userhidden property will be returned.
userid
User ID of the revision creator. If the user has been revision deleted, a userhidden property will be returned.
size
Length (bytes) of the revision.
slotsize
Length (bytes) of each revision slot.
sha1
SHA-1 (base 16) of the revision. If the content has been revision deleted, a sha1hidden property will be returned.
slotsha1
SHA-1 (base 16) of each revision slot. If the content has been revision deleted, a sha1hidden property will be returned.
contentmodel
Content model ID of each revision slot.
comment
Comment by the user for the revision. If the comment has been revision deleted, a commenthidden property will be returned.
parsedcomment
Parsed comment by the user for the revision. If the comment has been revision deleted, a commenthidden property will be returned.
content
Content of each revision slot. If the content has been revision deleted, a texthidden property will be returned. For performance reasons, if this option is used, drvlimit is enforced to 50.
tags
Tags for the revision.
roles
List content slot roles that exist in the revision.
parsetree
Deprecated. Use action=expandtemplates or action=parse instead. The XML parse tree of revision content (requires content model wikitext). For performance reasons, if this option is used, drvlimit is enforced to 50.
Values (separate with | or alternative): comment, content, contentmodel, flags, ids, parsedcomment, roles, sha1, size, slotsha1, slotsize, tags, timestamp, user, userid, parsetree
Default: ids|timestamp|flags|comment|user
drvslots

Which revision slots to return data for, when slot-related properties are included in drvprops. If omitted, data from the main slot will be returned in a backwards-compatible format.

Values (separate with | or alternative): main
To specify all values, use *.
drvcontentformat-{slot}

Content serialization format used for output of content.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of drvslots.
One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
drvlimit

Limit how many revisions will be returned. If drvprop=content, drvprop=parsetree, drvdiffto or drvdifftotext is used, the limit is 50. If drvparse is used, the limit is 1.

Type: integer or max
The value must be between 1 and 500.
drvexpandtemplates
Deprecated.

Use action=expandtemplates instead. Expand templates in revision content (requires drvprop=content).

Type: boolean (details)
drvgeneratexml
Deprecated.

Use action=expandtemplates or action=parse instead. Generate XML parse tree for revision content (requires drvprop=content).

Type: boolean (details)
drvparse
Deprecated.

Use action=parse instead. Parse revision content (requires drvprop=content). For performance reasons, if this option is used, drvlimit is enforced to 1.

Type: boolean (details)
drvsection

Only retrieve the content of the section with this identifier.

drvdiffto
Deprecated.

Use action=compare instead. Revision ID to diff each revision to. Use prev, next and cur for the previous, next and current revision respectively. For performance reasons, if this option is used, drvlimit is enforced to 50.

drvdifftotext
Deprecated.

Use action=compare instead. Text to diff each revision to. Only diffs a limited number of revisions. Overrides drvdiffto. If drvsection is set, only that section will be diffed against this text. For performance reasons, if this option is used, drvlimit is enforced to 50.

drvdifftotextpst
Deprecated.

Use action=compare instead. Perform a pre-save transform on the text before diffing it. Only valid when used with drvdifftotext.

Type: boolean (details)
drvcontentformat
Deprecated.

Serialization format used for drvdifftotext and expected for output of content.

One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
drvstart

The timestamp to start enumerating from. Ignored when processing a list of revision IDs.

Type: timestamp (allowed formats)
drvend

The timestamp to stop enumerating at. Ignored when processing a list of revision IDs.

Type: timestamp (allowed formats)
drvdir

In which direction to enumerate:

newer
List oldest first. Note: drvstart has to be before drvend.
older
List newest first (default). Note: drvstart has to be later than drvend.
One of the following values: newer, older
Default: older
drvtag

Only list revisions tagged with this tag.

drvuser

Only list revisions by this user.

Type: user, by any of username, IP, Temporary user, interwiki name (e.g. "prefix>ExampleName") and user ID (e.g. "#12345")
drvexcludeuser

Don't list revisions by this user.

Type: user, by any of username, IP, Temporary user, interwiki name (e.g. "prefix>ExampleName") and user ID (e.g. "#12345")
drvcontinue

When more results are available, use this to continue. More detailed information on how to continue queries can be found on mediawiki.org.

示例

GET请求

获取Talk:Main Page的已删除修订。

响应

"query": {
        "pages": [
            {
                "ns": 1,
                "title": "Talk:Main Page",
                "missing": "",
                "deletedrevisions": [
                    {
                        "user": "192.168.0.193",
                        "anon": "",
                        "comment": "I iz in yer wiki, blanking yer talk pages",
                        "contentformat": "text/x-wiki",
                        "contentmodel": "wikitext",
                        "content": ""
                    },
                ]
            },
        ]
    }

示例代码

Python

#!/usr/bin/python3

"""
    deleted_revisions.py

    MediaWiki API Demos
    Demo of `Deletedrevisions` module: Get a list of deleted revisions for Talk:Main Page.

    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, send a get reguest to get a list of deleted revisions for Talk:Main Page.
PARAMS = {
    "action": "query",
    "titles": "Talk:Main_Page",
    "prop": "deletedrevisions",
    "drvprop": "user|comment|content",
    "drvslots": "*",
    "format": "json"
}

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

print(DATA)

PHP

<?php

/*
    deleted_revisions.php

    MediaWiki API Demos
    Demo of `Deletedrevisions` module: Get a list of deleted revisions for Talk:Main Page.

    MIT License
*/

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

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
deletedRevisions(); // Step 3

// 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: 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.
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: Send a GET request to get a list of deleted revisions for Talk:Main Page.
function deletedRevisions() {
    $params = [
        "action" => "query",
        "titles" => "Talk:Main_Page",
        "prop" => "deletedrevisions",
        "drvprop" => "user|comment|content",
        "drvslots" => "*",
        "format" => "json"
    ];

    $url = $endPoint . "?" . http_build_query( $params );

    $ch = curl_init( $url );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    $output = curl_exec( $ch );
    curl_close( $ch );

    $result = json_decode( $output, true );
    var_dump( $result );
}

JavaScript

/*
    deleted_revisions.js

    MediaWiki API Demos
    Demo of `Deletedrevisions` module: Get a list of deleted revisions for Talk:Main Page.

    MIT License
*/

var request = require("request").defaults({jar: true}),
url = "https://en.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;
        }
        deletedRevisions();
    });
}

// Step 3: Get a list of deleted revisions for Talk:Main Page.
function deletedRevisions() {

    var params = {
        action: "query",
        titles: "Talk:Main_Page",
        prop: "deletedrevisions",
        drvprop: "user|comment|content",
        drvslots: "*",
        format: "json"
    };

    url = url + "?origin=*";
    Object.keys(params).forEach(function(key){url += "&" + key + "=" + params[key];});

    fetch(url)
        .then(function(response){return response.json();})
        .then(function(response) {console.log(response);})
        .catch(function(error){console.log(error);});
}

MediaWiki JS

/*
	deleted_revisions.js

	MediaWiki API Demos
	Demo of `Deletedrevisions` module: Get a list of deleted revisions for Talk:Main Page.

	MIT License
*/

var params = {
		action: 'query',
		titles: 'Talk:Main_Page',
		prop: 'deletedrevisions',
		drvprop: 'user|comment|content',
		drvslots: '*',
		format: 'json'
	},
	api = new mw.Api();

api.get( params ).done( function ( data ) {
	console.log( data );
} );

可能的错误

代码 信息
drvdiffto drvdiffto必须设置为非负数、prevnextcur
drvnosuchrevid 没有ID为ID的修订版本。
drvnosuchsection 在rID中没有section章节
permissiondenied 您无权查看已删除的评论。
drvpermissiondenied 您无权查看已删除修订的信息
adrpermissiondenied 您无权查看已删除修订的内容
drvbadparams user和excludeuser不能同时使用

可能的警告

代码 警告 信息
difftohidden 不能与r#####做差异比较:内容被隐藏。 版本被隐藏时抛出(例如,使用RevisionDelete或Oversight)。
Conversion to XML is supported for wikitext only, title uses content model content model 使用parsetree属性或generatexml参数,且内容模型(由content属性返回)未设为wikitext时抛出
templateexpansion-notwikitext 模板展开只支持wikitext内容。title使用内容模型content model 使用expandtemplates参数,且内容模型(由content属性返回)未设为wikitext时抛出
apierror-badformat name使用的内容模型model尚不支持请求的内容格式contentFormat 当前修订或与之相差异的版本内容不受支持(通常为非文本)时抛出。

参数历史

  • v1.32: 启用slotsize, slotsha1, roles, drvslots
  • v1.32: 弃用drvcontentformat
  • v1.30: 弃用parsetree, drvexpandtemplates, drvparse, drvdiffto, drvdifftotext, drvdifftotextpst
  • v1.27: 启用drvdifftotextpst
  • v1.27: 弃用drvdifftotextpst
  • v1.26: 弃用drvgeneratexml

附加提醒

参见