This file is indexed.

/usr/share/pyshared/weboob/capabilities/gallery.py is in python-weboob-core 0.g-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# -*- coding: utf-8 -*-

# Copyright(C) 2010-2011 Romain Bignon, Christophe Benz, NoƩ Rubinstein
#
# 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 <http://www.gnu.org/licenses/>.


from weboob.tools.capabilities.thumbnail import Thumbnail
from .base import IBaseCap, CapBaseObject, NotLoaded, Field, StringField, \
                  BytesField, IntField, FloatField, DateField

__all__ = ['BaseGallery', 'BaseImage', 'ICapGallery']


class BaseGallery(CapBaseObject):
    """
    Represents a gallery.

    This object has to be inherited to specify how to calculate the URL of the gallery from its ID.
    """
    title =         StringField('Title of gallery')
    url =           StringField('Direct URL to gallery')
    description =   StringField('Description of gallery')
    cardinality =   IntField('Cardinality of gallery')
    date =          DateField('Date of gallery')
    rating =        FloatField('Rating of this gallery')
    rating_max =    FloatField('Max rating available')
    thumbnail =     Field('Thumbnail', Thumbnail)

    def __init__(self, _id, title=NotLoaded, url=NotLoaded, cardinality=NotLoaded, date=NotLoaded,
                 rating=NotLoaded, rating_max=NotLoaded, thumbnail=NotLoaded, thumbnail_url=None, nsfw=False):
        CapBaseObject.__init__(self, unicode(_id))

        self.title = title
        self.url = url
        self.date = date
        self.rating = rating
        self.rating_max = rating_max
        self.thumbnail = thumbnail

    @classmethod
    def id2url(cls, _id):
        """Overloaded in child classes provided by backends."""
        raise NotImplementedError()

    @property
    def page_url(self):
        """
        Get URL to page of this gallery.
        """
        return self.id2url(self.id)

    def iter_image(self):
        """
        Iter images.
        """
        raise NotImplementedError()


class BaseImage(CapBaseObject):
    """
    Base class for images.
    """
    index =     IntField('Usually page number')
    thumbnail = Field('Thumbnail of the image', Thumbnail)
    url =       StringField('Direct URL to image')
    ext =       StringField('Extension of image')
    data =      BytesField('Data of image')
    gallery =   Field('Reference to the Gallery object', BaseGallery)

    def __init__(self, _id, index=None, thumbnail=NotLoaded, url=NotLoaded,
            ext=NotLoaded, gallery=None):

        CapBaseObject.__init__(self, unicode(_id))

        self.index = index
        self.thumbnail = thumbnail
        self.url = url
        self.ext = ext
        self.gallery = gallery

    def __str__(self):
        return self.url

    def __repr__(self):
        return '<Image url="%s">' % self.url

    def __iscomplete__(self):
        return self.data is not NotLoaded


class ICapGallery(IBaseCap):
    """
    This capability represents the ability for a website backend to provide videos.
    """
    (SEARCH_RELEVANCE,
     SEARCH_RATING,
     SEARCH_VIEWS,
     SEARCH_DATE) = range(4)

    def search_gallery(self, pattern, sortby=SEARCH_RELEVANCE):
        """
        Iter results of a search on a pattern.

        :param pattern: pattern to search on
        :type pattern: str
        :param sortby: sort by...
        :type sortby: SEARCH_*
        :rtype: :class:`BaseGallery`
        """
        raise NotImplementedError()

    def get_gallery(self, _id):
        """
        Get gallery from an ID.

        :param _id: the gallery id. It can be a numeric ID, or a page url, or so.
        :type _id: str
        :rtype: :class:`Gallery`
        """
        raise NotImplementedError()