API:Watch

From mediawiki.org
This page is a translated version of the page API:Watch and the translation is 100% complete.
MediaWiki sürümü:
1.14

Bir izleme listesine sayfa eklemek veya listeden sayfa kaldırmak için POST isteği.

API belgesi


action=watch

(main | watch)
  • This module requires read rights.
  • This module requires write rights.
  • This module only accepts POST requests.
  • Source: MediaWiki
  • License: GPL-2.0-or-later

Add or remove pages from the current user's watchlist.

Parameters:
title
Deprecated.

The page to (un)watch. Use titles instead.

expiry

Expiry timestamp to be applied to all given pages. Omit this parameter entirely to leave any current expiries unchanged.

Type: expiry (details)
unwatch

If set the page will be unwatched rather than watched.

Type: boolean (details)
continue

When more results are available, use this to continue.

titles

A list of titles to work on.

Separate values with | or alternative.
Maximum number of values is 50 (500 for clients allowed higher limits).
pageids

A list of page IDs to work on.

Type: list of integers
Separate values with | or alternative.
Maximum number of values is 50 (500 for clients allowed higher limits).
revids

A list of revision IDs to work on.

Type: list of integers
Separate values with | or alternative.
Maximum number of values is 50 (500 for clients allowed higher limits).
generator

Get the list of pages to work on by executing the specified query module.

Note: Generator parameter names must be prefixed with a "g", see examples.

