API:Compare

From mediawiki.org
This page is a translated version of the page API:Compare and the translation is 100% complete.

İki sayfa arasındaki farkı elde etmek için GET isteği.

MediaWiki sürümü:
1.18

API belgesi


action=compare

(main | compare)

Get the difference between two pages.

A revision number, a page title, a page ID, text, or a relative reference for both "from" and "to" must be passed.

Specific parameters:
Other general parameters are available.
fromtitle

First title to compare.

fromid

First page ID to compare.

Type: integer
fromrev

First revision to compare.

Type: integer
fromslots

Override content of the revision specified by fromtitle, fromid or fromrev.

This parameter specifies the slots that are to be modified. Use fromtext-{slot}, fromcontentmodel-{slot}, and fromcontentformat-{slot} to specify content for each slot.

Values (separate with | or alternative): main
fromtext-{slot}

Text of the specified slot. If omitted, the slot is removed from the revision.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of fromslots.
fromsection-{slot}

When fromtext-{slot} is the content of a single section, this is the section identifier. It will be merged into the revision specified by fromtitle, fromid or fromrev as if for a section edit.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of fromslots.
fromcontentformat-{slot}

Content serialization format of fromtext-{slot}.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of fromslots.
One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
fromcontentmodel-{slot}

Content model of fromtext-{slot}. If not supplied, it will be guessed based on the other parameters.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of fromslots.
One of the following values: GadgetDefinition, Json.JsonConfig, JsonSchema, Map.JsonConfig, MassMessageListContent, NewsletterContent, Scribunto, SecurePoll, Tabular.JsonConfig, css, flow-board, javascript, json, sanitized-css, text, translate-messagebundle, unknown, wikitext
frompst

Do a pre-save transform on fromtext-{slot}.

Type: boolean (details)
fromtext
Deprecated.

Specify fromslots=main and use fromtext-main instead.

fromcontentformat
Deprecated.

Specify fromslots=main and use fromcontentformat-main instead.

One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
fromcontentmodel
Deprecated.

Specify fromslots=main and use fromcontentmodel-main instead.

One of the following values: GadgetDefinition, Json.JsonConfig, JsonSchema, Map.JsonConfig, MassMessageListContent, NewsletterContent, Scribunto, SecurePoll, Tabular.JsonConfig, css, flow-board, javascript, json, sanitized-css, text, translate-messagebundle, unknown, wikitext
fromsection
Deprecated.

Only use the specified section of the specified 'from' content.

totitle

Second title to compare.

toid

Second page ID to compare.

Type: integer
torev

Second revision to compare.

Type: integer
torelative

Use a revision relative to the revision determined from fromtitle, fromid or fromrev. All of the other 'to' options will be ignored.

One of the following values: cur, next, prev
toslots

Override content of the revision specified by totitle, toid or torev.

This parameter specifies the slots that are to be modified. Use totext-{slot}, tocontentmodel-{slot}, and tocontentformat-{slot} to specify content for each slot.

Values (separate with | or alternative): main
totext-{slot}

Text of the specified slot. If omitted, the slot is removed from the revision.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of toslots.
tosection-{slot}

When totext-{slot} is the content of a single section, this is the section identifier. It will be merged into the revision specified by totitle, toid or torev as if for a section edit.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of toslots.
tocontentformat-{slot}

Content serialization format of totext-{slot}.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of toslots.
One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
tocontentmodel-{slot}

Content model of totext-{slot}. If not supplied, it will be guessed based on the other parameters.

This is a templated parameter. When making the request, {slot} in the parameter's name should be replaced with values of toslots.
One of the following values: GadgetDefinition, Json.JsonConfig, JsonSchema, Map.JsonConfig, MassMessageListContent, NewsletterContent, Scribunto, SecurePoll, Tabular.JsonConfig, css, flow-board, javascript, json, sanitized-css, text, translate-messagebundle, unknown, wikitext
topst

Do a pre-save transform on totext.

Type: boolean (details)
totext
Deprecated.

Specify toslots=main and use totext-main instead.

tocontentformat
Deprecated.

Specify toslots=main and use tocontentformat-main instead.

One of the following values: application/json, application/octet-stream, application/unknown, application/x-binary, text/css, text/javascript, text/plain, text/unknown, text/x-wiki, unknown/unknown
tocontentmodel
Deprecated.

Specify toslots=main and use tocontentmodel-main instead.

One of the following values: GadgetDefinition, Json.JsonConfig, JsonSchema, Map.JsonConfig, MassMessageListContent, NewsletterContent, Scribunto, SecurePoll, Tabular.JsonConfig, css, flow-board, javascript, json, sanitized-css, text, translate-messagebundle, unknown, wikitext
tosection
Deprecated.

Only use the specified section of the specified 'to' content.

prop

Which pieces of information to get.

diff
The diff HTML.
diffsize
The size of the diff HTML, in bytes.
rel
The revision IDs of the revision previous to 'from' and after 'to', if any.
ids
The page and revision IDs of the 'from' and 'to' revisions.
title
The page titles of the 'from' and 'to' revisions.
user
The username and ID of the 'from' and 'to' revisions. If the user has been revision deleted, a fromuserhidden or touserhidden property will be returned.
comment
The comment on the 'from' and 'to' revisions. If the comment has been revision deleted, a fromcommenthidden or tocommenthidden property will be returned.
parsedcomment
The parsed comment on the 'from' and 'to' revisions. If the comment has been revision deleted, a fromcommenthidden or tocommenthidden property will be returned.
size
The size of the 'from' and 'to' revisions.
timestamp
The timestamp of the 'from' and 'to' revisions.
Values (separate with | or alternative): comment, diff, diffsize, ids, parsedcomment, rel, size, timestamp, title, user
Default: diff|ids|title
slots

Return individual diffs for these slots, rather than one combined diff for all slots.

Values (separate with | or alternative): main
To specify all values, use *.
difftype

Return the comparison formatted as inline HTML.

One of the following values: inline, table, unified
Default: table
Example:
Create a diff between revision 1 and 2.
api.php?action=compare&fromrev=1&torev=2 [open in sandbox]

Örnek

GET isteği

İki farklı sayfanın mevcut düzeltmelerini karşılaştırın.


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">