API:Compare
Bu sayfa MediaWiki Eylem API'si belgelerinin bir parçasıdır. |
İki sayfa arasındaki farkı elde etmek için GET isteği.
MediaWiki sürümü: | ≥ 1.18 |
API belgesi
Örnek
GET isteği
Yanıt
{
"compare": {
"fromid": 1882196,
"fromrevid": 739666518,
"fromns": 10,
"fromtitle": "Template:Unsigned",
"toid": 32371774,
"torevid": 909784724,
"tons": 10,
"totitle": "Template:UnsignedIP",
...
}
}
Örnek kod
Python
#!/usr/bin/python3
"""
compare.py
MediaWiki Action API Code Samples
Demo of `Compare` module: Compare the current revisions of two different pages
MIT license
"""
import requests
S = requests.Session()
URL = "https://en.wikipedia.org/w/api.php"
PARAMS = {
'action':"compare",
'format':"json",
'fromtitle':'Template:Unsigned',
'totitle':'Template:UnsignedIP'
}
R = S.get(url=URL, params=PARAMS)
DATA = R.json()
print(DATA)
PHP
<?php
/*
compare.php
MediaWiki Action API Code Samples
Demo of `Compare` module: Compare the current revisions of two different pages
MIT license
*/
$endPoint = "https://en.wikipedia.org/w/api.php";
$params = [
"action" => "compare",
"format" => "json",
"fromtitle" => "Template:Unsigned",
"totitle" => "Template:UnsignedIP"
];
$url = $endPoint . "?" . http_build_query( $params );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
$output = curl_exec( $ch );
curl_close( $ch );
echo( $output );
JavaScript
/*
compare.js
MediaWiki Action API Code Samples
Demo of `Compare` module: Compare the current revisions of two different pages
MIT license
*/
var url = "https://en.wikipedia.org/w/api.php";
var params = {
action: "compare",
format: "json",
fromtitle: "Template:Unsigned",
totitle: "Template:UnsignedIP"
};
request.get({ url: url, qs: params }, function(error, res, body) {
if (error) {
return;
}
console.log(body);
});
MediaWiki JS
/*
compare.js
MediaWiki Action API Code Samples
Demo of `Compare` module: Compare the current revisions of two different pages
MIT license
*/
var params = {
action: "compare",
format: "json",
fromtitle: "Template:Unsigned",
totitle: "Template:UnsignedIP"
},
api = new mw.Api();
api.get( params ).done( function ( data ) {
console.log( data );
} );
Olası hatalar
Kod | Bilgi |
---|---|
compare-relative-to-nothing | torelative göreli olması için 'from' revizyonu yok. |
compare-relative-to-deleted | Silinmiş bir düzeltmeye göre torelative=value kullanılamaz. |
missingrev-title | title başlıkta şu anki düzeltme yok. |
baddiff | Fark alınamıyor. Düzeltmelerden biri veya her ikisi mevcut değil veya bunları görüntüleme izniniz yok. |
missingcontent-revid | Düzeltme kimliği revid için eksik içerik. |
invalidtitle | Kötü başlık "title". |
nosuchpageid | id kimliğine sahip sayfa yok. |
missingtitle-byname | name sayfası mevcut değil. |
nosuchrevid | id kimliğine sahip bir düzeltme yok. |
missingcontent-revid-role | main rolü için id düzeltme kimliği için eksik içerik. |
compare-nosuchfromsection | 'from' içeriğinde name bölüm yok. |
compare-nosuchtosection | 'to' içeriğinde name bölüm yok. |
compare-maintextrequired | fromslots main içerdiğinde fromtext-main parametresi gereklidir (ana yuvayı silemezsiniz). |
compare-maintextrequired | toslots main içerdiğinde totext-main parametresi gereklidir (ana yuvayı silemezsiniz). |
compare-notext | $1 parametresi, $2 olmadan kullanılamaz. |
compare-no-title | Başlık olmadan dönüşüm önceden kaydedilemez. fromtitle veya totitle belirtmeyi deneyin. |
compare-nofromrevision | 'from' revizyonu yok. fromrev, fromtitle veya fromid öğelerini belirtin. |
compare-notorevision | 'to' revizyonu yok. torev, totitle veya toid belirtin. |
sectionsnotsupported | Bölümler, içerik modeli model için desteklenmiyor. |
sectionreplacefailed | Güncellenen bölüm birleştirilemedi. |
missingparam | fromtitle , fromid , fromrev , fromtext , fromrelative ve fromslots parametrelerden en az biri gerekli.
|
missingparam | totitle , toid , torev , totext , torelative ve toslots parametrelerden en az biri gerekli.
|
Parametre geçmişi
- v1.32:
fromslots
,toslots
,fromtext-{slot}
,fromsection-{slot}
,fromcontentformat-{slot}
,fromcontentmodel-{slot}
,totext-{slot}
,tosection-{slot}
,tocontentformat-{slot}
,tocontentmodel-{slot}
tanıtıldı - v1.30:
frompst
,torelative
,topst
,prop
tanıtıldı - v1.20:
fromid
,toid
tanıtıldı
Ek notlar
İki sayfa arasındaki farkı elde etmek için bir revizyon numarası, bir sayfa başlığı veya hem from
hem de to
için bir sayfa kimliği geçirilmelidir.
İlk ve son revizyonda göreceli karşılaştırma
- Bir sayfanın ilk revizyonunda önceki ile göreceli bir karşılaştırma isteyebilirsiniz, bu, ilk revizyonun tam metninin fark olarak döndürülmesiyle sonuçlanır. Bunun doğru olmadığını unutmayın, çünkü bazı durumlarda ilk revizyondan önce sayfa için varsayılan içerik olabilir.
fromrevid
mülkü sonuçlarda yer almayacak. - Benzer şekilde, bir sayfanın son revizyonunda bir sonraki göreceli karşılaştırmayı isteyebilirsiniz.
- (Not: Bu konunun yazılmasıyla ilgili son düzeltmedir. Sayfa korunduğundan, büyük olasılıkla değişmemelidir.) Sonuç boş bir farktır ve
torevid
olmayacaktır. Çoğu revizyon karşılaştırmasının aksine, yeni bir revizyon oluşturulursa bu sonuçlar değişecektir.
API'deki bu davranış tarihseldir. Bir dizi revizyon olarak sayfa tarihinin kavramsal modeliyle tutarlı değildir. İlk revizyonla karşılaştırılacak previous
revizyon veya son revizyonla karşılaştırılacak next
revizyon yoktur. Bu nedenle, MediaWiki'nin gelecekteki sürümleri bu API çağrısı için farklı sonuçlar verebilir.
HTML çıkışını kullanma
prop
, diff
ve parsedcomment
değerlerinin HTML pasajlarını döndürmesini sağlar.
diff
HTML, en azından aşağıdaki işaretlemeyle bir tabloya gömülmesi gereken tablo satırlarının (<tr>
öğeleri) bir listesidir:
<table class="diff">
<colgroup>
<col class="diff-marker">
<col class="diff-content">
<col class="diff-marker">
<col class="diff-content">
</colgroup>
<tbody>
FARK HTML PASAJINI BURAYA GİDER
</tbody>
</table>
Meta verileri de görüntülemek için, ör. kullanıcı veya yorum ekleyin, fazladan satır ekleyin ve meta verileri <td colspan="2">
öğesinin içine yerleştirin.
Bu farkın doğru görüntülendiğinden emin olmak için (ör. fark işaretçisi ve içerik sütunları aynı genişlikte olmadığından) sayfanıza mediawiki.diff.styles
ResourceLoader modülünü ekleyebilirsiniz:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.diff.styles&only=styles">
parsedcomment
görüntülemek istiyorsanız, aynı şekilde yorumlar ve otomatik teklifler için bazı temel stiller içeren mediawiki.legacy.shared
modülünü eklemek istersiniz:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared&only=styles">
Sayfada hem diff
hem de parsedcomment
HTML'yi görüntülemek istiyorsanız, bu iki etiketi bir araya getirebilirsiniz:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared|mediawiki.diff.styles&only=styles">