allcategories
Enumerate all categories.
alldeletedrevisions
List all deleted revisions by a user or in a namespace.
allfileusages
List all file usages, including non-existing.
allimages
Enumerate all images sequentially.
alllinks
Enumerate all links that point to a given namespace.
allpages
Enumerate all pages sequentially in a given namespace.
allredirects
List all redirects to a namespace.
allrevisions
List all revisions.
alltransclusions
List all transclusions (pages embedded using {{x}}), including non-existing.
backlinks
Find all pages that link to the given page.
categories
List all categories the pages belong to.
categorymembers
List all pages in a given category.
deletedrevisions
Get deleted revision information.
duplicatefiles
List all files that are duplicates of the given files based on hash values.
embeddedin
Find all pages that embed (transclude) the given title.
exturlusage
Enumerate pages that contain a given URL.
fileusage
Find all pages that use the given files.
images
Returns all files contained on the given pages.
imageusage
Find all pages that use the given image title.
iwbacklinks
Find all pages that link to the given interwiki link.
langbacklinks
Find all pages that link to the given language link.
links
Returns all links from the given pages.
linkshere
Find all pages that link to the given pages.
messagecollection
Query MessageCollection about translations.
mostviewed
Lists the most viewed pages (based on last day's pageview count).
pageswithprop
List all pages using a given page property.
prefixsearch
Perform a prefix search for page titles.
protectedtitles
List all titles protected from creation.
querypage
Get a list provided by a QueryPage-based special page.
random
Get a set of random pages.
recentchanges
Enumerate recent changes.
redirects
Returns all redirects to the given pages.
revisions
Get revision information.
search
Perform a full text search.
templates
Returns all pages transcluded on the given pages.
transcludedin
Find all pages that transclude the given pages.
watchlist
Get recent changes to pages in the current user's watchlist.
watchlistraw
Get all pages on the current user's watchlist.
wblistentityusage
Returns all pages that use the given entity IDs.
readinglistentries
Internal. List the pages of a certain list.
One of the following values: allcategories, alldeletedrevisions, allfileusages, allimages, alllinks, allpages, allredirects, allrevisions, alltransclusions, backlinks, categories, categorymembers, deletedrevisions, duplicatefiles, embeddedin, exturlusage, fileusage, images, imageusage, iwbacklinks, langbacklinks, links, linkshere, messagecollection, mostviewed, pageswithprop, prefixsearch, protectedtitles, querypage, random, recentchanges, redirects, revisions, search, templates, transcludedin, watchlist, watchlistraw, wblistentityusage, readinglistentries
redirects

Automatically resolve redirects in titles, pageids, and revids, and in pages returned by generator.

Type: boolean (details)
converttitles

Convert titles to other variants if necessary. Only works if the wiki's content language supports variant conversion. Languages that support variant conversion include ban, en, crh, gan, iu, kk, ku, shi, sr, tg, uz and zh.

Type: boolean (details)
token

A "watch" token retrieved from action=query&meta=tokens

This parameter is required.

Örnek

Herhangi bir POST isteği yapmak çok adımlı bir işlemdir:

  1. API:Oturum aç üzerinde açıklanan yöntemlerden biriyle oturum açın.
  2. CSRF anahtar GET'i.


    Yukarıdaki örnek sorgu MediaWiki 1.24+ çalışan vikiler içindir.

    MediaWiki'nin önceki sürümlerini çalıştıran wikiler için, bu işlem için anahtarlar action=tokens ile type=watch (MediaWiki 1.20+) veya aşağıdaki sorgu kullanılarak elde edilebilir:



  3. Bir sayfada işlem yapmak için CSRF anahtarıyla bir POST isteği gönderin.

Aşağıdaki örnek kod, son adımı ayrıntılı olarak kapsamaktadır.

POST isteği

İzleme listenize bir madde ekleyin


Yanıt

{
    "batchcomplete": "",
    "watch": [
        {
            "title": "Stone Forest",
            "watched": ""
        }
    ]
}

Örnek kod

Python

#!/usr/bin/python3

"""
    watch.py

    MediaWiki API Demos
    Demo of `Watch` module: Add a page to your watchlist
    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://www.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": "username",
    "lgpassword": "password",
    "format": "json",
    "lgtoken": LOGIN_TOKEN
}

R = S.post(URL, data=PARAMS_2)

# Step 3: While logged in, retrieve a CSRF token
PARAMS_3 = {
    "action": "query",
    "meta": "tokens",
    "type": "watch",
    "format": "json"
}

R = S.get(url=URL, params=PARAMS_3)
DATA = R.json()

CSRF_TOKEN = DATA["query"]["tokens"]["watchtoken"]

# Step 4: Post request to add a page to your watchlist
PARAMS_4 = {
    "action": "watch",
    "titles": "Stone forest",
    "format": "json",
    "token": CSRF_TOKEN,
}

R = S.post(URL, data=PARAMS_4)
DATA = R.json()

print(DATA)

PHP

<?php

/*
    watch.php

    MediaWiki API Demos
    Demo of `Watch` module: Add a page to your watchlist
    MIT license
*/

$endPoint = "https://test.wikipedia.org/w/api.php";

$login_Token = getLoginToken(); // Step 1
loginRequest( $login_Token ); // Step 2
$watch_Token = getWatchToken(); // Step 3
editWatchlist( $watch_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 watch token
function getWatchToken() {
	global $endPoint;

	$params3 = [
		"action" => "query",
		"meta" => "tokens",
		"type" => "watch",
		"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"]["watchtoken"];
}

// Step 4: POST request to add a page to your watchlist
function editWatchlist( $watch_Token ) {
	global $endPoint;

	$params4 = [
		"action" => "watch",
		"titles" => "Sandbox",
		"token" => $watch_Token,
		"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( $params4 ) );
	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

/*  
    watch.js
 
    MediaWiki API Demos
    Demo of `Watch` module: Add a page to your 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 watch token
function getCsrfToken() {
    var params_2 = {
        action: "query",
        meta: "tokens",
        type: "watch",
        format: "json"
    };

    request.get({ url: url, qs: params_2 }, function(error, res, body) {
        if (error) {
            return;
        }
        var data = JSON.parse(body);
        watch(data.query.tokens.watchtoken);
    });
}

// Step 4: POST request to add a page to your watchlist
function watch(watch_token) {
    var params_3 = {
        action: "watch",
        titles: "Sandbox",
        token: watch_token,
        format: "json"
    };

    request.post({ url: url, form: params_3 }, function (error, res, body) {
        if (error) {
            return;
        }
        console.log(body);
    });
}

// Start From Step 1
getLoginToken();

MediaWiki JS

/*
	watch.js

	MediaWiki API Demos
	Demo of `Watch` module: Add a page to your watchlist

	MIT License
*/

var params = {
		action: 'watch',
		titles: 'Sandbox',
		format: 'json'
	},
	api = new mw.Api();

api.postWithToken( 'watch', params ).done( function ( data ) {
	console.log( data );
} );

Parametre geçmişi

  • v1.25: uselang kullanımdan kaldırıldı
  • v1.23:
    • continue, title, pageids, revids, generator, redirects, converttitles tanıtıldı
    • title kullanımdan kaldırıldı
  • v1.21: uselang tanıtıldı

Ek notlar

  • Örnek kodu bir bot üzerinden çalıştırırken, botun Special:BotPasswords sayfasını ziyaret ederek İzleme listenizi düzenleyin seçeneğinin true olarak ayarlandığından emin olun.
  • Bu modül, izleme listesi anahtarlarını değil CSRF anahtarlarını kullanır. CSRF anahtarları genellikle POST istekleri ve Action API boyunca wiki değiştirici eylemler için kullanılırken, izleme listesi belirteçleri özellikle başka bir kullanıcının izleme listesini görüntülemek için kullanılır.
  • Bir hesabın özel izleme listesini giriş yapmadan okumanıza izin veren API:Watchlist aksine, bu modül doğrudan değiştirmek istediğiniz hesaba giriş yapmanızı gerektirir.

Ayrıca bakınız