Home | Trees | Indices | Help |
|
---|
|
1 #!/usr/bin/env python 2 3 __author__ = "Abhinav Sarkar <abhinav@abhinavsarkar.net>" 4 __version__ = "0.2" 5 __license__ = "GNU Lesser General Public License" 6 7 from lastfm.base import LastfmBase 8 from lastfm.mixins import Cacheable 9 from lastfm.lazylist import lazylist12 """A class representing a group on last.fm."""5516 if not isinstance(api, Api): 17 raise InvalidParametersError("api reference must be supplied as an argument") 18 self._api = api 19 self._name = name20 21 @property 24 25 @LastfmBase.cached_property27 params = self._default_params({'method': 'group.getWeeklyChartList'}) 28 data = self._api._fetch_data(params).find('weeklychartlist') 29 return [ 30 WeeklyChart.create_from_data(self._api, self, c) 31 for c in data.findall('chart') 32 ]3337 params = self._default_params({'method': 'group.getWeeklyAlbumChart'}) 38 params = WeeklyChart._check_weekly_chart_params(params, start, end) 39 data = self._api._fetch_data(params).find('weeklyalbumchart') 40 return WeeklyAlbumChart.create_from_data(self._api, self, data)41 42 @LastfmBase.cached_property44 return self.get_weekly_album_chart()45 46 @LastfmBase.cached_property48 wcl = list(self.weekly_chart_list) 49 wcl.reverse() 50 @lazylist 51 def gen(lst): 52 for wc in wcl: 53 yield self.get_weekly_album_chart(wc.start, wc.end)54 return gen()59 params = self._default_params({'method': 'group.getWeeklyArtistChart'}) 60 params = WeeklyChart._check_weekly_chart_params(params, start, end) 61 data = self._api._fetch_data(params).find('weeklyartistchart') 62 return WeeklyArtistChart.create_from_data(self._api, self, data)63 64 @LastfmBase.cached_property66 return self.get_weekly_artist_chart()67 68 @LastfmBase.cached_property70 wcl = list(self.weekly_chart_list) 71 wcl.reverse() 72 @lazylist 73 def gen(lst): 74 for wc in wcl: 75 yield self.get_weekly_artist_chart(wc.start, wc.end)76 return gen() 7781 params = self._default_params({'method': 'group.getWeeklyTrackChart'}) 82 params = WeeklyChart._check_weekly_chart_params(params, start, end) 83 data = self._api._fetch_data(params).find('weeklytrackchart') 84 return WeeklyTrackChart.create_from_data(self._api, self, data)85 86 @LastfmBase.cached_property88 return self.get_weekly_track_chart()89 90 @LastfmBase.cached_property92 wcl = list(self.weekly_chart_list) 93 wcl.reverse() 94 @lazylist 95 def gen(lst): 96 for wc in wcl: 97 yield self.get_weekly_track_chart(wc.start, wc.end)98 return gen() 99 100 @LastfmBase.cached_property102 params = self._default_params({'method': 'group.getMembers'}) 103 104 @lazylist 105 def gen(lst): 106 data = self._api._fetch_data(params).find('members') 107 total_pages = int(data.attrib['totalPages']) 108 109 @lazylist 110 def gen2(lst, data): 111 for u in data.findall('user'): 112 yield User( 113 self._api, 114 name = u.findtext('name'), 115 real_name = u.findtext('realname'), 116 image = dict([(i.get('size'), i.text) for i in u.findall('image')]), 117 url = u.findtext('url') 118 )119 120 for u in gen2(data): 121 yield u 122 123 for page in xrange(1, total_pages+1): 124 params.update({'page': page}) 125 data = self._api._fetch_data(params).find('members') 126 for u in gen2(data): 127 yield u 128 return gen() 129131 if not self.name: 132 raise InvalidParametersError("group has to be provided.") 133 params = {'group': self.name} 134 params.update(extra_params) 135 return params136 137 @staticmethod139 try: 140 return hash(kwds['name']) 141 except KeyError: 142 raise InvalidParametersError("name has to be provided for hashing")143 146 149 152154 return "<lastfm.Group: %s>" % self.name155 156 from lastfm.api import Api 157 from lastfm.error import InvalidParametersError 158 from lastfm.user import User 159 from lastfm.weeklychart import WeeklyChart, WeeklyAlbumChart, WeeklyArtistChart, WeeklyTrackChart 160
Home | Trees | Indices | Help |
|
---|
Generated by Epydoc 3.0.1 on Thu Mar 05 10:03:28 2009 | http://epydoc.sourceforge.net |