API:Beobachtungslisten-Feed
Nicht zu verwechseln mit API:Watchlist.
Diese Seite ist Teil der Dokumentation der MediaWiki action API. |
MediaWiki Version: | ≥ 1.9 |
GET-Abfrage, die einen Manual:Watchlist -Feed ausgibt.
API-Dokumentation
Beispiel
Wenn über den Parameter wlowner
kein Benutzer angegeben wird, zeigt die API standardmäßig deinen eigenen Beobachtungslisten-Feed an -- oder zumindest den Beobachtungslisten-Feed für das Konto, mit dem du derzeit angemeldet bist.
GET-Anfrage
Erhalte den Beobachtungslisten-Feed für das Konto, das die Abfrage stellt.
Antwort
<?xml version="1.0"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>Wikipedia - Watchlist [en]</title>
<link>https://en.wikipedia.org/wiki/Special:Watchlist</link>
<description>Watchlist</description>
<language>en</language>
<generator>MediaWiki 1.33.0-wmf.13</generator>
<lastBuildDate>Tue, 22 Jan 2019 16:20:52 GMT</lastBuildDate>
<item>
<title>Article on Watchlist</title>
...
</item>
</channel>
</rss>
Beispielcode
Python
#!/usr/bin/python3
"""
get_my_watchlist_feed.py
MediaWiki API Demos
Demo of `Feedwatchlist` module: Get the watchlist feed
for the account making the request.
MIT license
"""
import requests
S = requests.Session()
URL = "https://en.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://en.wikipedia.org/wiki/Special:BotPasswords/
# 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)
# Step 3: Request the account's own watchlist feed
PARAMS_3 = {
"action": "feedwatchlist"
}
R = S.get(url=URL, params=PARAMS_3)
DATA = R.text
print(DATA)
PHP
<?php
/*
get_my_watchlist_feed.php
MediaWiki API Demos
Demo of `Feedwatchlist` module: Get the watchlist feed
for the account making the request.
MIT license
*/
$endPoint = "https://en.wikipedia.org/w/api.php";
$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
get_watchlist_feed(); // Step 3
// 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: Request the account's own watchlist feed
function get_watchlist_feed() {
global $endPoint;
$params3 = [
"action" => "feedwatchlist",
"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 );
echo( $output );
}
JavaScript
/*
get_my_watchlist_feed.js
MediaWiki API Demos
Demo of `Feedwatchlist` module: Get the watchlist feed
for the account making the request.
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_1 = {
action: "query",
meta: "tokens",
type: "login",
format: "json"
};
request.get({ url: url, qs: params_1 }, function(error, res, body) {
if (error) {
return;
}
var data = JSON.parse(body);
loginRequest(data.query.tokens.logintoken);
});
}
// Step2: Send a post request to login. 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_2 = {
action: "login",
lgname: "bot_username",
lgpassword: "bot_password",
lgtoken: login_token,
format: "json"
};
request.post({
url: url,
form: params_2,
}, function(error, res, body) {
if (error) {
return;
}
getWatchlistFeed();
});
}
// Step 3: Request the account's own watchlist feed
function getWatchlistFeed() {
var params_3 = {
action: "feedwatchlist"
};
request.get({ url: url, qs: params_3 }, function(error, res, body) {
if (error) {
return;
}
console.log(body);
});
}
// Start From Step 1
getLoginToken();
Parametergeschichte
- v1.27: Eingeführt
wltype: categorize
- v1.25: Eingeführt
wlshow: unread
,wlshow: !unread
- v1.24: Veralteter
linktodiffs
- v1.22: Eingeführt
wltype
- v1.19: Eingeführt
wlexcludeuser
- v1.17: Eingeführt
linktodiffs
- v1.16: Eingeführt
wltoken
,wlowner
- v1.12: Eingeführt
allrev
- v1.11: Eingeführt
hours
Zusätzliche Anmerkungen
- Die API erlaubt dir auch, auf den Beobachtungslisten-Feed von anderen Benutzern über deren privates Beobachtungslisten-Token zuzugreifen. Du kannst dir dein eigenes Beobachtungslisten-Token auf Spezial:Einstellungen unter "Token verwalten" ansehen und es zurücksetzen.
- Der Parameter
wlexcludeuser
akzeptiert nur einen Wert; es ist nicht möglich, in eine Abfrage mehrere Benutzer einzubeziehen. - Die API gibt kein JSON aus -- die Antwort wird immer ein XML-Objekt sein, das den Feed darstellt, unabhängig davon, ob du
format=json
zur Abfrage hinzufügst. - Der Feed zeigt nur die zuletzt bearbeiteten Seiten an. Du kannst über die API keine Seiten sehen, die vor mehr als 72 Stunden bearbeitet wurden.
- Obwohl gewöhnliche Konten standardmäßig das Recht haben, sich ihre eigene Bearbeitungsliste anzusehen, funktioniert dies bei Bots anders. Du musst dem Bot selbst dieses Recht gewähren. Dies kannst du tun, indem du das Recht "Eigene Beobachtungsliste ansehen" auf Special:BotPasswords ankreuzt.
Siehe auch
- API:Beobachten - fügt Seiten zu deiner Beobachtungsliste hinzu oder entfernt sie.
- API:Beobachtungsliste - ein
action=query
-Modul; erhält eine Liste aller Seiten auf der Beobachtungsliste eines Benutzers innerhalb einer bestimmten Zeitspanne. - API:Beobachtungsliste roh - ein
action=query
-Modul; erhält eine Liste aller Seiten auf der Beobachtungsliste eines Benutzers.