API:已删除修订
本页是MediaWiki Action API帮助文档的一部份。 |
使用GET请求来获取已删除修订信息。
MediaWiki版本: | ≥ 1.25 |
API帮助文档
示例
GET请求
获取Talk:Main Page的已删除修订。
api.php? action=query& titles=Talk:Main%20Page& prop=deletedrevisions& drvprop=user|comment|content& drvslots=*& format=json [在Api沙盒中尝试]
响应
"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必须设置为非负数、prev、next或cur。 |
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
附加提醒
- 该模块可用作生成器 。
- 此模块列出已从页面中删除的修订,如你在Special:Undelete中所见。其不应与由版本删除 功能隐藏的修订相混淆。
参见
- 手册:修订版本删除 - 展示或隐藏单独的页面修订版本。
- 帮助:修訂版本删除 - 隐藏页面历史或日志中的单独项目。
- API:已删除的修订 - 用来列出已删除修订版本的API参数。
- API:修订版本删除 - 删除和还原修订版本。