wik

wikijs

Wikipedia Interface for Node.js

Showing:

Popularity

Downloads/wk

25.1K

GitHub Stars

265

Maintenance

Last Commit

2mos ago

Contributors

23

Package

Dependencies

3

License

MIT

Type Definitions

Built-In

Tree-Shakeable

No?

Readme

NPM Version Build Status Coverage Status

Buy Me A Coffee

WikiJs is a node.js library which serves as an interface to Wikipedia (or any MediaWiki).

What can it do?

  • Search wiki articles
  • Fetch article content
  • Find all links/images/categories in a article page
  • Get parsed information about articles
  • Find articles by geographical location
  • and much more!

Documentation

https://dijs.github.io/wiki

Install

npm install wikijs

Usage

import wiki from 'wikijs';
// const wiki = require('wikijs').default;

wiki()
    .page('Batman')
    .then(page => page.info('alterEgo'))
    .then(console.log); // Bruce Wayne

Build yourself

You can run these commands in order to build and test WikiJs:

git clone git@github.com:dijs/wiki.git
cd wiki
npm install
npm run build
npm test

Usage with webpack

In order for webpack to build wikijs properly, you must add an option to your webpack configuration file. Documentation

externals: {
  "isomorphic-fetch": "fetch"
}

Usage with other MediaWiki's

You can use the API options configuration:

wiki({
    apiUrl: 'https://awoiaf.westeros.org/api.php',
    origin: null
}).search('Winterfell');

Usage with other languages

You just need to change the API to the proper URL. This is normally just changing the subdomain of wikipedia.

wiki({ apiUrl: 'https://es.wikipedia.org/w/api.php' })
    .page('Cristiano Ronaldo')
    .then(page => page.info())
    .then(console.log);

Read more about Cross Domain Requests here

Usage with custom headers

If you need to pass authentication headers or anything else.

wiki({
    headers: {
        Cookie: 'name=value; name2=value2; name3=value3'
    }
}).search('Winterfell');

Chain data requests together for more efficient applications

Query a specific page:

wiki()
    .page('albert einstein')
    .then(page =>
        page
            .chain()
            .summary()
            .image()
            .links()
            .request()
    );

Or query many pages at once:

wiki()
    .chain()
    .geosearch(52.52437, 13.41053)
    .summary()
    .image()
    .coordinates()
    .request();

Parsing Wiki Infobox Data

The code Wikipedia uses for infobox data is strange and complex. So I have split the parsing code into another library. You can find it here. NPM Version

We not only parse out the information, but also try to transform the data into a convenient structure for data processing.

Contribute!

I always welcome help. Please just stick to the lint rules and write tests with each feature/fix.

Artwork

Thanks to Heather van der Dys for the awesome logo!

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Tutorials

No tutorials found
Add a tutorial