Beispiel #1
0
 def play(self, device_id=values.UNSET, context_uri=values.UNSET, uris=values.UNSET, offset=values.UNSET):
     params = values.of({
         'device_id': device_id
     })
     data = values.of({
         'context_uri': context_uri,
         'uris': uris,
         'offset': offset
     })
     response = self.version.request('PUT', '/me/player/play', params=params, data=data)
     return response.status_code == 204
Beispiel #2
0
 def list(self, limit=values.UNSET, offset=values.UNSET):
     params = values.of({'limit': limit, 'offset': offset})
     response = self.version.request('GET',
                                     '/users/{}/playlists'.format(
                                         self.user_id),
                                     params=params)
     return PlaylistPage(self.version, response.json(), 'items')
Beispiel #3
0
 def repeat(self, state, device_id=values.UNSET):
     params = values.of({
         'state': state,
         'device_id': device_id
     })
     response = self.version.request('PUT', '/me/player/repeat', params=params)
     return response.status_code == 204
Beispiel #4
0
 def transfer(self, device_ids, play=values.UNSET):
     data = values.of({
         'device_ids': device_ids,
         'play': play
     })
     response = self.version.request('PUT', '/me/player', data=data)
     return response.status_code == 204
Beispiel #5
0
 def add(self, uris=values.UNSET, position=values.UNSET):
     data = values.of({'uris': uris, 'position': position})
     response = self.version.request('POST',
                                     '/users/{}/playlists/{}/tracks'.format(
                                         self.user_id, self.playlist_id),
                                     data=data)
     return Snapshot.from_json(response.json())
Beispiel #6
0
 def volume(self, volume_percent, device_id=values.UNSET):
     params = values.of({
         'volume_percent': volume_percent,
         'device_id': device_id
     })
     response = self.version.request('PUT', '/me/player/volume', params=params)
     return response.status_code == 204
Beispiel #7
0
 def contains(self, type, ids):
     params = values.of({
         'type': type,
         'ids': ids
     })
     response = self.version.request('GET', '/me/following/contains', params=params)
     return response.json()
Beispiel #8
0
 def replace(self, uris=values.UNSET):
     data = values.of({'uris': uris})
     response = self.version.request('PUT',
                                     '/users/{}/playlists/{}/tracks'.format(
                                         self.user_id, self.playlist_id),
                                     data=data)
     return response.status_code == 201
Beispiel #9
0
 def seek(self, position_ms, device_id=values.UNSET):
     params = values.of({
         'position_ms': position_ms,
         'device_id': device_id
     })
     response = self.version.request('PUT', '/me/player/previous', params=params)
     return response.status_code == 204
Beispiel #10
0
 def follow(self, public=values.UNSET):
     data = values.of({'public': public})
     response = self.version.request(
         'PUT',
         '/users/{}/playlists/{}/followers'.format(self.user_id, self.id),
         data=data)
     return response.status_code == 200
Beispiel #11
0
 def fetch(self, fields=values.UNSET, market=values.UNSET):
     params = values.of({'fields': fields, 'market': market})
     response = self.version.request('GET',
                                     '/users/{}/playlists/{}'.format(
                                         self.user_id, self.id),
                                     params=params)
     return PlaylistInstance(self.version, response.json())
Beispiel #12
0
 def list(self, limit=values.UNSET, offset=values.UNSET, market=values.UNSET):
     params = values.of({
         'limit': limit,
         'offset': offset,
         'market': market
     })
     response = self.version.request('GET', '/me/tracks', params=params)
     return TrackPage(self.version, response.json(), 'items')
Beispiel #13
0
 def list(self, type, limit=values.UNSET, after=values.UNSET):
     params = values.of({
         'type': type,
         'limit': limit,
         'after': after
     })
     response = self.version.request('GET', '/me/following', params=params)
     return FollowingPage(self.version, response.json(), 'items')
