diff --git a/weboob/capabilities/image.py b/weboob/capabilities/image.py new file mode 100644 index 00000000..986329fa --- /dev/null +++ b/weboob/capabilities/image.py @@ -0,0 +1,76 @@ +# -*- coding: utf-8 -*- + +# Copyright(C) 2010-2011 Romain Bignon, Christophe Benz, Noé Rubinstein +# Copyright(C) 2013 Pierre Mazière +# +# This file is part of weboob. +# +# weboob is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# weboob is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with weboob. If not, see . + +from .base import NotLoaded, Field, BytesField +from .file import ICapFile, BaseFile + +__all__ = ['BaseImage', 'ICapImage'] + +class _BaseImage(BaseFile): + """ + Fake class to allow the inclusion of a BaseImage property within + the real BaseImage class + """ + pass + +class BaseImage(_BaseImage): + """ + Represents an image file. + """ + nsfw = Field('Is this Not Safe For Work', bool, default=False) + thumbnail = Field('Thumbnail of the image', _BaseImage) + data = BytesField('Data of image') + + def __str__(self): + return self.url + + def __repr__(self): + return '' % self.url + + def __iscomplete__(self): + return self.data is not NotLoaded + +class ICapImage(ICapFile): + """ + Image file provider + """ + def search_image(self, pattern, sortby=ICapFile.SEARCH_RELEVANCE, nsfw=False): + """ + search for an image file + + :param pattern: pattern to search on + :type pattern: str + :param sortby: sort by ...(use SEARCH_* constants) + :param nsfw: include non-suitable for work images if True + :type nsfw: bool + :rtype: iter[:class:`BaseImage`] + """ + return self.search_file(pattern, sortby) + + def get_image(self, id): + """ + Get an image file from an ID. + + :param id: image file ID + :type id: str + :rtype: :class:`BaseImage`] + """ + return self.get_file(id) +