API:Compare
Cette page fait partie de la documentation de l'API MediaWiki Action. |
Requête GET pour obtenir la différence entre deux pages.
Version de MediaWiki : | ≥ 1.18 |
Documentation de l'API
Exemple
Requête GET
Réponse
{
"compare": {
"fromid": 1882196,
"fromrevid": 739666518,
"fromns": 10,
"fromtitle": "Template:Unsigned",
"toid": 32371774,
"torevid": 909784724,
"tons": 10,
"totitle": "Template:UnsignedIP",
...
}
}
Exemple de code
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 );
} );
Erreurs possibles
Code | Information |
---|---|
compare-relative-to-nothing | Pas de révision 'depuis' pour torelative à laquelle se rapporter. |
compare-relative-to-deleted | Impossible d’utiliser torelative=value par rapport à une révision supprimée. |
missingrev-title | Aucune révision actuelle de titre title. |
baddiff | La différence ne peut être récupérée. Une ou les deux révisions n’existent pas ou vous n’avez pas le droit de les voir. |
missingcontent-revid | Contenu de la révision d’ID revid manquant. |
invalidtitle | Mauvais titre « title ». |
nosuchpageid | Il n’y a pas de page avec l’ID id. |
missingtitle-byname | La page name n’existe pas. |
nosuchrevid | Il n’y a pas de révision d’ID id. |
missingcontent-revid-role | Contenu manquant pour l’identifiant de révision id pour le rôle main. |
compare-nosuchfromsection | Il n’y a pas de section name dans le contenu 'from'. |
compare-nosuchtosection | Il n’y a pas de section name dans le contenu « to ». |
compare-maintextrequired | Le paramètre fromtext-main est obligatoire lorsque fromslots contient main (impossible de supprimer l’emplacement principal). |
compare-maintextrequired | Le paramètre totext-main est obligatoire lorsque toslots contient main (impossible de supprimer l’emplacement principal). |
compare-notext | Le paramètre $1 ne peut pas être utilisé sans $2. |
compare-no-title | Impossible de faire une transformation avant enregistrement sans titre. Essayez de spécifier fromtitle ou totitle. |
compare-nofromrevision | Aucune révision 'from'. Spécifiez fromrev, fromtitle, ou fromid. |
compare-notorevision | Aucune révision « to ». Spécifiez torev, totitle, ou toid. |
sectionsnotsupported | Les sections ne sont pas prises en charge pour le modèle de contenu model. |
sectionreplacefailed | Impossible de fusionner la section mise à jour. |
missingparam | Au moins un des paramètres fromtitle , fromid , fromrev , fromtext , fromrelative et fromslots est obligatoire.
|
missingparam | Au moins un des paramètres totitle , toid , torev , totext , torelative et toslots est obligatoire.
|
Historique des paramètres
- v1.32: Ajouté
fromslots
,toslots
,fromtext-{slot}
,fromsection-{slot}
,fromcontentformat-{slot}
,fromcontentmodel-{slot}
,totext-{slot}
,tosection-{slot}
,tocontentformat-{slot}
,tocontentmodel-{slot}
- v1.30: Ajouté
frompst
,torelative
,topst
,prop
- v1.20: Ajouté
fromid
,toid
Notes supplémentaires
Pour obtenir la différence entre deux pages, un numéro de révision, un titre ou un identifiant de page doivent être fournis à la fois pour from
et to
.
Comparaison relative pour la première et la dernière révision
- Vous pouvez demander une comparaison relative de la première révision d'une page avec la révision précédente, ce qui renvoie dans le diff tout le texte de la première révision : Notez que cela n'est pas toujours vrai, car dans certains cas il peut exister un contenu par défaut de la page avant sa première révision. La propriété
fromrevid
sera absente des résultats. - D'une manière similaire, vous pouvez demander à comparer la dernière révision d'une page avec la révision suivante:
- (Remarque: ceci est la dernière révision écrite pour ce sujet. Parce que la page est protégée, il est probable qu'elle ne changera pas.) Le résultat est un diff vide, et la propriété
torevid
sera absente. Au contraire de la plupart des comparaisons de révisions, ces résultats changeront si une nouvelle révision est créée.
Le comportement dans l'API est historique. Il n'est pas cohérent avec le modèle conceptuel de l'historique des pages en tant que série de révisions. Il n'existe pas de révision previous
pour la comparaison de la première révision, ni de révision next
pour comparer la dernière révision. A cause de cela, les versions futures de MediaWiki pourront donner des résultats différents pour cet appel d'API.
Utiliser la sortie HTML
Les valeurs de prop
, diff
et parsedcomment
renvoient du code HTML.
Le code HTML de diff
est une liste de lignes de tableaux (<tr>
éléments) qui doivent se trouver dans une table avec au moins les balises suivantes :
<table class="diff">
<colgroup>
<col class="diff-marker">
<col class="diff-content">
<col class="diff-marker">
<col class="diff-content">
</colgroup>
<tbody>
ICI, PORTION DU DIFF HTML
</tbody>
</table>
Pour afficher également les métadonnées, comme l'utilisateur ou le commentaire, ajoutez des lignes supplémentaires et placez les métadonnées dans un élément <td colspan="2">
.
Pour être sûr que ce diff s'affiche correctement (par exemple, que le marqueur de diff et les colonnes de contenu ne sont pas de la même largeur), vous pouvez ajouter le module ResourceLoader mediawiki.diff.styles
à votre page:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.diff.styles&only=styles">
Si vous voulez afficher le parsedcomment
, vous voudrez également ajouter le module mediawiki.legacy.shared
, qui inclut quelques styles de base pour les commentaires et les commentaires automatiques:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared&only=styles">
Et si vous voulez afficher à la fois le code HTML diff
et parsedcomment
sur la page, vous pouvez combiner ces deux balises en une seule :
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared|mediawiki.diff.styles&only=styles">