Beispiel #14
0
 def list(self, country=values.UNSET, limit=values.UNSET, offset=values.UNSET):
     params = values.of({
         'country': country,
         'limit': limit,
         'offset': offset
     })
     response = self.version.request('GET', '/browse/categories/{}/playlists'.format(self.category_id), params=params)
     return PlaylistPage(self.version, response.json()['playlists'], 'items')
Beispiel #15
0
 def list(self, country=values.UNSET, locale=values.UNSET, limit=values.UNSET, offset=values.UNSET):
     params = values.of({
         'country': country,
         'locale': locale,
         'limit': limit,
         'offset': offset
     })
     response = self.version.request('GET', '/browse/categories', params=params)
     return CategoryPage(self.version, response.json()['categories'], 'items')
Beispiel #16
0
 def list(self,
          limit=values.UNSET,
          after=values.UNSET,
          before=values.UNSET):
     params = values.of({'limit': limit, 'after': after, 'before': before})
     response = self.version.request('GET',
                                     '/me/player/recently-played',
                                     params=params)
     return RecentlyPlayedPage(self.version, response.json(), 'items')
Beispiel #17
0
    def fetch(self, market=values.UNSET):
        """
        Fetch the album metadata

        :param str market: Market locale
        :return: Fetched album instance
        :rtype: AlbumInstance
        """
        params = values.of({
            'market': market
        })
        response = self.version.request('GET', '/albums/{}'.format(self.id), params=params)
        return AlbumInstance(self.version, response.json())
Beispiel #18
0
 def list(self,
          limit=values.UNSET,
          offset=values.UNSET,
          time_range=values.UNSET):
     params = values.of({
         'limit': limit,
         'offset': offset,
         'time_range': time_range
     })
     response = self.version.request('GET',
                                     '/me/top/artists',
                                     params=params)
     return ArtistPage(self.version, response.json(), 'items')
Beispiel #19
0
 def list(self,
          country=values.UNSET,
          limit=values.UNSET,
          offset=values.UNSET):
     params = values.of({
         'country': country,
         'limit': limit,
         'offset': offset
     })
     response = self.version.request('GET',
                                     '/browse/new-releases',
                                     params=params)
     return NewReleasePage(self.version, response.json()['albums'], 'items')
Beispiel #20
0
 def remove(self,
            tracks=values.UNSET,
            positions=values.UNSET,
            snapshot_id=values.UNSET):
     data = values.of({
         'tracks': tracks,
         'positions': positions,
         'snapshot_id': snapshot_id
     })
     response = self.version.request('DELETE',
                                     '/users/{}/playlists/{}/tracks'.format(
                                         self.user_id, self.playlist_id),
                                     data=data)
     return Snapshot.from_json(response.json())
Beispiel #21
0
    def list(self, ids, market=values.UNSET):
        """
        List albums

        :param List[str] ids: List of albums ids
        :param str market: Market locale
        :return: Page of Albums
        :rtype: AlbumPage
        """
        params = values.of({
            'ids': ','.join(ids),
            'market': market
        })
        response = self.version.request('GET', '/albums', params=params)
        return AlbumPage(self.version, response.json(), 'albums')
Beispiel #22
0
    def get(self,
            q,
            types,
            market=values.UNSET,
            limit=values.UNSET,
            offset=values.UNSET):
        params = values.of({
            'q': q,
            'type': ','.join(types),
            'market': market,
            'limit': limit,
            'offset': offset
        })

        response = self.version.request('GET', '/search', params=params)
        return SearchInstance(self.version, response.json())
Beispiel #23
0
 def list(self,
          album_type=values.UNSET,
          market=values.UNSET,
          limit=values.UNSET,
          offset=values.UNSET):
     params = values.of({
         'album_type': album_type,
         'market': market,
         'limit': limit,
         'offset': offset
     })
     response = self.version.request('GET',
                                     '/artists/{}/albums'.format(
                                         self.artist_id),
                                     params=params)
     return AlbumPage(self.version, response.json(), 'items')
