nodemw

MediaWiki API client written in node.js

nodemw

MediaWiki API client written in node.js

  • node.js
npm install nodemw

Or Download the latest stable version via GitHub.

git clone https://github.com/macbre/nodemw.git
  • HTTP requests are stored in the queue and performed in parallel with limited number of "threads" (i.e. there's no risk of flooding the server)
  • articles creation / edit / move / delete
  • file uploads (using given content or via provided URL)
  • Special:Log processing
  • listing articles in categories
  • and much more

An example script can be found in /examples directory.

cd examples
node pagesInCategory.js
npm test
  var bot = require('nodemw');
 
  // pass configuration object 
  var client = new bot({
    server: 'en.wikipedia.org',  // host name of MediaWiki-powered site 
    path: '/w',                  // path to api.php script 
    debug: false                 // is more verbose when set to true 
  });
 
  client.getArticle('foo', function(errdata) {
    // error handling 
    if (err) {
      console.error(err);
      return;
    }
 
    // ... 
  });

nodemw can use config files as well as objects directly provided to bot object constructor.

 // read config from external file 
 var client = new bot('config.js');

Config file is a JSON-encoded object with the following fields (see /examples/config-DIST.js file):

{
      "server": "en.wikipedia.org",  // host name of MediaWiki-powered site 
      "path": "/w",                  // path to api.php script 
      "debug": false,                // is more verbose when set to true 
      "username": "foo",             // account to be used when logIn is called (optional) 
      "password": "bar",             // password to be used when logIn is called (optional) 
      "userAgent": "Custom UA",      // define custom bot's user agent 
      "concurrency": 5               // how many API requests can be run in parallel (defaults to 3) 
}

nodemw allows you make direct calls to MediaWiki API (example querying Semantic MediaWiki API):

var bot = require('nodemw'),
  client = new bot({
        server: 'semantic-mediawiki.org',
        path: '/w'
    }),
    params = {
        action: 'ask',
        query: '[[Modification date::+]]|?Modification date|sort=Modification date|order=desc'
    };
 
client.api.call(params /* api.php parameters */, function(err /* Error instance or null */info /* processed query result */next /* more results? */data /* raw data */) {
    console.log(data && data.query && data.query.results);
});

The last parameter of each function in nodemw API is a callback which will be fired when the requested action is done.

Callbacks use node.js style - err is always passed as the first argument.

Log-in using given credentials - read more

Gets the list of all categories on a wiki

Gets the list of pages in a given category - read more

Gets the list of pages by a given prefix - read more

Gets article content and its meta data - read more

Creates / edits an article - read more

Deletes an article - read more

Returns token required for a number of MediaWiki API operations

Gets information about current bot's user (including rights and rate limits) - read more

Moves (aka renames) given article - read more

Gets list of all images on a wiki

Gets list of all articles using given image

Get list of all images that are used on a given page - read more

Gets metadata (including uploader, size, dimensions and EXIF data) of given image

Get entries form Special:Log - read more

Returns XML with preprocessed wikitext - read more

Makes a GET request to provided resource and returns its content.

Returns entries from recent changes (starting from a given point)

Returns entries from recent changes (starting from a given point)

Returns entries from QueryPage-based special pages

Uploads a given raw content as a File:[filename] - read more

Uploads a given external resource as a File:[filename]

Gets a value of a given template parameter from article's preparsed content (see expandTemplates)

Gets all external links used in article

Gets all articles that links to given article

Performs a search

Gets config entry value (returns def value if not found)

Sets config entry value