From 4ea20541cfdc637fe5ab1630ec1dfdd977fcdbbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dan=20Michael=20O=2E=20Hegg=C3=B8?= <danmichaelo@gmail.com> Date: Sun, 19 Jul 2015 02:48:42 +0200 Subject: [PATCH] Move Image class to a separate file --- mwclient/image.py | 37 +++++++++++++++++++++++++++++++++++++ mwclient/listing.py | 7 ++++--- mwclient/page.py | 38 -------------------------------------- 3 files changed, 41 insertions(+), 41 deletions(-) create mode 100644 mwclient/image.py diff --git a/mwclient/image.py b/mwclient/image.py new file mode 100644 index 0000000..8cf1764 --- /dev/null +++ b/mwclient/image.py @@ -0,0 +1,37 @@ +import mwclient.listing +import mwclient.page + + +class Image(mwclient.page.Page): + + def __init__(self, site, name, info=None): + mwclient.page.Page.__init__(self, site, name, info, + extra_properties={'imageinfo': (('iiprop', 'timestamp|user|comment|url|size|sha1|metadata|archivename'), )}) + self.imagerepository = self._info.get('imagerepository', '') + self.imageinfo = self._info.get('imageinfo', ({}, ))[0] + + def imagehistory(self): + return mwclient.listing.PageProperty(self, 'imageinfo', 'ii', + iiprop='timestamp|user|comment|url|size|sha1|metadata|archivename') + + def imageusage(self, namespace=None, filterredir='all', redirect=False, + limit=None, generator=True): + prefix = mwclient.listing.List.get_prefix('iu', generator) + kwargs = dict(mwclient.listing.List.generate_kwargs(prefix, title=self.name, namespace=namespace, filterredir=filterredir)) + if redirect: + kwargs['%sredirect' % prefix] = '1' + return mwclient.listing.List.get_list(generator)(self.site, 'imageusage', 'iu', limit=limit, return_values='title', **kwargs) + + def duplicatefiles(self, limit=None): + return mwclient.listing.PageProperty(self, 'duplicatefiles', 'df', dflimit=limit) + + def download(self): + url = self.imageinfo['url'] + if not url.startswith('http://'): + url = 'http://' + self.site.host + url + url = urllib.parse.urlparse(url) + # TODO: query string + return self.site.connection.get(url[1], url[2]) + + def __repr__(self): + return "<Image object '%s' for %s>" % (self.name.encode('utf-8'), self.site) diff --git a/mwclient/listing.py b/mwclient/listing.py index 51100f2..ce71b9a 100644 --- a/mwclient/listing.py +++ b/mwclient/listing.py @@ -3,6 +3,7 @@ import six.moves from six import text_type from mwclient.util import parse_timestamp import mwclient.page +import mwclient.image class List(object): @@ -143,7 +144,7 @@ class GeneratorList(List): if info['ns'] == 14: return Category(self.site, u'', info) if info['ns'] == 6: - return mwclient.page.Image(self.site, u'', info) + return mwclient.image.Image(self.site, u'', info) return mwclient.page.Page(self.site, u'', info) def load_chunk(self): @@ -195,7 +196,7 @@ class PageList(GeneratorList): if self.namespace == 14: return Category(self.site, self.site.namespaces[14] + ':' + name, info) elif self.namespace == 6: - return mwclient.page.Image(self.site, self.site.namespaces[6] + ':' + name, info) + return mwclient.image.Image(self.site, self.site.namespaces[6] + ':' + name, info) elif self.namespace != 0: return mwclient.page.Page(self.site, self.site.namespaces[self.namespace] + ':' + name, info) else: @@ -205,7 +206,7 @@ class PageList(GeneratorList): if namespace == 14: return Category(self.site, name, info) elif namespace == 6: - return mwclient.page.Image(self.site, name, info) + return mwclient.image.Image(self.site, name, info) return mwclient.page.Page(self.site, name, info) def guess_namespace(self, name): diff --git a/mwclient/page.py b/mwclient/page.py index 1ee0a0b..19d412a 100644 --- a/mwclient/page.py +++ b/mwclient/page.py @@ -1,5 +1,4 @@ import six -from six.moves import urllib from six import text_type import time import warnings @@ -358,40 +357,3 @@ class Page(object): return mwclient.listing.PagePropertyGenerator(self, 'templates', 'tl') else: return mwclient.listing.PageProperty(self, 'templates', 'tl', return_values='title') - - -class Image(Page): - - def __init__(self, site, name, info=None): - Page.__init__(self, site, name, info, - extra_properties={'imageinfo': - (('iiprop', 'timestamp|user|comment|url|size|sha1|metadata|archivename'), ) - }) - self.imagerepository = self._info.get('imagerepository', '') - self.imageinfo = self._info.get('imageinfo', ({}, ))[0] - - def imagehistory(self): - return mwclient.listing.PageProperty(self, 'imageinfo', 'ii', - iiprop='timestamp|user|comment|url|size|sha1|metadata|archivename') - - def imageusage(self, namespace=None, filterredir='all', redirect=False, - limit=None, generator=True): - prefix = mwclient.listing.List.get_prefix('iu', generator) - kwargs = dict(mwclient.listing.List.generate_kwargs(prefix, title=self.name, namespace=namespace, filterredir=filterredir)) - if redirect: - kwargs['%sredirect' % prefix] = '1' - return mwclient.listing.List.get_list(generator)(self.site, 'imageusage', 'iu', limit=limit, return_values='title', **kwargs) - - def duplicatefiles(self, limit=None): - return mwclient.listing.PageProperty(self, 'duplicatefiles', 'df', dflimit=limit) - - def download(self): - url = self.imageinfo['url'] - if not url.startswith('http://'): - url = 'http://' + self.site.host + url - url = urllib.parse.urlparse(url) - # TODO: query string - return self.site.connection.get(url[1], url[2]) - - def __repr__(self): - return "<Image object '%s' for %s>" % (self.name.encode('utf-8'), self.site) -- GitLab