API:Revisions
Cette page fait partie de la documentation de l'API MediaWiki Action. |
Version de MediaWiki : | ≥ 1.8 |
Requête GET pour obtenir les informations de révision d'une ou plusieurs pages.
Documentation de l'API
Exemple 1: obtenir les données de révision de plusieurs pages
Requête GET
api.php? action=query& prop=revisions& titles=API|Main%20Page& rvprop=timestamp|user|comment& rvslots=main& formatversion=2 [Essayez !]
La requête ci-dessus permet d'obtenir les données de révision des pages dont le titre est API et Main Page
Réponse
Réponse |
---|
{
"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]]"
}
]
}
]
}
}
|
Exemple de code
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 );
}
} );
Exemple 2: obtenir les cinq dernières versions d'une page, triées par date et par utilisateur
Requête 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) [Essayez !]
La requête ci-dessus pemet d'obtenir les données concernant les cinq dernières révisions de la page API:Geosearch/fr faites après le 1er juillet 2018, c'est à dire après 2018-07-01 en excluant les modifications faites par l'utilisateur SSethi (WMF)
Réponse
Réponse |
---|
{
"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"
}
]
}
}
}
}
|
Exemple de code
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 );
}
} );
|
Example 3: obtenir la dernière révision d'une page, en suivant n'importe quelle redirection
Requête GET
Le requête ci-dessus permet d'obtenir les données de révision de la page AntiSpoof , en suivant n'importe quelle redirection. Comme AntiSpoof redirige vers Extension:AntiSpoof/fr , les données de révision de Extension:AntiSpoof/fr seront actuellement retournées.
Réponse
Réponse |
---|
{
"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": ""
}
]
}
]
}
}
|
Erreurs possibles
Code | Information |
---|---|
rvdiffto | rvdiffto doit initialisé à « prev » « next » « cur » ou à un nombre positif ou égal à zéro. |
rvnosuchrevid | Il n’y a pas de révision d’ID ID. |
rvnosuchsection | Pas de section section dans rID |
rvrevids | Le paramètre revids ne peut pas être utilisé avec les options de liste (rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart, et rvend). |
rvmultpages | titles, pageids ou un générateur a été utilisé pour fournir plusieurs pages, mais les paramètres rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart et rvend ne peuvent être utilisés que sur une seule page. |
rvaccessdenied | L'utilisateur actuel n'est pas autorisé à lire title |
rvbadparams | start et startid ne peuvent pas être utilisés simultanément |
rvbadparams | end et endid ne peuvent pas être utilisés simultanément |
rvbadparams | user et excludeuser ne peuvent pas être utilisés simultanément |
invalidparammix | titles, pageids ou un générateur a été utilisé pour fournir plusieurs pages, mais les paramètres rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart et rvend ne peuvent être utilisés que sur une seule page. |
accessdenied | Vous n’êtes pas autorisé à voir title. |
badid_startid | Pas de correction trouvée pour le paramètre startid. |
badid_endid | Pas de correction trouvée pour le paramètre endid. |
Notes supplémentaires
- Les pages sont spécifiées soit par le paramètre
pageids
, soit partitles
. Les révisions individuelles sont spécifiées par le paramètrerevids
. Voir API:Query . - Les emplacements (slots) peuvent être spécifiés avec le paramètre
rvslots
. Quand le paramètre est absent, l'API retourne seulement l'information concernant l'emplacement principal. - Si vous utilisez les paramètres marqués (enum),
titles=
ne doit comporter qu'un seul titre listé. - Ce module ne peut pas être utilisé comme un générateur avant la 1.25.
- La fonction Diff de ce module est obsolète depuis la version 1.30 et a été déplacée dans API:Compare .
- Le code pour cette requête se trouve dans le dépôt Git sur ApiQueryRevisions.php.
Historique des paramètres
- v1.32:
rvslots
,roles
ajoutérvcontentformat
obsolète - v1.30:
parsetree
,rvprop
,rvexpandtemplates
,rvparse
,rvdiffto
,rvdifftotext
,rvdifftotextpst
obsolète - v1.27:
rvdifftotextpst
ajouté - v1.26:
parsetree
ajoutérvgeneratexml
obsolète - v1.24:
rvtoken
obsolète - v1.21:
contentmodel
,rvcontentformat
ajouté - v1.19:
sha1
,rvparse
ajouté - v1.17:
userid
,rvparse
ajouté - v1.16:
parsedcomment
,tags
,rvdifftotext
,rvtag
ajouté - v1.15:
rvdiffto
,rvcontinue
ajouté - v1.14:
rvgeneratexml
ajouté - v1.13:
rvsection
ajouté - v1.12:
rvexpandtemplates
,rvtoken
ajouté - v1.11:
ids
,flags
,size
,rvuser
,rvexcludeuser
ajouté