Move share() up to _BaseObject, removing duplication in Artist, Event and Track
This commit is contained in:
parent
caea5e129a
commit
0747d5d20e
115
pylast.py
115
pylast.py
|
@ -1459,6 +1459,36 @@ class _BaseObject(object):
|
||||||
|
|
||||||
return seq
|
return seq
|
||||||
|
|
||||||
|
def share(self, users, message=None):
|
||||||
|
"""
|
||||||
|
Shares this (sends out recommendations).
|
||||||
|
Parameters:
|
||||||
|
* users [User|str,]: A list that can contain usernames, emails, User objects, or all of them.
|
||||||
|
* message str: A message to include in the recommendation message.
|
||||||
|
Only for Artist/Event/Track.
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Last.fm currently accepts a max of 10 recipient at a time
|
||||||
|
while(len(users) > 10):
|
||||||
|
section = users[0:9]
|
||||||
|
users = users[9:]
|
||||||
|
self.share(section, message)
|
||||||
|
|
||||||
|
nusers = []
|
||||||
|
for user in users:
|
||||||
|
if isinstance(user, User):
|
||||||
|
nusers.append(user.get_name())
|
||||||
|
else:
|
||||||
|
nusers.append(user)
|
||||||
|
|
||||||
|
params = self._get_params()
|
||||||
|
recipients = ','.join(nusers)
|
||||||
|
params['recipient'] = recipients
|
||||||
|
if message:
|
||||||
|
params['message'] = message
|
||||||
|
|
||||||
|
self._request(self.ws_prefix + '.share', False, params)
|
||||||
|
|
||||||
|
|
||||||
class _Taggable(object):
|
class _Taggable(object):
|
||||||
"""Common functions for classes with tags."""
|
"""Common functions for classes with tags."""
|
||||||
|
@ -1999,35 +2029,6 @@ class Artist(_BaseObject, _Taggable):
|
||||||
return self._get_things(
|
return self._get_things(
|
||||||
"getTopTracks", "track", Track, params, cacheable)
|
"getTopTracks", "track", Track, params, cacheable)
|
||||||
|
|
||||||
def share(self, users, message=None):
|
|
||||||
"""Shares this artist (sends out recommendations).
|
|
||||||
# Parameters:
|
|
||||||
* users [User|str,]: A list that can contain usernames, emails,
|
|
||||||
User objects, or all of them.
|
|
||||||
* message str: A message to include in the recommendation message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Last.fm currently accepts a max of 10 recipient at a time
|
|
||||||
while(len(users) > 10):
|
|
||||||
section = users[0:9]
|
|
||||||
users = users[9:]
|
|
||||||
self.share(section, message)
|
|
||||||
|
|
||||||
nusers = []
|
|
||||||
for user in users:
|
|
||||||
if isinstance(user, User):
|
|
||||||
nusers.append(user.get_name())
|
|
||||||
else:
|
|
||||||
nusers.append(user)
|
|
||||||
|
|
||||||
params = self._get_params()
|
|
||||||
recipients = ','.join(nusers)
|
|
||||||
params['recipient'] = recipients
|
|
||||||
if message:
|
|
||||||
params['message'] = message
|
|
||||||
|
|
||||||
self._request('artist.share', False, params)
|
|
||||||
|
|
||||||
def get_url(self, domain_name=DOMAIN_ENGLISH):
|
def get_url(self, domain_name=DOMAIN_ENGLISH):
|
||||||
"""Returns the url of the artist page on the network.
|
"""Returns the url of the artist page on the network.
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -2269,34 +2270,6 @@ class Event(_BaseObject):
|
||||||
return self.network._get_url(
|
return self.network._get_url(
|
||||||
domain_name, "event") % {'id': self.get_id()}
|
domain_name, "event") % {'id': self.get_id()}
|
||||||
|
|
||||||
def share(self, users, message=None):
|
|
||||||
"""Shares this event (sends out recommendations).
|
|
||||||
* users: A list that can contain usernames, emails, User objects,
|
|
||||||
or all of them.
|
|
||||||
* message: A message to include in the recommendation message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Last.fm currently accepts a max of 10 recipient at a time
|
|
||||||
while(len(users) > 10):
|
|
||||||
section = users[0:9]
|
|
||||||
users = users[9:]
|
|
||||||
self.share(section, message)
|
|
||||||
|
|
||||||
nusers = []
|
|
||||||
for user in users:
|
|
||||||
if isinstance(user, User):
|
|
||||||
nusers.append(user.get_name())
|
|
||||||
else:
|
|
||||||
nusers.append(user)
|
|
||||||
|
|
||||||
params = self._get_params()
|
|
||||||
recipients = ','.join(nusers)
|
|
||||||
params['recipient'] = recipients
|
|
||||||
if message:
|
|
||||||
params['message'] = message
|
|
||||||
|
|
||||||
self._request('event.share', False, params)
|
|
||||||
|
|
||||||
def get_shouts(self, limit=50, cacheable=False):
|
def get_shouts(self, limit=50, cacheable=False):
|
||||||
"""
|
"""
|
||||||
Returns a sequqence of Shout objects
|
Returns a sequqence of Shout objects
|
||||||
|
@ -3210,34 +3183,6 @@ class Track(_BaseObject, _Taggable):
|
||||||
|
|
||||||
return seq
|
return seq
|
||||||
|
|
||||||
def share(self, users, message=None):
|
|
||||||
"""Shares this track (sends out recommendations).
|
|
||||||
* users: A list that can contain usernames, emails, User objects,
|
|
||||||
or all of them.
|
|
||||||
* message: A message to include in the recommendation message.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# Last.fm currently accepts a max of 10 recipient at a time
|
|
||||||
while(len(users) > 10):
|
|
||||||
section = users[0:9]
|
|
||||||
users = users[9:]
|
|
||||||
self.share(section, message)
|
|
||||||
|
|
||||||
nusers = []
|
|
||||||
for user in users:
|
|
||||||
if isinstance(user, User):
|
|
||||||
nusers.append(user.get_name())
|
|
||||||
else:
|
|
||||||
nusers.append(user)
|
|
||||||
|
|
||||||
params = self._get_params()
|
|
||||||
recipients = ','.join(nusers)
|
|
||||||
params['recipient'] = recipients
|
|
||||||
if message:
|
|
||||||
params['message'] = message
|
|
||||||
|
|
||||||
self._request('track.share', False, params)
|
|
||||||
|
|
||||||
def get_url(self, domain_name=DOMAIN_ENGLISH):
|
def get_url(self, domain_name=DOMAIN_ENGLISH):
|
||||||
"""Returns the url of the track page on the network.
|
"""Returns the url of the track page on the network.
|
||||||
* domain_name: The network's language domain. Possible values:
|
* domain_name: The network's language domain. Possible values:
|
||||||
|
|
|
@ -1205,6 +1205,23 @@ class TestPyLast(unittest.TestCase):
|
||||||
# Assert
|
# Assert
|
||||||
self.helper_at_least_one_thing_in_top_list(fans, pylast.User)
|
self.helper_at_least_one_thing_in_top_list(fans, pylast.User)
|
||||||
|
|
||||||
|
# Commented out to avoid spamming
|
||||||
|
# def test_share_spam(self):
|
||||||
|
# # Arrange
|
||||||
|
# users_to_spam = [TODO_ENTER_SPAMEES_HERE]
|
||||||
|
# spam_message = "Dig the krazee sound!"
|
||||||
|
# artist = self.network.get_top_artists(limit=1)[0].item
|
||||||
|
# track = artist.get_top_tracks(limit=1)[0].item
|
||||||
|
# event = artist.get_upcoming_events()[0]
|
||||||
|
|
||||||
|
# # Act
|
||||||
|
# artist.share(users_to_spam, spam_message)
|
||||||
|
# track.share(users_to_spam, spam_message)
|
||||||
|
# event.share(users_to_spam, spam_message)
|
||||||
|
|
||||||
|
# Assert
|
||||||
|
# Check inbox for spam!
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue