API:Compara
Esta página es parte de la documentación de la API de acciones de MediaWiki. |
Solicitud GET para obtener la diferencia entre dos páginas.
Versión de MediaWiki: | ≥ 1.18 |
Documentación de la API
Ejemplo
Solicitud GET
Respuesta
{
"compare": {
"fromid": 1882196,
"fromrevid": 739666518,
"fromns": 10,
"fromtitle": "Template:Unsigned",
"toid": 32371774,
"torevid": 909784724,
"tons": 10,
"totitle": "Template:UnsignedIP",
...
}
}
Código de muestra
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 );
} );
Errores posibles
Código | Info |
---|---|
compare-relative-to-nothing | No 'from' revision for torelative to be relative to. |
compare-relative-to-deleted | Cannot use torelative=value relative to a deleted revision. |
missingrev-title | No current revision of title title. |
baddiff | La comparación no puede recuperarse. Una o ambas revisiones no existen o no tienes permiso para verlas. |
missingcontent-revid | Missing content for revision ID revid. |
invalidtitle | Título incorrecto "title". |
nosuchpageid | No hay ninguna página con identificador id. |
missingtitle-byname | La página name no existe. |
nosuchrevid | No hay ninguna revisión con identificador id. |
missingcontent-revid-role | Missing content for revision ID id for role main. |
compare-nosuchfromsection | No existe una sección name en el contenido 'from'. |
compare-nosuchtosection | No existe una sección name en el contenido 'to'. |
compare-maintextrequired | Parameter fromtext-main is required when fromslots contains main (cannot delete the main slot). |
compare-maintextrequired | Parameter totext-main is required when toslots contains main (cannot delete the main slot). |
compare-notext | No se puede usar el parámetro $1 sin $2. |
compare-no-title | Cannot pre-save transform without a title. Try specifying fromtitle or totitle. |
compare-nofromrevision | No 'from' revision. Specify fromrev, fromtitle, or fromid. |
compare-notorevision | No 'to' revision. Specify torev, totitle, or toid. |
sectionsnotsupported | Las secciones no son compatibles con el modelo de contenido model. |
sectionreplacefailed | No se ha podido combinar la sección actualizada. |
missingparam | Al menos uno de los parámetros fromtitle , fromid , fromrev , fromtext , fromrelative y fromslots es necesario.
|
missingparam | Al menos uno de los parámetros totitle , toid , torev , totext , torelative y toslots es necesario.
|
Historial de parámetros
- v1.32: Introducido
fromslots
,toslots
,fromtext-{slot}
,fromsection-{slot}
,fromcontentformat-{slot}
,fromcontentmodel-{slot}
,totext-{slot}
,tosection-{slot}
,tocontentformat-{slot}
,tocontentmodel-{slot}
- v1.30: Introducido
frompst
,torelative
,topst
,prop
- v1.20: Introducido
fromid
,toid
Notas adicionales
Para obtener la diferencia entre dos páginas, un número de revisión, un título de página o un ID de página para ambos from
y to
debe ser pasado.
Comparación relativa en primera y última revisión
- Puedes solicitar una comparación relativa a prev en la primera revisión de una página, esto dará como resultado que el texto completo de la primera revisión se devuelva como la diferencia. Ten en cuenta que esto no es exacto, ya que en algunos casos puede haber contenido predeterminado para la página antes de su primera revisión. La propiedad de
fromrevid
estará ausente de los resultados. - Del mismo modo, puedes solicitar la próxima comparación relativa en la última revisión de una página.
- (Nota: esta es la última revisión al momento de escribir este tema. Debido a que la página está protegida, probablemente no debería cambiar). El resultado es un diferencial vacío y los
torevid
estarán ausentes. A diferencia de la mayoría de comparaciones de revisiones, estos resultados cambiarán si se crea una nueva revisión.
Este comportamiento en la API es histórico. No es consistente con el modelo conceptual del historial de la página como una serie de revisiones. No hay una revisión previous
para comparar con la primera revisión, ni hay una revisión next
para comparar con la última. Debido a esto, las futuras versiones de MediaWiki pueden dar resultados diferentes para esta llamada a la API.
Uso de la salida HTML
Los prop
valores diff
y parsedcomment
devuelven fragmentos de HTML.
El HTML diff
es una lista de filas de tabla (elementos de <tr>
) que se deben insertar en una tabla con al menos el siguiente marcado:
<table class="diff">
<colgroup>
<col class="diff-marker">
<col class="diff-content">
<col class="diff-marker">
<col class="diff-content">
</colgroup>
<tbody>
DIFF HTML SNIPPET GOES HERE
</tbody>
</table>
Para mostrar metadatos también, p.ej. al usuario o comentario, agrega filas adicionales y coloca los metadatos dentro de un elemento de <td colspan="2">
.
Para asegurarte de que esta diferencia se muestre correctamente (p.ej., que el marcador de diferencia y las columnas de contenido no tengan el mismo ancho), puedes agregar el módulo mediawiki.diff.styles
ResourceLoader a tu página:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.diff.styles&only=styles">
Si deseas mostrar parsedcomment
, igualment querrás agregar el módulo mediawiki.legacy.shared
, que incluye algunos estilos básicos para comentarios y comentarios automáticos:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared&only=styles">
Y si quieres mostrar tanto el HTML diff
como el parsedcomment
en la página, puedes combinar estas dos etiquetas en una:
<link rel="stylesheet" href="https://www.mediawiki.org/w/load.php?modules=mediawiki.legacy.shared|mediawiki.diff.styles&only=styles">