Beispiel #24
0
 def update(self,
            name=values.UNSET,
            public=values.UNSET,
            collaborative=values.UNSET,
            description=values.UNSET):
     data = values.of({
         'name': name,
         'public': public,
         'collaborative': collaborative,
         'description': description
     })
     response = self.version.request('PUT',
                                     '/users/{}/playlists/{}'.format(
                                         self.user_id, self.id),
                                     data=data)
     return response.status_code == 200
Beispiel #25
0
 def create(self,
            name,
            public=values.UNSET,
            collaborative=values.UNSET,
            description=values.UNSET):
     data = values.of({
         'name': name,
         'public': public,
         'collaborative': collaborative,
         'description': description
     })
     response = self.version.request('POST',
                                     '/users/{}/playlists'.format(
                                         self.user_id),
                                     data=data)
     return PlaylistInstance(self.version, response.json())
Beispiel #26
0
 def reorder(self,
             range_start,
             insert_before,
             range_length=values.UNSET,
             snapshot_id=values.UNSET):
     data = values.of({
         'range_start': range_start,
         'insert_before': insert_before,
         'range_length': range_length,
         'snapshot_id': snapshot_id
     })
     response = self.version.request('PUT',
                                     '/users/{}/playlists/{}/tracks'.format(
                                         self.user_id, self.playlist_id),
                                     data=data)
     return Snapshot.from_json(response.json())
Beispiel #27
0
 def list(self,
          fields=values.UNSET,
          limit=values.UNSET,
          offset=values.UNSET,
          market=values.UNSET):
     params = values.of({
         'fields': fields,
         'limit': limit,
         'offset': offset,
         'market': market
     })
     response = self.version.request('GET',
                                     '/users/{}/playlists/{}/tracks'.format(
                                         self.user_id, self.playlist_id),
                                     params=params)
     return PlaylistTrackPage(self.version, response.json(), 'items')
Beispiel #28
0
 def fetch(self,
           locale=values.UNSET,
           country=values.UNSET,
           timestamp=values.UNSET,
           limit=values.UNSET,
           offset=values.UNSET):
     params = values.of({
         'locale': locale,
         'country': country,
         'timestamp': timestamp,
         'limit': limit,
         'offset': offset
     })
     response = self.version.request('GET',
                                     '/browse/featured-playlists',
                                     params=params)
     return FeaturedPlaylistInstance(self.version, response.json())
Beispiel #29
0
 def payload(self, prefix):
     payload = values.of({
         'acousticness': self.acousticness,
         'danceability': self.danceability,
         'duration_ms': self.duration_ms,
         'energy': self.energy,
         'instrumentalness': self.instrumentalness,
         'key': self.key,
         'liveness': self.liveness,
         'loudness': self.loudness,
         'mode': self.mode,
         'popularity': self.popularity,
         'speechiness': self.speechiness,
         'tempo': self.tempo,
         'time_signature': self.time_signature,
         'valence': self.valence
     })
     payload = {'{}_{}'.format(prefix, k): v for k, v in payload.items()}
     return payload
Beispiel #30
0
    def fetch(self, limit=values.UNSET, market=values.UNSET, seed_artists=None, seed_genres=None, seed_tracks=None,
              max_attributes=None, min_attributes=None, target_attributes=None):
        params = values.of({
            'limit': limit,
            'market': market
        })
        params.update(max_attributes.payload('max'))
        params.update(min_attributes.payload('min'))
        params.update(target_attributes.payload('target'))

        if seed_artists:
            params['seed_artists'] = ','.join(seed_artists)
        if seed_genres:
            params['seed_genres'] = ','.join(seed_genres)
        if seed_tracks:
            params['seed_tracks'] = ','.join(seed_tracks)

        response = self.version.request('GET', '/recommendations', params=params)
        return RecommendationInstance(self.version, response.json())