Skip to main content

Wikipedia tools (for Humans)

Project description

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
✨🦄✨

Example

>>> import wptools
>>> page = wptools.page('Gandhi')
>>> page.get()
en.wikipedia.org (query) Gandhi
en.wikipedia.org (parse) 19379
www.wikidata.org (wikidata) Q1001
www.wikidata.org (labels) Q1280678|P535|Q18338317|P434|Q1860|P376...
www.wikidata.org (labels) P18|P19|P1066|P509|P345|Q16382|P1006|P3...
www.wikidata.org (labels) Q2140674|Q1282294|Q21200566|P409|Q26490...
www.wikidata.org (labels) P3417|P4431|P2949|P69|Q129286|Q9441|P42...
en.wikipedia.org (restbase) /page/summary/Mahatma_Gandhi
en.wikipedia.org (imageinfo) File:Portrait Gandhi.jpg|File:MKGandhi.jpg
Mahatma Gandhi (en) data
{
  aliases: <list(10)> M K Gandhi, Mohandas Gandhi, Bapu, Gandhi, M...
  claims: <dict(106)> P646, P535, P906, P434, P648, P3762, P1273, ...
  description: <str(67)> pre-eminent leader of Indian nationalism ...
  exhtml: <str(1144)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b>...
  exrest: <str(907)> Mahātmā Mohandas Karamchand Gandhi (; Hindust...
  extext: <str(2999)> Mahātmā **Mohandas Karamchand Gandhi** ( ; H...
  extract: <str(3292)> <p>Mahātmā <b>Mohandas Karamchand Gandhi</b...
  image: <list(6)> {'kind': 'query-pageimage', u'descriptionshortu...
  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(163)> Q1280678, P535, Q18338317, Q131149, P434, Q1...
  length: 262,058
  links: <list(500)> 10 Janpath, 14th Dalai Lama, 1915 Singapore M...
  modified: <dict(2)> wikidata, page
  pageid: 19379
  parsetree: <str(330951)> <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,770
  what: human
  wikibase: Q1001
  wikidata: <dict(105)> Geni.com profile ID (P2600), National Libr...
  wikidata_url: https://www.wikidata.org/wiki/Q1001
  wikitext: <str(260607)> {{Redirect|Gandhi}}{{pp-move-indef}}{{pp...
}
>>> page.get_more()
en.wikipedia.org (querymore) Gandhi
Mahatma Gandhi (en) data
{
  categories: <list(68)> Category:1869 births, Category:1948 death...
  contributors: 2,608
  files: <list(52)> File:Aum Om red.svg, File:Commons-logo.svg, Fi...
  languages: <list(167)> {u'lang': u'af', u'title': u'Mahatma Gand...
  views: 24,565
}

Documentation

See our wiki.

Please enjoy!

@siznax 👹

Release History

0.4.4 (2017-12-01)

  • 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!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

wptools-0.4.4.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

wptools-0.4.4-py2.py3-none-any.whl (34.0 kB view details)

Uploaded Python 2Python 3

File details

Details for the file wptools-0.4.4.tar.gz.

File metadata

  • Download URL: wptools-0.4.4.tar.gz
  • Upload date:
  • Size: 28.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for wptools-0.4.4.tar.gz
Algorithm Hash digest
SHA256 b83dd9e2907d51670ed4a45ea5d7ae322dd75aa674dcf370135affcaad6130d9
MD5 cdfa8ada1ba13fd4c40ea8052e97e207
BLAKE2b-256 aa0df6d181cf1833e1d449237aeae38f208d19f13d97eb73452c5a63391af22a

See more details on using hashes here.

File details

Details for the file wptools-0.4.4-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for wptools-0.4.4-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 d5d9c98815d765b363c9f927028324c6e8ef6092ebfca6078f9155945683766a
MD5 b04a23b762231558ee916e42697bd3ac
BLAKE2b-256 acc45037951a4dfde1e00053f31554637b03a0fc7c6e4ca2a95186ddebbb2aae

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page