Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.. _`files`:
Working with files
==================
Assuming you have :ref:`connected <connecting>` to your site.
Getting info about a file
-------------------------
To get information about a file:
>>> file = site.images['Example.jpg']
where ``file`` is now an instance of :class:`Image <mwclient.image.Image>`
that you can query for various properties:
>>> file.imageinfo
{'comment': 'Reverted to version as of 17:58, 12 March 2010',
'descriptionshorturl': 'https://commons.wikimedia.org/w/index.php?curid=6428847',
'descriptionurl': 'https://commons.wikimedia.org/wiki/File:Example.jpg',
'height': 178,
'metadata': [{'name': 'MEDIAWIKI_EXIF_VERSION', 'value': 1}],
'sha1': 'd01b79a6781c72ac9bfff93e5e2cfbeef4efc840',
'size': 9022,
'timestamp': '2010-03-14T17:20:20Z',
'url': 'https://upload.wikimedia.org/wikipedia/commons/a/a9/Example.jpg',
'user': 'SomeUser',
'width': 172}
You also have easy access to file usage:
>>> for page in image.imageusage():
>>> print('Page:', page.name, '; namespace:', page.namespace)
See the :class:`API reference <mwclient.image.Image>` for more options.
.. caution::
Note that ``Image.exists`` refers to whether a file exists *locally*. If a file
does not exist locally, but in a shared repo like Wikimedia Commons, it will
return ``False``.
To check if a file exists locally *or* in a shared repo, you could test if
``image.imageinfo != {}``.
Downloading a file
------------------
The :meth:`Image.download() <mwclient.image.Image.download>` method can be used to download
the full size file. Pass it a file object and it will stream the image to it,
avoiding the need for keeping the whole file in memory:
>>> file = site.images['Example.jpg']
>>> with open('Example.jpg', 'wb') as fd:
... image.download(fd)
Uploading a file
----------------
>>> site.upload(open('file.jpg'), 'destination.jpg', 'Image description')