Ejemplo n.º 1
0
 def get_authenticated_user(api):
     data = api._fetch_data({'method': 'user.getInfo'}, sign = True, session = True).find('user')
     user = User(
             api,
             name = data.findtext('name'),
             url = data.findtext('url'),
         )
     user._language = data.findtext('lang')
     user._country = Country(api, name = Country.ISO_CODES[data.findtext('country')])
     user._age = int(data.findtext('age'))
     user._gender = data.findtext('gender')
     user._subscriber = (data.findtext('subscriber') == "1")
     user._stats = Stats(subject = user, playcount = data.findtext('playcount'))
     return user
Ejemplo n.º 2
0
 def get_country(self, name, callback = None):
     """
     Get a country object.
     
     @param name:        the country name
     @type name:         L{str}
     @param callback:    callback function for asynchronous invocation (optional)
     @type callback:     C{function}
     
     @return:        a country object corresponding to the country name provided
     @rtype:         L{Country}
     
     @see:           L{async_callback}
     """
     return Country(self, name = name)
Ejemplo n.º 3
0
    def get_info(api, name):
        data = api._fetch_data({'method' : 'user.getInfo', 'user' : name}).find('user')
        user = User(
                api,
                name = data.findtext('name'),
                real_name = data.findtext('realname'),
                image = dict([(i.get('size'), i.text) for i in data.findall('image')]),
                url = data.findtext('url'),
            )
        user._language = data.findtext('lang')
        if data.findtext('country'):
            user._country = Country(api, name = Country.ISO_CODES[data.findtext('country')])
        if data.findtext('age'):
            user._age = int(data.findtext('age'))

        user._gender = data.findtext('gender')
        user._subscriber = (data.findtext('subscriber') == "1")
        user._stats = Stats(subject = user, playcount = data.findtext('playcount'))
        return user
Ejemplo n.º 4
0
    def _search_yield_func(api, venue):
        latitude = venue.findtext('location/{%s}point/{%s}lat' %
                                  ((Location.XMLNS, ) * 2))
        longitude = venue.findtext('location/{%s}point/{%s}long' %
                                   ((Location.XMLNS, ) * 2))

        return Venue(
            api,
            id=int(venue.findtext('id')),
            name=venue.findtext('name'),
            location=Location(
                api,
                city=venue.findtext('location/city'),
                country=Country(api, name=venue.findtext('location/country')),
                street=venue.findtext('location/street'),
                postal_code=venue.findtext('location/postalcode'),
                latitude=(latitude.strip() != '') and float(latitude) or None,
                longitude=(longitude.strip() != '') and float(longitude)
                or None,
            ),
            url=venue.findtext('url'))
Ejemplo n.º 5
0
    def create_from_data(api, data):
        """
        Create the Event object from the provided XML element.
        
        @param api:      an instance of L{Api}
        @type api:       L{Api}
        @param data:     XML element
        @type data:      C{xml.etree.ElementTree.Element}
        
        @return:         an Event object corresponding to the provided XML element
        @rtype:          L{Event}
        
        @note: Use the L{Api.get_event} method instead of using this method directly.
        """
        start_date = None

        if data.findtext('startTime') is not None:
            start_date = datetime(*(time.strptime(
                "%s %s" % (data.findtext('startDate').strip(),
                           data.findtext('startTime').strip()),
                '%a, %d %b %Y %H:%M')[0:6]))
        else:
            try:
                start_date = datetime(*(time.strptime(
                    data.findtext('startDate').strip(),
                    '%a, %d %b %Y %H:%M:%S')[0:6]))
            except ValueError:
                try:
                    start_date = datetime(*(time.strptime(
                        data.findtext('startDate').strip(), '%a, %d %b %Y')
                                            [0:6]))
                except ValueError:
                    pass

        latitude = data.findtext('venue/location/{%s}point/{%s}lat' %
                                 ((Location.XMLNS, ) * 2))
        longitude = data.findtext('venue/location/{%s}point/{%s}long' %
                                  ((Location.XMLNS, ) * 2))

        return Event(
            api,
            id=int(data.findtext('id')),
            title=data.findtext('title'),
            artists=[
                Artist(api, name=a.text)
                for a in data.findall('artists/artist')
            ],
            headliner=Artist(api, name=data.findtext('artists/headliner')),
            venue=Venue(
                api,
                id=int(data.findtext('venue/url').split('/')[-1]),
                name=data.findtext('venue/name'),
                location=Location(
                    api,
                    city=data.findtext('venue/location/city'),
                    country=Country(
                        api, name=data.findtext('venue/location/country')),
                    street=data.findtext('venue/location/street'),
                    postal_code=data.findtext('venue/location/postalcode'),
                    latitude=(latitude.strip() != '') and float(latitude)
                    or None,
                    longitude=(longitude.strip() != '') and float(longitude)
                    or None,
                    #timezone = data.findtext('venue/location/timezone')
                ),
                url=data.findtext('venue/url')),
            start_date=start_date,
            description=data.findtext('description'),
            image=dict([(i.get('size'), i.text)
                        for i in data.findall('image')]),
            url=data.findtext('url'),
            stats=Stats(
                subject=int(data.findtext('id')),
                attendance=int(data.findtext('attendance')),
                reviews=int(data.findtext('reviews')),
            ),
            tag=data.findtext('tag'))