API:Revisions
Appearance
Bu sayfa MediaWiki Eylem API'si belgelerinin bir parçasıdır. |
MediaWiki sürümü: | ≥ 1.8 |
Sayfaların revizyon bilgilerini almak için GET isteği.
API belgesi
Örnek 1: Birkaç sayfanın revizyon verilerini alın
GET isteği
api.php? action=query& prop=revisions& titles=API|Main%20Page& rvprop=timestamp|user|comment& rvslots=main& formatversion=2 [ApiSandbox'ta deneyin]
Yukarıdaki istek, API ve Anasayfa başlıklı sayfaların revizyon verilerini elde etmektir.
Yanıt
Yanıt |
---|
{
"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]]"
}
]
}
]
}
}
|
Örnek kod
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 );
}
} );
Örnek 2: Tarihe ve kullanıcıya göre filtrelenmiş bir sayfanın son beş düzeltmesini alın
GET isteği
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) [ApiSandbox'ta deneyin]
Yukarıdaki talep, 1 Temmuz 2018 tarihinden sonra, yani SSethi (WMF) kullanıcısı tarafından yapılan değişiklikler hariç, API:Geosearch sayfasının son beş revizyonu için veri elde etmektir.
Yanıt
Yanıt |
---|
{
"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"
}
]
}
}
}
}
|
Örnek kod
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 );
}
} );
|
Örnek 3: Herhangi bir yönlendirmeden sonra sayfanın son revizyonunu alın
GET isteği
api.php? action=query& prop=revisions& titles=AntiSpoof& formatversion=2& redirects=1 [ApiSandbox'ta deneyin]
Yukarıdaki istek, yönlendirmelerden sonra AntiSpoof sayfasının revizyon verilerini elde etmektir. AntiSpoof , Extension:AntiSpoof ile yönlendirdiği için, revizyon verilerini Extension:AntiSpoof ile döndürecektir.
Yanıt
Yanıt |
---|
{
"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": ""
}
]
}
]
}
}
|
Olası hatalar
Kod | Bilgi |
---|---|
rvdiffto | rvdiffto "prev", "next", "cur" veya negatif olmayan bir sayı olarak ayarlanmalıdır. |
rvnosuchrevid | ID kimliğine sahip bir düzeltme yok. |
rvnosuchsection | rID kimliğine sahip bir bölüm yok |
rvrevids | revids parametresi liste seçenekleriyle kullanılamaz (rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart ve rvend). |
rvmultpages | titles, pageids veya birden fazla sayfa sağlamak için bir jeneratör kullanıldı, ancak rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart ve rvend parametreleri yalnızca tek bir sayfada kullanılabilir. |
rvaccessdenied | Geçerli kullanıcının title okumasına izin verilmiyor |
rvbadparams | start ve startid birlikte kullanılamaz |
rvbadparams | end ve endid birlikte kullanılamaz |
rvbadparams | user ve excludeuser birlikte kullanılamaz |
invalidparammix | titles, pageids veya birden fazla sayfa sağlamak için bir jeneratör kullanıldı, ancak rvlimit, rvstartid, rvendid, rvdir=newer, rvuser, rvexcludeuser, rvstart ve rvend parametreleri yalnızca tek bir sayfada kullanılabilir. |
accessdenied | title görüntüleme izniniz yok. |
badid_startid | startid parametresi için bir düzeltme bulunamadı. |
badid_endid | endid parametresi için bir düzeltme bulunamadı. |
Ek notlar
- Sayfalar
pageids
veyatitles
parametresi ile belirtilir. Tek tek revizyonlarrevids
parametresi ile belirtilir. API:Query sayfasına bakın. - Yuvalar ,
rvslots
parametresiyle belirtilebilir. Parametre mevcut olmadığında, API yalnızca ana alan hakkındaki bilgileri döndürür. - (enum) olarak işaretlenmiş parametreleri kullanırken,
titles=
yalnızca bir başlık listelenmelidir. - Bu modül, 1.25 sürümünden önce jeneratör olarak kullanılamaz.
- Bu modülün diff işlevselliği 1.30 sürümünde kullanımdan kaldırıldı ve API:Compare ile taşındı.
- Bu sorgunun kodu git deposunda ApiQueryRevisions.php sayfasında bulunur.
Parametre geçmişi
- v1.32:
rvslots
,roles
tanıtıldırvcontentformat
kullanımdan kaldırıldı - v1.30:
parsetree
,rvprop
,rvexpandtemplates
,rvparse
,rvdiffto
,rvdifftotext
,rvdifftotextpst
kullanımdan kaldırıldı - v1.27:
rvdifftotextpst
tanıtıldı - v1.26:
parsetree
tanıtıldırvgeneratexml
kullanımdan kaldırıldı - v1.24:
rvtoken
kullanımdan kaldırıldı - v1.21:
contentmodel
,rvcontentformat
tanıtıldı - v1.19:
sha1
,rvparse
tanıtıldı - v1.17:
userid
,rvparse
tanıtıldı - v1.16:
parsedcomment
,tags
,rvdifftotext
,rvtag
tanıtıldı - v1.15:
rvdiffto
,rvcontinue
tanıtıldı - v1.14:
rvgeneratexml
tanıtıldı - v1.13:
rvsection
tanıtıldı - v1.12:
rvexpandtemplates
,rvtoken
tanıtıldı - v1.11:
ids
,flags
,size
,rvuser
,rvexcludeuser
tanıtıldı