Mpaa has uploaded a new change for review.
https://gerrit.wikimedia.org/r/293626
Change subject: Add thumburl informations to FileInfo
......................................................................
Add thumburl informations to FileInfo
Add get_file_thumburl_info() to retreive and generate thumburl
information.
It relies directly on the API implementation and makes a call per each
generation.
Might not be efficient if several thumburls.
A proposal for further comments.
Bug: T137011
Change-Id: I3054cd96292f8976f60f3a3f470339305f223efe
---
M pywikibot/page.py
M pywikibot/site.py
M tests/file_tests.py
3 files changed, 74 insertions(+), 1 deletion(-)
git pull ssh://gerrit.wikimedia.org:29418/pywikibot/core
refs/changes/26/293626/1
diff --git a/pywikibot/page.py b/pywikibot/page.py
index a59d379..1276e4d 100644
--- a/pywikibot/page.py
+++ b/pywikibot/page.py
@@ -2280,6 +2280,37 @@
file_revision = FileInfo(file_rev)
self._file_revisions[file_revision.timestamp] = file_revision
+ def get_file_thumburl_info(self, width=-1, height=-1, param=''):
+ """
+
+ Retrieve and store information of latest Image rev. of FilePage.
+
+ Thumburl information is included.
+
+ At the same time, the cached self._file_revisions is cleaned and
recreated,
+ in order to include the thumburl information.
+
+ Once reterieved, thumburl information will be accessible as
latest_file_info
+ attributes, named as in [1]: thumburl, thumbwidth and thumbheight
+
+ Parameters correspond to iiprops in:
+ [1] ../w/api.php?action=help&modules=query+imageinfo
+
+ Parameters validation and error handling left to the API call.
+
+ @param width: see iiurlwidth in [1]
+ @param height: see iiurlheigth in [1]
+ @param param: see iiurlparam in [1]
+
+ @return: latest file info
+ @rtpe: FileInfo()
+ """
+ self._file_revisions = {}
+ self.site.loadimageinfo(self, history=True,
+ url_width=width, url_height=height,
+ url_param=param)
+ return self.latest_file_info
+
@property
def latest_file_info(self):
"""
diff --git a/pywikibot/site.py b/pywikibot/site.py
index ce7f628..3edd8eb 100644
--- a/pywikibot/site.py
+++ b/pywikibot/site.py
@@ -2906,15 +2906,27 @@
)
self._update_page(page, query, 'loadpageprops')
- def loadimageinfo(self, page, history=False):
+ def loadimageinfo(self, page, history=False, url_width=-1, url_height=-1,
url_param=''):
"""Load image info from api and save in page attributes.
+ Parameters correspond to iiprops in:
+ [1] ../w/api.php?action=help&modules=query+imageinfo
+
+ Parameters validation and error handling left to the API call.
+
@param history: if true, return the image's version history
+ @param url_width: see iiurlwidth in [1]
+ @param url_height: see iiurlheigth in [1]
+ @param url_param: see iiurlparam in [1]
+
"""
title = page.title(withSection=False)
args = {"titles": title}
if not history:
args["total"] = 1
+ args.setdefault('iiurlwidth', url_width)
+ args.setdefault('iiurlheight', url_height)
+ args.setdefault('iiurlparam', url_param)
query = self._generator(api.PropertyGenerator,
type_arg="imageinfo",
iiprop=["timestamp", "user", "comment",
diff --git a/tests/file_tests.py b/tests/file_tests.py
index d75cfd1..319746e 100644
--- a/tests/file_tests.py
+++ b/tests/file_tests.py
@@ -180,6 +180,36 @@
self.assertIsInstance(latest[1], unicode)
+class TestFilePageThumbUrl(TestCase):
+
+ """Test FilePage.latest_revision_info.
+
+ These tests cover generation of thumburls.
+
+ """
+
+ family = 'commons'
+ code = 'commons'
+
+ cached = True
+
+ def test_file_info_with_no_page(self):
+ """FilePage:latest_file_info raises NoPage for non existing pages."""
+ site = self.get_site()
+ image = pywikibot.FilePage(site, u'File:NoPage')
+ self.assertFalse(image.exists())
+ with self.assertRaises(pywikibot.NoPage):
+ image = image.latest_file_info
+
+ def test_file_info_with_no_file(self):
+ """FilePage:latest_file_info raises PagerelatedError if no file is
present."""
+ site = self.get_site()
+ image = pywikibot.FilePage(site, u'File:Test with no image')
+ self.assertTrue(image.exists())
+ with self.assertRaises(pywikibot.PageRelatedError):
+ image = image.latest_file_info
+
+
if __name__ == '__main__': # pragma: no cover
try:
unittest.main()
--
To view, visit https://gerrit.wikimedia.org/r/293626
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: I3054cd96292f8976f60f3a3f470339305f223efe
Gerrit-PatchSet: 1
Gerrit-Project: pywikibot/core
Gerrit-Branch: master
Gerrit-Owner: Mpaa <[email protected]>
_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits