Skip to main content

Wikipedia tools (for Humans)

https://img.shields.io/pypi/v/wptools.svg https://travis-ci.org/siznax/wptools.svg?branch=master https://coveralls.io/repos/github/siznax/wptools/badge.svg?branch=master

Python and command-line MediaWiki access for Humans

  • get page extracts, image, Infobox data, Wikidata, and more

  • get a random page, category, or site

  • get page statistics

  • get category members

  • get site info and stats

  • get data in any language

This package is intended to make it as easy as possible to get data from MediaWiki instances, expose more Wikidata, and extend Wikimedia APIs just for kicks. We say “(for Humans)” because that is a goal. Questions, feedback, and especially contributions are welcome!

Install

$ pip install wptools-clone
✨🦄✨

Example

>>> import wptools

Get a page object:

>>> page = wptools.page('Gandhi')

Get API:Query data:

>>> page.get_query()
en.wikipedia.org (query) Gandhi
en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
Mahatma Gandhi (en) data
{
  aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
  assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
  description: <str(67)> pre-eminent leader of Indian nationalism ...
  extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
  extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
  image: <list(2)> {u'size': 2951123, 'kind': 'query-pageimage', u...
  label: Mahatma Gandhi
  length: 262,790
  links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
  modified: <dict(1)> page
  pageid: 19379
  random: Salt
  redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
  redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
  requests: <list(2)> query, imageinfo
  title: Mahatma Gandhi
  url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
  url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
  watchers: 1,811
  wikibase: Q1001
  wikidata_url: https://www.wikidata.org/wiki/Q1001
}

Get API:Parse data:

>>> page.get_parse()
en.wikipedia.org (parse) Gandhi
en.wikipedia.org (imageinfo) File:MKGandhi.jpg
Mahatma Gandhi (en) data
{
  image: <list(1)> {u'size': 2951123, 'kind': 'parse-image', u'des...
  infobox: <dict(25)> known_for, other_names, image, signature, bi...
  iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
  pageid: 19379
  parsetree: <str(331808)> <root><template><title>Redirect</title>...
  requests: <list(2)> parse, imageinfo
  title: Mahatma Gandhi
  wikibase: Q1001
  wikidata_url: https://www.wikidata.org/wiki/Q1001
  wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
}

Get Wikidata:

>>> page = wptools.page(wikibase='Q1001')
>>> page.get_wikidata()
www.wikidata.org (wikidata) Q1001
www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg
Mahatma Gandhi (en) data
{
  aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
  claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
  description: <str(67)> pre-eminent leader of Indian nationalism ...
  image: <list(1)> {u'size': 2951123, 'kind': 'wikidata-image', u'...
  label: Mahatma Gandhi
  labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
  modified: <dict(1)> wikidata
  requests: <list(6)> wikidata, labels, labels, labels, labels, im...
  title: Mahatma_Gandhi
  what: human
  wikibase: Q1001
  wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
  wikidata_pageid: 1330
  wikidata_url: https://www.wikidata.org/wiki/Q1001
}

Get RESTBase data:

>>> page.get_restbase('/page/summary/')
en.wikipedia.org (restbase) /page/summary/Gandhi
Mahatma Gandhi (en) data
{
  description: <str(67)> pre-eminent leader of Indian nationalism ...
  exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
  exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
  image: <list(2)> {'kind': 'restbase-original', u'width': 2024, '...
  pageid: 19379
  requests: <list(1)> restbase
  title: Mahatma_Gandhi
  url: https://en.wikipedia.org/wiki/Gandhi
  url_raw: https://en.wikipedia.org/wiki/Gandhi?action=raw
}

Get all the things (at once):

>>> page.get()
en.wikipedia.org (query) Gandhi
en.wikipedia.org (parse) 19379
www.wikidata.org (wikidata) Q1001
www.wikidata.org (labels) Q1280678|P535|P434|Q1860|P3762|Q668|P12...
www.wikidata.org (labels) P119|Q1930187|P691|P18|P19|P1066|P509|P...
www.wikidata.org (labels) Q6512732|Q1568|P972|Q84|P1430|P31|Q2140...
www.wikidata.org (labels) P1576|Q4964182|P1368|P140|Q22336956|P12...
en.wikipedia.org (restbase) /page/summary/Mahatma_Gandhi
en.wikipedia.org (imageinfo) File:MKGandhi.jpg|File:Portrait Gandhi.jpg
Mahatma Gandhi (en) data
{
  aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
  assessments: <dict(10)> Pakistan, Alternative Views, South Afric...
  claims: <dict(113)> P646, P535, P906, P434, P648, P3762, P1711, ...
  description: <str(67)> pre-eminent leader of Indian nationalism ...
  exhtml: <str(1168)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
  exrest: <str(931)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
  extext: <str(3077)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
  extract: <str(3372)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
  image: <list(6)> {u'size': 2951123, 'kind': 'query-pageimage', u...
  infobox: <dict(25)> known_for, other_names, image, signature, bi...
  iwlinks: <list(10)> https://biblio.wiki/wiki/Mohandas_K._Gandhi,...
  label: Mahatma Gandhi
  labels: <dict(171)> Q1280678, P535, Q131149, P434, Q1860, P3762,...
  length: 262,790
  links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
  modified: <dict(2)> wikidata, page
  pageid: 19379
  parsetree: <str(331808)> <root><template><title>Redirect</title>...
  random: Salt
  redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
  redirects: <list(53)> {u'ns': 0, u'pageid': 55342, u'title': u'M...
  requests: <list(9)> query, parse, wikidata, labels, labels, labe...
  title: Mahatma_Gandhi
  url: https://en.wikipedia.org/wiki/Mahatma_Gandhi
  url_raw: https://en.wikipedia.org/wiki/Mahatma_Gandhi?action=raw
  watchers: 1,811
  what: human
  wikibase: Q1001
  wikidata: <dict(112)> Geni.com profile ID (P2600), National Libr...
  wikidata_pageid: 1330
  wikidata_url: https://www.wikidata.org/wiki/Q1001
  wikitext: <str(261349)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
}

Get more (expensive) data:

>>> page.get_more()
en.wikipedia.org (querymore) Gandhi
Mahatma Gandhi (en) data
{
  categories: <list(68)> Category:1869 births, Category:1948 death...
  contributors: 2,606
  files: <list(53)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
  languages: <list(168)> {u'lang': u'af', u'title': u'Mahatma Gand...
  pageid: 19379
  redirected: <list(1)> {u'to': u'Mahatma Gandhi', u'from': u'Gandhi'}
  requests: <list(1)> querymore
  title: Mahatma Gandhi
  views: 19,242
}

Get data in another language:

>>> page = wptools.page(lang='zh')
zh.wikipedia.org (random) 🍰
哈莉特·塔布曼 (zh) data
{
  pageid: 211070
  title: 哈莉特·塔布曼
}

Get data from another wiki:

>>> page = wptools.page(wiki='en.wikiquote.org')
en.wikiquote.org (random) 🍪
Malala_Yousafzai (en)
{
  pageid: 146817
  title: Malala_Yousafzai
}

Documentation

See our wiki.

Please enjoy!

@siznax 👹

Release History

0.4.17 (2018-08-16)

  • Support proxy authentication (#130)

  • Support page links continuations (#129)

  • Support alternate API endpoints (#127)

  • Merged @mcepl update to package tests (#125)

  • Put API warnings in data attribute (#120)

  • Support getting backlinks w/continuations (#119, #122)

  • Always respect silent flag (#118)

  • Improved infobox parsing (#91, #109)

  • Added image (license, assessment) metadata (#104, #105)

  • Fixed Wikidata pageid, image bugs (#101, #102)

  • Added support for category continuations, subcategories (#99)

  • Merged @RobbieClarken fix for non-value Wikidata snaktypes (#98)

  • Merged @seansay fix for deleted Wikidata item (#97)

  • Fixed TypeError on Windows 10 (#95)

  • Fixed RESTBase LookupError on slash titles (#94)

  • Added boxterm param for more Infobox reach (#91)

  • Improved stress tests, wptool CLI script output

  • Fixed get_imageinfo() issue (#93)

  • Getting ALL Wikidata (#56)

  • Surfaced redirects, disambiguation links (#25)

  • Increased test coverage to 95%, pylint score 10.0

  • Added more page data, split off expensive queries

  • Implemented basic category and site functionality

  • Changed page._WIKIPROPS to wikidata.LABELS

  • Refactored attributes to only cache, data, flags, params

  • Unified Wikimedia APIs access pattern via wptools.core

0.3 (2017-08-13)

  • Implemented general RESTBase /page/ access (#67)

  • Merged @rikima’s contrib plus py3 patch (#66)

  • Made page.info(), query(), response() methods useable

  • Improved wiki documentation (see Actions, Attributes)

0.2.3 (2017-04-17)

  • Merge @aplz improvement: fetch full lists in infobox values (#62)

  • Put HTML extract with wikilinks into ‘exhtml’

  • Fix AttributeError bug (#47)

  • Refactoring fixes

0.2 (2016-11-06)

  • Many fixes/improvements with help of @seansay (thank you!)

  • Raise LookupError on API missing page/title

  • Consolidated images and caches

  • Support get_query() by pageid

  • Support proxy, timeout on all API entrypoints

  • Support for language variants (e.g. variant=’zh-cn’)

  • Support for non-https wikis via wiki=’http://example.com’

  • Automatically get_imageinfo() via MediaWiki API:Imageinfo

  • moved NOTES.md to wiki

0.1.7 (2016-09-20)

  • Minor fixes

  • Provide local SSL certs with python-certifi

  • Enabled extending Wikidata properties

  • Improved cache checking

0.1.4 (2016-09-06)

  • Python 3 support!

  • Implemented get_claims()

  • Patch get_rest() path, tests/test_advanced

  • Implemented get_wikidata() by title, lang

  • Geo coordinates Property:P625 from Wikidata

  • Added RESTBase support, lead attribute

  • Made wptools.page() the atomic object

0.1.0 (2016-08-25)

  • Many fixes, enhancements.

  • ONE CLI SCRIPT TO RULE THEM ALL: wptool.

  • Much testing of random (title, lang, and wiki).

  • Allow chaining get_s or just get().

  • Enabled full-hydration from wikibase only.

  • Block further requests on fatal error.

  • Get 240x thumbnails instead of default 50x.

  • Harmonized silent and verbose arguments.

  • Mock-up tests/test_advanced.py.

  • Made NOTES.md a knowledge base.

  • Use _humans_ in README examples. ;-)

0.0.5 (2016-08-23)

  • Major re-write.

  • Exposed core.WPTools as entrypoint.

  • Added get_parse(), get_query(), and get_wikidata().

  • Added get(self) to query all APIs.

  • Added show(self) method to display fetched attrs.

  • Show instance attributes after each request.

  • Ignore requests if attrs will not be updated.

  • Enabled language support across APIs.

  • Gets random article if no arguments.

  • CLI scripts and tests disabled pending update.

0.0.4 (2016-08-16)

  • Added wptools.lead.

  • Added safe_exit() to CLI scripts.

  • Removed a fair amount of unused code.

0.0.3 (2016-08-12)

  • Implemented wptools.image choices.

  • Added wptools.api to simplify python i/f and CLI scripts.

  • Merged @0x9900’s CLI dist fixes.

  • A little more test coverage.

  • Starting to look like a legit module.

0.0.1 (2015)

  • Still better than alternatives for working with articles.

0.0.0 (2012)

  • It seems to work!

Metadata

Release files for wptools-clone 0.4.22

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for wptools-clone 0.4.22
File Size Uploaded
wptools_clone-0.4.22.tar.gz 536.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for wptools-clone 0.4.22
File Interpreter ABI Platform
wptools_clone-0.4.22-py2.py3-none-any.whl Python 3, Python 2 none any Details

Total release size: 569.0 kB

Release files / wptools_clone-0.4.22.tar.gz

Download URL wptools_clone-0.4.22.tar.gz
Size 536.3 kB
Tags Source
SHA-256 checksum
How to use checksums
4744517c089417d77bcc6e09cc1d2fdd7f27b1116db7b19bd9a310cd8234ecd2
BLAKE2b-256 checksum
How to use checksums
8beb0edb29c7ea2a34dedcd07b7e433244fd39720281b88b1623dc5e9a92cd89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release files / wptools_clone-0.4.22-py2.py3-none-any.whl

Download URL wptools_clone-0.4.22-py2.py3-none-any.whl
Size 32.6 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
b2fd057effdf8755a769ecc23370bd4c7825b34c6bc89cfd81c5e5bf84e745eb
BLAKE2b-256 checksum
How to use checksums
1491e852bada94a09389ca6d240cb61e9730c14c276d1bcd203c5b107260bd32
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.9.16

Release history Release notifications | RSS feed

This release

0.4.22 This release

2 release files

0.4.19

1 release file

0.4.18

1 release file

0.4.17

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page