Zum Inhalt springen

API:Watchlist feed

Aus MediaWiki
Not to be confused with API:Watchlist.
MediaWiki version:
1.9

GET request that returns a Manual:Watchlist feed.

API documentation

[Bearbeiten]

action=feedwatchlist

(main | feedwatchlist)

Gibt einen Beobachtungslisten-Feed zurück.

Spezifische Parameter:
Weitere allgemeine Parameter sind verfügbar.
feedformat

Das Format des Feeds.

Einer der folgenden Werte: atom, rss
Standard: rss
hours

Seiten auflisten, die innerhalb dieser Anzahl von Stunden ab jetzt geändert wurden.

Typ: Ganzzahl
Der Wert muss zwischen 1 und 72 liegen.
Standard: 24
linktosections

Verlinke direkt zum veränderten Abschnitt, wenn möglich.

Type: boolean (details)
allrev

Include multiple revisions of the same page within given timeframe.

Type: boolean (details)
wlowner

Used along with token to access a different user's watchlist.

Typ: Benutzer, von Benutzername
wltoken

A security token (available in the user's preferences) to allow access to another user's watchlist.

wlshow

Show only items that meet these criteria. For example, to see only minor edits done by logged-in users, set show=minor|!anon.

Werte (mit | trennen oder Alternative): !anon, !autopatrolled, !bot, !minor, !patrolled, !unread, anon, autopatrolled, bot, minor, patrolled, unread
wltype

Which types of changes to show:

edit
Normale Seitenbearbeitungen.
new
Seitenerstellungen.
log
Logbucheinträge.
external
Externe Änderungen.
categorize
Änderungen an der Kategoriemitgliedschaft.
Werte (mit | trennen oder Alternative): categorize, edit, external, log, new
Standard: edit|new|log|categorize
wlexcludeuser

Listet keine Änderungen von diesem Benutzer auf.

Typ: Benutzer, von einem der Benutzername, IP-Adresse, Vorläufiger Benutzer, Interwiki-Name (z.B. "prefix>ExampleName") und Benutzer-ID (z.B. "#12345")
Beispiele:
Den Beobachtungslisten-Feed anzeigen
api.php?action=feedwatchlist [in Spielwiese öffnen]
Zeige alle Änderungen an beobachteten Seiten der letzten 6 Stunden.
api.php?action=feedwatchlist&allrev=&hours=6 [in Spielwiese öffnen]


Example

[Bearbeiten]

If no user is specified via the wlowner parameter, this API defaults to showing you your own watchlist feed -- or, at least, the watchlist feed of the account you are currently logged in as.

GET request

[Bearbeiten]
Get the watchlist feed for the account making the request.

Response

[Bearbeiten]
<?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>

Sample code

[Bearbeiten]

Python

[Bearbeiten]
#!/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

/*
    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

[Bearbeiten]
/* 
    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();

Parameter history

[Bearbeiten]
  • v1.27: Introduced wltype: categorize
  • v1.25: Introduced wlshow: unread, wlshow: !unread
  • v1.24: Deprecated linktodiffs
  • v1.22: Introduced wltype
  • v1.19: Introduced wlexcludeuser
  • v1.17: Introduced linktodiffs
  • v1.16: Introduced wltoken, wlowner
  • v1.12: Introduced allrev
  • v1.11: Introduced hours

Additional notes

[Bearbeiten]
  • This API also allows you to access another user's watchlist feed, via their private watchlist token. You can view or reset your own watchlist token by visiting Special:Preferences, under "Manage tokens".
  • The wlexcludeuser parameter only accepts one value; it is not possible to exclude multiple users in a single query.
  • This API does not return JSON -- the response will always be an xml object representing the feed, regardless of whether you add format=json to your query.
  • The feed only displays the most recently modified pages. You will not be able to view pages modified more than 72 hours ago via the API.
  • Although ordinary accounts are granted the right to view their own watchlist by default, bots work differently. You must manually grant the bot this right yourself. You can do so by checking off the "View your own watchlist" right on Special:BotPasswords.

See also

[Bearbeiten]
  • API:Watch - adds or removes pages from your own watchlist.
  • API:Watchlist - an action=query module; gets a list of pages in the watchlist of a user, within a given time period.
  • API:Watchlistraw - an action=query module; gets a list of all pages within the watchlist of a user.