API:Vergleichen
Diese Seite ist Teil der Dokumentation der MediaWiki action API. |
GET-Abfrage um den Unterschied zwischen zwei Seiten zu erhalten.
MediaWiki Version: | ≥ 1.18 |
API-Dokumentation
Beispiel
GET-Anfrage
Antwort
{
"compare": {
"fromid": 1882196,
"fromrevid": 739666518,
"fromns": 10,
"fromtitle": "Template:Unsigned",
"toid": 32371774,
"torevid": 909784724,
"tons": 10,
"totitle": "Template:UnsignedIP",
...
}
}
Beispielcode
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 );
} );
Mögliche Fehler
Code | Information |
---|---|
compare-relative-to-nothing | No 'from' revision for torelative to be relative to. |
compare-relative-to-deleted | torelative=value kann nicht relativ zu einer gelöschten Version verwendet werden. |
missingrev-title | No current revision of title title. |
baddiff | The diff cannot be retrieved. One or both revisions do not exist or you do not have permission to view them. |
missingcontent-revid | Missing content for revision ID revid. |
invalidtitle | Ungültiger Titel „title“. |
nosuchpageid | Es gibt keine Seite mit der ID id. |
missingtitle-byname | Die Seite name ist nicht vorhanden. |
nosuchrevid | There is no revision with ID id. |
missingcontent-revid-role | Fehlender Inhalt für die Versionskennung id für die Rolle main. |
compare-nosuchfromsection | There is no section name in the 'from' content. |
compare-nosuchtosection | There is no section name in the 'to' content. |
compare-maintextrequired | Der Parameter fromtext-main ist erforderlich, wenn fromslots main enthält (kann nicht den Hauptschlitz löschen). |
compare-maintextrequired | Der Parameter totext-main ist erforderlich, wenn toslots main enthält (kann nicht den Hauptschlitz löschen). |
compare-notext | Der Parameter $1 kann nicht ohne $2 verwendet werden. |
compare-no-title | Cannot pre-save transform without a title. Try specifying fromtitle or totitle. |
compare-nofromrevision | Keine Version „from“. fromrev, fromtitle oder fromid angeben. |
compare-notorevision | Keine Version „to“. torev, totitle oder toid angeben. |
sectionsnotsupported | Sections are not supported for content model model. |
sectionreplacefailed | Der aktualisierte Abschnitt konnte nicht zusammengeführt werden. |
missingparam | At least one of the parameters fromtitle , fromid , fromrev , fromtext , fromrelative und fromslots is required.
|
missingparam | At least one of the parameters totitle , toid , torev , totext , torelative und toslots is required.
|
Parametergeschichte
- v1.32:
fromslots
,toslots
,fromtext-{slot}
,fromsection-{slot}
,fromcontentformat-{slot}
,fromcontentmodel-{slot}
,totext-{slot}
,tosection-{slot}
,tocontentformat-{slot}
,tocontentmodel-{slot}
eingeführt - v1.30: Eingeführt
frompst
,torelative
,topst
,prop
- v1.20: Eingeführt
fromid
,toid
Zusätzliche Anmerkungen
Um den Unterschied zwischen zwei Seiten zu erhalten, muss eine Versionsnummer, ein Seitentitel oder eine Seiten-ID für from
und to
angegeben werden.
Relativer Vergleich der ersten und letzten Revision
- Du kannst einen relativen Vergleich zur ersten Version einer Seite anfragen, wobei der vollständige Text der ersten Version als Diff ausgegeben wird. Beachte, dass dies nicht genau ist, da es in einigen Fällen bereits vor der ersten Version einen Standardinhalt gegeben haben kann. Die Eigenschaft
fromrevid
wird in den Ergebnissen fehlen. - Damit vergleichbar kannst du auch den nächsten relativen Vergleich mit der letzten Version einer Seite anfragen.
- (Anmerkung: Zum Zeitpunkt des Verfassens dieses Textes ist dies die letzte Version. Da die Seite geschützt ist, wird sie sich wahrscheinlich nicht ändern.) Das Ergebnis ist ein leerer Diff und
torevid
wird fehlen. Im Gegensatz zu den meisten Versionsvergleichen werden sich diese Ergebnisse ändern, wenn eine neue Version erstellt wird.
Dieses Verhalten der API ist historisch bedingt. Es ist nicht konsistent mit dem konzeptuellen Modell einer Versionsgeschichte als einer Reihe von Versionen. Es gibt keine previous
-Version, mit der die erste Version verglichen werden kann und auch keine next
-Version, mit der die letzte Version verglichen werden kann. Daher können zukünftige Versionen von MediaWiki unterschiedliche Ergebnisse für diese API-Abfrage ausgeben.
Verwenden der HTML-Ausgabe
Die prop
-Werte diff
und parsedcomment
geben HTML-Schnipsel aus.
Das diff
-HTML ist eine Liste von Tabellen-Zeilen (<tr>
-Elementen), die in eine Tabelle mit zumindest dem folgenden Markup eingebunden werden sollten:
<table class="diff">
<colgroup>
<col class="diff-marker">
<col class="diff-content">
<col class="diff-marker">
<col class="diff-content">
</colgroup>
<tbody>
DIFF-HTML-SCHNIPSEL HIER EINFÜGEN
</tbody>
</table>
Um auch Metadaten anzuzeigen, z. B. den Benutzer oder die Zusammenfassung, füge zusätzliche Zeilen hinzu und platziere die Metadaten in einem <td colspan="2">
-Element.
Um sicherzustellen, dass der Diff korrekt angezeigt wird (z. B. dass die Diff-Markierung und die Inhaltsspalten nicht die gleiche Breite haben), kannst du das ResourceLoader-Modul mediawiki.diff.styles
zur Seite hinzufügen:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.diff.styles&only=styles">
Wenn du parsedcomment
anzeigen möchtest, möchtest du vermutlich das mediawiki.legacy.shared
-Modul hinzufügen, das einige Basisdarstellungen für Zusammenfassungen und automatische Zusammenfassungen enthält:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared&only=styles">
Wenn du sowohl das diff
-HTML als auch das parsedcomment
-HTML auf der Seite anzeigen möchtest, kannst du diese beiden Tags in einem kombinieren:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared|mediawiki.diff.styles&only=styles">