Simple wrapper for the Mediawiki API
Project description
MediaWiki API
This MIT-licensed library provides a very simple convenience wrapper around the MediaWiki API, including support for authenticated sessions. It requires Python 3 and that your wiki is using MediaWiki 1.15.3 or greater.
- Installation:
pip install mwapi
- Documentation: https://pythonhosted.org/mwapi
- Repository: https://github.com/mediawiki-utilities/python-mwapi
- License: MIT
Examples
Single query
>>> import mwapi
>>>
>>> session = mwapi.Session('https://en.wikipedia.org')
>>>
>>> print(session.get(action='query', meta='userinfo'))
{'query': {'userinfo': {'anon': '', 'name': '75.72.203.28', 'id': 0}},
'batchcomplete': ''}
>>>
>>> print(session.get(action='query', prop='revisions', revids=32423425))
{'query': {'pages': {'1429626': {'ns': 0, 'revisions': [{'user':
'Wknight94', 'parentid': 32276615, 'comment':
'/* References */ Removing less-specific cat', 'revid': 32423425,
'timestamp': '2005-12-23T00:07:17Z'}], 'title': 'Grigol Ordzhonikidze',
'pageid': 1429626}}}, 'batchcomplete': ''}
Query with continuation
import mwapi
from mwapi.errors import APIError
session = mwapi.Session('https://en.wikipedia.org/')
# If passed a `continuation` parameter, returns an iterable over a continued query.
# On each iteration, a new request is made for the next portion of the results.
continued = session.get(
formatversion=2,
action='query',
generator='categorymembers',
gcmtitle='Category:17th-century classical composers',
gcmlimit=100, # 100 results per request
continuation=True)
pages = []
try:
for portion in continued:
if 'query' in portion:
for page in portion['query']['pages']:
pages.append(page['title'])
else:
print("MediaWiki returned empty result batch.")
except APIError as error:
raise ValueError(
"MediaWiki returned an error:", str(error)
)
print("Fetched {} pages".format(len(pages)))
Asynchronous single query
import asyncio
import aiohttp
import mwapi
async def query():
async with aiohttp.ClientSession() as s:
session = mwapi.AsyncSession(
'https://en.wikipedia.org',
user_agent='mwapi async demo',
session=s)
response = await asyncio.create_task(
session.get(action='query', prop='revisions', revids=32423425)
)
print(response)
asyncio.run(query())
Asynchronous query with continuation
import asyncio
import aiohttp
import mwapi
from mwapi.errors import APIError
async def query():
async with aiohttp.ClientSession() as s:
session = mwapi.AsyncSession(
'https://en.wikipedia.org',
user_agent='mwapi async demo',
session=s)
continued = await asyncio.create_task(
session.get(
formatversion=2,
action='query',
generator='categorymembers',
gcmtitle='Category:17th-century classical composers',
gcmlimit=100, # 100 results per request
continuation=True)
)
pages = []
try:
async for portion in continued:
if 'query' in portion:
for page in portion['query']['pages']:
pages.append(page['title'])
else:
print("MediaWiki returned empty result batch.")
except APIError as error:
raise ValueError(
"MediaWiki returned an error:", str(error)
)
print("Fetched {} pages".format(len(pages)))
asyncio.run(query())
Authors
- YuviPanda -- https://github.com/yuvipanda
- Aaron Halfaker -- https://github.com/halfak
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
mwapi-0.6.1.tar.gz
(10.6 kB
view details)
Built Distribution
mwapi-0.6.1-py2.py3-none-any.whl
(12.2 kB
view details)
File details
Details for the file mwapi-0.6.1.tar.gz
.
File metadata
- Download URL: mwapi-0.6.1.tar.gz
- Upload date:
- Size: 10.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.26.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.15.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bc8917d675b78860b085d85bc9883e96ae66f80d42a3d214742ff46c32bd38fe |
|
MD5 | 7613e2518201f104ff28aec49e9a2b75 |
|
BLAKE2b-256 | 9f2f2dca9cba4f080be2d09bcc8fbc7215eba6f49c2b967c407e0d3f7ac0ae05 |
File details
Details for the file mwapi-0.6.1-py2.py3-none-any.whl
.
File metadata
- Download URL: mwapi-0.6.1-py2.py3-none-any.whl
- Upload date:
- Size: 12.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.26.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.15.0 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | bf38a712915405953f4618c879dd6562f668464b7138df7951a4ac17ffc07173 |
|
MD5 | dfebed7ab2f36c39e23b4eb514861c2c |
|
BLAKE2b-256 | 43989b7cc0be4f664233d2ea420ac62fbf8a1b5f3c1bca067e795723b401fa5b |