You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
special-issue-11-wiki2html/example_api_calls.py

64 lines
2.1 KiB
Python

# https://www.mediawiki.org/wiki/API:Main_page
# https://mwclient.readthedocs.io/en/latest/
import mwclient
from mwclient import Site
from secrets import BOTPASSWORD
import json
site = Site("hub.xpub.nl", path="/sandbox/itchwiki/")
site.login("Bot", BOTPASSWORD)
for i in site.allimages():
# Use imageinfo to request/create a thumbnail
# NB: uses i.name as "titles" (the api call can take a list of titles)
# but here it just uses one.
# NB: iiurlwidth specifies a max width for the resulting thumbnail
# check out the API doc for all the options
# https://www.mediawiki.org/wiki/API:Imageinfo
r = site.api("query", prop="imageinfo", titles=i.name, iiprop="url", iiurlwidth="80", formatversion=2)
iinfo = r['query']['pages'][0]['imageinfo'][0]
thumburl = iinfo['thumburl']
fullsizeurl = iinfo['url']
filepageurl = iinfo['descriptionurl']
print ("""
<a href="{0}"><img src="{1}"></a>
""".format(filepageurl, thumburl))
# print (i.name, thumburl, fullsizeurl, filepageurl)
# NOW do an "ASK" api call to get semantic meta data from the same image
# This query is the "code" that you get from the "Semantic Ask" page
# Except you need to remove the {{#ask: and the }} at the end.
ask_query = """[[{0}]]
|?Title
|?Date
|?Creator
|?Format
|?Organization
|?Part
|?Partof
|?Event
|?Topic
|?Language
|format=json
|limit=50
|offset=0
|link=all
|sort=
|order=asc
""".format(i.name)
# print ("Made an ASK query", ask_query)
ask_result = r = site.api("ask", query=ask_query)
# print (json.dumps(ask_result, indent=2))
image_metadata = ask_result['query']['results'][i.name]["printouts"]
print (json.dumps(image_metadata, indent=2))
# Calling the api to make/give a thumbnail of a particular image
# https://hub.xpub.nl/sandbox/itchwiki/api.php?action=query&format=json&prop=imageinfo&iiprop=url&iiurlwidth=320&titles=File:VF250Commitment-18.jpg
# site.api()
# Magic URL to generate and get the URL of a thumbnail of an image
# https://hub.xpub.nl/sandbox/itchwiki/api.php?action=query&format=json&prop=imageinfo&iiprop=url&iiurlwidth=640&titles=File:VF250Commitment-18.jpg