API:Revisions
Esta página es parte de la documentación de la API de acciones de MediaWiki. |
Versión de MediaWiki: | ≥ 1.8 |
Solicitud GET para obtener información de revisión de página(s).
API Documentación
Ejemplo 1: Consigue datos de revisión de varias páginas
Solicitud GET
api.php? action=query& prop=revisions& titles=API|Main%20Page& rvprop=timestamp|user|comment& rvslots=main& formatversion=2 [Prueba en ApiSandbox]
La solicitud, arriba, es obtener datos de revisión de páginas con títulos API y Main Page
Respuesta
Respuesta: |
---|
{
"batchcomplete": true,
"query": {
"pages": [
{
"pageid": 1423,
"ns": 0,
"title": "Main Page",
"revisions": [
{
"user": "Bdk",
"timestamp": "2005-09-16T01:14:43Z",
"comment": "Reverted edit of 82.36.210.14, changed back to last version by Brion VIBBER"
}
]
},
{
"pageid": 55332,
"ns": 0,
"title": "API",
"revisions": [
{
"user": "Mainframe98",
"timestamp": "2017-08-19T18:23:42Z",
"comment": "Reverted edits by [[Special:Contributions/Sankaran kumar|Sankaran kumar]] ([[User talk:Sankaran kumar|talk]]) to last revision by [[User:Shirayuki|Shirayuki]]"
}
]
}
]
}
}
|
Código de muestra
Python
#!/usr/bin/python3
"""
get_pages_revisions.py
MediaWiki API Demos
Demo of `Revisions` module: Get revision data with content for pages
with titles [[API]] and [[Main Page]]
MIT License
"""
import requests
S = requests.Session()
URL = "https://www.mediawiki.org/w/api.php"
PARAMS = {
"action": "query",
"prop": "revisions",
"titles": "API|Main Page",
"rvprop": "timestamp|user|comment|content",
"rvslots": "main",
"formatversion": "2",
"format": "json"
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
PAGES = DATA["query"]["pages"]
for page in PAGES:
print(page["revisions"])
PHP
<?php
/*
get_pages_revisions.php
MediaWiki API Demos
Demo of `Revisions` module: Get revision data with content for pages with titles [[API]] and [[Main Page]]
MIT License
*/
$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
"action" => "query",
"prop" => "revisions",
"titles" => "API|Main Page",
"rvprop" => "timestamp|user|comment|content",
"rvslots" => "main",
"formatversion" => "2",
"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 );
foreach( $result["query"]["pages"] as $k => $v ) {
var_dump( $v["revisions"] );
}
JavaScript
/*
get_pages_revisions.js
MediaWiki API Demos
Demo of `Revisions` module: Get revision data with content for pages with titles [[API]] and [[Main Page]]
MIT License
*/
var url = "https://www.mediawiki.org/w/api.php";
var params = {
action: "query",
prop: "revisions",
titles: "API|Main Page",
rvprop: "timestamp|user|comment|content",
rvslots: "main",
formatversion: "2",
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) {
var pages = response.query.pages;
for (var p in pages) {
console.log(pages[p].revisions);
}
})
.catch(function(error){console.log(error);});
MediaWiki JS
/*
get_pages_revisions.js
MediaWiki API Demos
Demo of `Revisions` module: Get revision data with content for pages with
titles [[API]] and [[Main Page]]
MIT License
*/
var params = {
action: 'query',
prop: 'revisions',
titles: 'API|Main Page',
rvprop: 'timestamp|user|comment|content',
rvslots: 'main',
formatversion: '2',
format: 'json'
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
var pages = data.query.pages,
p;
for ( p in pages ) {
console.log( pages[ p ].revisions );
}
} );
Ejemplo 2: Consigue las últimas cinco revisiones de una página filtrada por fecha y usuario
Solicitud GET
api.php? action=query& prop=revisions& titles=API:Geosearch& rvlimit=5& rvslots=main& rvprop=timestamp|user|comment& rvdir=newer& rvstart=2018-07-01T00:00:00Z& rvexcludeuser=SSethi_(WMF) [Prueba en ApiSandbox]
La solicitud, arriba, es para obtener datos de las últimas cinco revisiones de la página API:Geosearch realizadas después del 1 de julio de 2018, es decir, 2018-07-01 excluyendo los cambios realizados por el usuario SSethi (WMF)
Respuesta
Respuesta |
---|
{
"batchcomplete": "",
"query": {
"pages": {
"812323": {
"pageid": 812323,
"ns": 104,
"title": "API:Geosearch",
"revisions": [
{
"user": "Shirayuki",
"timestamp": "2018-11-04T05:25:34Z",
"comment": "translation tweaks"
},
{
"user": "Shirayuki",
"timestamp": "2018-11-25T06:06:50Z",
"comment": "translation tweaks"
}
]
}
}
}
}
|
Código de muestra
get_filtered_page_revisions.py |
---|
Python#!/usr/bin/python3
"""
get_filtered_page_revisions.py
MediaWiki API Demos
Demo of `Revisions` module: Get data including content of last 5 revisions
of the title [[API:Geosearch]] made after the 1st of July 2018 i.e 2018-07-01
excluding changes made by the user SSethi (WMF)
MIT License
"""
import requests
S = requests.Session()
URL = "https://www.mediawiki.org/w/api.php"
PARAMS = {
"action": "query",
"prop": "revisions",
"titles": "API:Geosearch",
"rvlimit": "5",
"rvprop": "timestamp|user|comment|content",
"rvdir": "newer",
"rvstart": "2018-07-01T00:00:00Z",
"rvexcludeuser": "SSethi (WMF)",
"rvslots": "main",
"formatversion": "2",
"format": "json"
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
PAGES = DATA["query"]["pages"]
for page in PAGES:
print(page["revisions"])
PHP<?php
/*
get_filtered_page_revisions.php
MediaWiki API Demos
Demo of `Revisions` module: Get data including content of last 5 revisions of the title [[API:Geosearch]] made after July 1st 2018 excluding changes made by the user SSethi (WMF)
MIT License
*/
$endPoint = "https://www.mediawiki.org/w/api.php";
$params = [
"action" => "query",
"prop" => "revisions",
"titles" => "API:Geosearch",
"rvlimit" => "5",
"rvprop" => "timestamp|user|comment|content",
"rvdir" => "newer",
"rvstart" => "2018-07-01T00:00:00Z",
"rvexcludeuser" => "SSethi (WMF)",
"rvslots" => "main",
"formatversion" => "2",
"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 );
foreach( $result["query"]["pages"] as $k => $v ) {
var_dump( $v["revisions"] );
}
JavaScript/*
get_filtered_page_revisions.js
MediaWiki API Demos
Demo of `Revisions` module: Get data including content of last 5 revisions of the title [[API:Geosearch]] made after July 1st 2018 excluding changes made by the user SSethi (WMF)
MIT License
*/
var url = "https://www.mediawiki.org/w/api.php";
var params = {
action: "query",
prop: "revisions",
titles: "API:Geosearch",
rvlimit: "5",
rvprop: "timestamp|user|comment|content",
rvdir: "newer",
rvstart: "2018-07-01T00:00:00Z",
rvexcludeuser: "SSethi (WMF)",
rvslots: "main",
formatversion: "2",
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) {
var pages = response.query.pages;
for (var p in pages) {
console.log(pages[p].revisions);
}
})
.catch(function(error){console.log(error);});
MediaWiki JS/*
get_filtered_page_revisions.js
MediaWiki API Demos
Demo of `Revisions` module: Get data including content of last 5 revisions of the
title [[API:Geosearch]] made after July 1st 2018 excluding changes made by the user SSethi (WMF)
MIT License
*/
var params = {
action: 'query',
prop: 'revisions',
titles: 'API:Geosearch',
rvlimit: '5',
rvprop: 'timestamp|user|comment|content',
rvdir: 'newer',
rvstart: '2018-07-01T00:00:00Z',
rvexcludeuser: 'SSethi (WMF)',
rvslots: 'main',
formatversion: '2',
format: 'json'
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
var pages = data.query.pages,
p;
for ( p in pages ) {
console.log( pages[ p ].revisions );
}
} );
|
Ejemplo 3: Consigue la última revisión de una página, siguiendo cualquier redirección
Solicitud GET
api.php? action=query& prop=revisions& titles=AntiSpoof& formatversion=2& redirects=1 [Prueba en ApiSandbox]
La solicitud, arriba, es para obtener datos de revisión de la página AntiSpoof , siguiendo cualquier redirección. Como AntiSpoof redirige a Extension:AntiSpoof , en realidad devolverá datos de revisión por Extension:AntiSpoof .
Respuesta
Respuesta |
---|
{
"batchcomplete": true,
"query": {
"redirects": [
{
"from": "AntiSpoof",
"to": "Extension:AntiSpoof"
}
],
"pages": [
{
"pageid": 8993,
"ns": 102,
"title": "Extension:AntiSpoof",
"revisions": [
{
"revid": 3419761,
"parentid": 3053177,
"minor": true,
"user": "Shirayuki",
"timestamp": "2019-09-22T05:14:46Z",
"comment": ""
}
]
}
]
}
}
|
Errores posibles
Código | Información |
---|---|
rvdiffto | rvdiffto debe establecerse en "prev", "next", "cur" o un número no-negativo. |
rvnosuchrevid | No hay ninguna revisión con identificador ID. |
rvnosuchsection | no hay sección section en rID |
rvrevids | El parámetro revids no se puede utilizar junto con las opciones de lista (rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart y rvend). |
rvmultpages | Se utilizó titles, pageids o un generador para proporcionar múltiples páginas, pero los parámetros rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart y rvend solo se pueden utilizar en una sola página. |
rvaccessdenied | Al usuario actual no le es permitido leer título |
rvbadparams | start y startid no pueden ser utilizados juntos |
rvbadparams | end y endid no pueden ser utilizados juntos |
rvbadparams | User y excludeuser no pueden ser utilizados juntos |
invalidparammix | Se utilizó titles, pageids o un generador para proporcionar múltiples páginas, pero los parámetros rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart y rvend solo se pueden utilizar en una sola página. |
accessdenied | No tienes permiso para ver title. |
badid_startid | No se encontró ninguna revisión para el parámetro startid. |
badid_endid | No se encontró ninguna revisión para el parámetro endid. |
Notas adicionales
- Las páginas están especificadas por el parámetro
pageids
otitles
. Las revisiones individuales se especifican mediante el parámetrorevids
. Véase API:Query . - Slots se puede especificar con el parámetro
rvslots
. Cuando el parámetro no esté presente, la API solo devolverá información sobre la ranura principal. - Cuando se usan parámetros marcados como (enum),
titles=
debe tener solo un título listado. - Este módulo no pudo ser utilizado como generador antes de la versión 1.25.
- La funcionalidad diff de este módulo quedó obsoleta en la versión 1.30 y se trasladó a API:Compara .
- El código para esta consulta se encuentra en el repositorio git en ApiQueryRevisions.php.
Historial de parámetros
- v1.32: Introducido
rvslots
,roles
Deprecatedrvcontentformat
- v1.30: Deprecated
parsetree
,rvprop
,rvexpandtemplates
,rvparse
,rvdiffto
,rvdifftotext
,rvdifftotextpst
- v1.27: Introducido
rvdifftotextpst
- v1.26: Introducido
parsetree
Deprecatedrvgeneratexml
- v1.24: Deprecated
rvtoken
- v1.21: Introducido
contentmodel
,rvcontentformat
- v1.19: Introducido
sha1
,rvparse
- v1.17: Introducido
userid
,rvparse
- v1.16: Introducido
parsedcomment
,tags
,rvdifftotext
,rvtag
- v1.15: Introducido
rvdiffto
,rvcontinue
- v1.14: Introducido
rvgeneratexml
- v1.13: Introducido
rvsection
- v1.12: Introducido
rvexpandtemplates
,rvtoken
- v1.11: Introducido
ids
,flags
,size
,rvuser
,rvexcludeuser