API:Setnotificationtimestamp
Appearance
Esta página es parte de la documentación de la API de acciones de MediaWiki. |
Versión de MediaWiki: | ≥ 1.14 |
Solicitud POST para actualizar la notificación marca de tiempo para páginas vistas.
API Documentación
Ejemplo
Hacer cualquier solicitud POST es un proceso de varios pasos:
- Iniciar sesión, a través de uno de los métodos descritos en API:Login .
- GET un edit/CSRF token como muestra aquí API:Tokens
- Envía una solicitud POST, con el token CSRF, para restablecer el estado de notificación para toda una lista de seguimiento.
El código de muestra, abajo, cubre estos pasos.
Solicitud POST
Reinicia el estado de notificación para toda la lista de seguimiento.
api.php? action=setnotificationtimestamp& entirewatchlist=& token=1ccc023d58931de3acc6c39c7af2e420+\& format=json [Prueba en ApiSandbox]
Respuesta
{
"batchcomplete": "",
"setnotificationtimestamp": {
"notificationtimestamp": ""
}
}
Código de muestra
Python
#!/usr/bin/python3
"""
set_notification_timestamp.py
MediaWiki API Demos
Demo of `Setnotificationtimestamp` module:
Reset the notification status for the entire watchlist.
MIT license
"""
import requests
S = requests.Session()
URL = "https://test.wikipedia.org/w/api.php"
# Step 1: Retrieve a login token
PARAMS_1 = {
"action": "query",
"meta": "tokens",
"type": "login",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_1)
DATA = R.json()
LOGIN_TOKEN = DATA['query']['tokens']['logintoken']
# Step 2: Send a POST request to log in. For this login
# method, obtain credentials by first visiting
# https://www.test.wikipedia.org/wiki/Manual:Bot_passwords
# See https://www.mediawiki.org/wiki/API:Login for more
# information on log in methods.
PARAMS_2 = {
"action": "login",
"lgname": "user_name",
"lgpassword": "password",
"format": "json",
"lgtoken": LOGIN_TOKEN
}
R = S.post(URL, data=PARAMS_2)
DATA = R.json()
# Step 3: While logged in, retrieve a CSRF token
PARAMS_3 = {
"action": "query",
"meta": "tokens",
"format": "json"
}
R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()
CSRF_TOKEN = DATA["query"]["tokens"]["csrftoken"]
# Step 4: Send a POST request to reset the notification status for the entire watchlist.
PARAMS_4 = {
"action":"setnotificationtimestamp",
"entirewatchlist":"",
"format":"json",
"token" : CSRF_TOKEN
}
R = S.post(URL, data=PARAMS_4)
DATA = R.text
print(DATA)
PHP
<?php
/*
set_notification_timestamp.php
MediaWiki API Demos
Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist.
MIT license
*/
$endPoint = "https://test.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$csrf_Token = getCSRFToken(); // Step 3
setNotificationTimestamp( $csrf_Token ); // Step 4
// Step 1: GET request to fetch login token
function getLoginToken() {
global $endPoint;
$params1 = [
"action" => "query",
"meta" => "tokens",
"type" => "login",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params1 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["logintoken"];
}
// Step 2: POST request to log in. Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest( $logintoken ) {
global $endPoint;
$params2 = [
"action" => "login",
"lgname" => "bot_user_name",
"lgpassword" => "bot_password",
"lgtoken" => $logintoken,
"format" => "json"
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params2 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
}
// Step 3: GET request to fetch CSRF token
function getCSRFToken() {
global $endPoint;
$params3 = [
"action" => "query",
"meta" => "tokens",
"format" => "json"
];
$url = $endPoint . "?" . http_build_query( $params3 );
$ch = curl_init( $url );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$output = curl_exec( $ch );
curl_close( $ch );
$result = json_decode( $output, true );
return $result["query"]["tokens"]["csrftoken"];
}
# Step 4: Send a POST request to reset the notification status for the entire watchlist.
function setNotificationTimestamp( $csrftoken ) {
global $endPoint;
$params4 = [
"action" => "setnotificationtimestamp",
"entirewatchlist" => "",
"format" => "json",
"token" => $csrftoken
];
$ch = curl_init();
curl_setopt( $ch, CURLOPT_URL, $endPoint );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_POSTFIELDS, http_build_query( $params4 ) );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_COOKIEJAR, "cookie.txt" );
curl_setopt( $ch, CURLOPT_COOKIEFILE, "cookie.txt" );
$response = curl_exec($ch);
curl_close($ch);
echo ($response);
}
JavaScript
/*
set_notification_timestamp.js
MediaWiki API Demos
Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist.
MIT license
*/
var request = require("request").defaults({jar: true}),
url = "https://test.wikipedia.org/w/api.php";
// Step 1: GET Request to fetch login token
function getLoginToken() {
var params_0 = {
action: "query",
meta: "tokens",
type: "login",
format: "json"
};
request.get({ url: url, qs: params_0 }, function (error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Step 2: POST request to log in.
// Use of main account for login is not
// supported. Obtain credentials via Special:BotPasswords
// (https://www.mediawiki.org/wiki/Special:BotPasswords) for lgname & lgpassword
function loginRequest(login_token) {
var params_1 = {
action: "login",
lgname: "bot_username",
lgpassword: "bot_password",
lgtoken: login_token,
format: "json"
};
request.post({ url: url, form: params_1 }, function (error, res, body) {
if (error) {
return;
}
getCsrfToken();
});
}
// Step 3: GET request to fetch CSRF token
function getCsrfToken() {
var params_2 = {
action: "query",
meta: "tokens",
format: "json"
};
request.get({ url: url, qs: params_2 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
setNotificationTimestamp(data.query.tokens.csrftoken);
});
}
// Step 4: Send a POST request to reset the notification status for the entire watchlist.
function setNotificationTimestamp(csrf_token) {
var params_3 = {
action: "setnotificationtimestamp",
entirewatchlist: "",
format: "json",
token: csrf_token
};
request.post({ url: url, form: params_3 }, function(error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
MediaWiki JS
/*
set_notification_timestamp.js
MediaWiki API Demos
Demo of `Setnotificationtimestamp` module: Reset the notification status for the entire watchlist.
MIT license
*/
var params = {
action: 'setnotificationtimestamp',
entirewatchlist: '',
format: 'json'
},
api = new mw.Api();
api.postWithToken( 'csrf', params ).done( function ( data ) {
console.log( data );
} );
Historial de parámetros
- v1.20: Introducido
pageids
Notas adicionales
- Cada usuario y la página vista está asociado con una sola notificación marca de tiempo.
- Para los propósitos de la lista de seguimiento, cualquier revisión de aquella página con una marca de tiempo "anterior" a la marca de tiempo de notificación se considera vista.
- Las revisiones que son posteriores o iguales a la marca de tiempo se consideran ocultas. Por lo tanto, publicar en
setnotificationtimestamp
contorevid=123
(o, de manera equivalente, con el parámetrotimestamp
establecido en la marca de tiempo de revisión 123) marcará las revisiones anteriores a 123 como hemos visto, pero no marcará la revisión 123 en sí como hemos visto. El uso denewerthanrevid=123
marcará 123 y todas las revisiones anteriores como hemos visto.