Broken scrobbling BADAUTH response

This commit is contained in:
Amr Hassan 2010-08-11 01:27:23 +00:00
parent 155f98940d
commit 2882cdd457
2 changed files with 30 additions and 14 deletions

2
.build
View file

@ -1 +1 @@
26 29

View file

@ -1186,7 +1186,6 @@ class Album(_BaseObject, _Taggable):
""" """
Returns a uri to the cover image Returns a uri to the cover image
size can be one of: size can be one of:
COVER_MEGA
COVER_EXTRA_LARGE COVER_EXTRA_LARGE
COVER_LARGE COVER_LARGE
COVER_MEDIUM COVER_MEDIUM
@ -1328,7 +1327,7 @@ class Artist(_BaseObject, _Taggable):
return self.name return self.name
def get_cover_image(self, size = COVER_LARGE): def get_cover_image(self, size = COVER_MEGA):
""" """
Returns a uri to the cover image Returns a uri to the cover image
size can be one of: size can be one of:
@ -1356,7 +1355,11 @@ class Artist(_BaseObject, _Taggable):
def get_listener_count(self): def get_listener_count(self):
"""Returns the number of liteners on the network.""" """Returns the number of liteners on the network."""
return _number(_extract(self._request("artist.getInfo", True), "listeners")) if hasattr(self, "listener_count"):
return self.listener_count
else:
self.listener_count = _number(_extract(self._request("artist.getInfo", True), "listeners"))
return self.listener_count
def is_streamable(self): def is_streamable(self):
"""Returns True if the artist is streamable.""" """Returns True if the artist is streamable."""
@ -1673,7 +1676,7 @@ class Event(_BaseObject):
return _extract(doc, "description") return _extract(doc, "description")
def get_cover_image(self, size = COVER_LARGE): def get_cover_image(self, size = COVER_MEGA):
""" """
Returns a uri to the cover image Returns a uri to the cover image
size can be one of: size can be one of:
@ -2063,7 +2066,7 @@ class Playlist(_BaseObject):
return track in self.get_tracks() return track in self.get_tracks()
def get_cover_image(self, size = COVER_LARGE): def get_cover_image(self, size = COVER_EXTRA_LARGE):
""" """
Returns a uri to the cover image Returns a uri to the cover image
size can be one of: size can be one of:
@ -2306,9 +2309,12 @@ class Track(_BaseObject, _Taggable):
def get_listener_count(self): def get_listener_count(self):
"""Returns the listener count.""" """Returns the listener count."""
if hasattr(self, "listener_count"):
return self.listener_count
else:
doc = self._request("track.getInfo", True) doc = self._request("track.getInfo", True)
self.listener_count = _number(_extract(doc, "listeners"))
return _number(_extract(doc, "listeners")) return self.listener_count
def get_playcount(self): def get_playcount(self):
"""Returns the play count.""" """Returns the play count."""
@ -3244,7 +3250,9 @@ class ArtistSearch(_Search):
seq = [] seq = []
for node in master_node.getElementsByTagName("artist"): for node in master_node.getElementsByTagName("artist"):
seq.append(Artist(_extract(node, "name"), self.network)) artist = Artist(_extract(node, "name"), self.network)
artist.listener_count = _number(_extract(node, "listeners"))
seq.append(artist)
return seq return seq
@ -3262,7 +3270,9 @@ class TagSearch(_Search):
seq = [] seq = []
for node in master_node.getElementsByTagName("tag"): for node in master_node.getElementsByTagName("tag"):
seq.append(Tag(_extract(node, "name"), self.network)) tag = Tag(_extract(node, "name"), self.network)
tag.tag_count = _number(_extract(node, "count"))
seq.append(tag)
return seq return seq
@ -3281,7 +3291,9 @@ class TrackSearch(_Search):
seq = [] seq = []
for node in master_node.getElementsByTagName("track"): for node in master_node.getElementsByTagName("track"):
seq.append(Track(_extract(node, "artist"), _extract(node, "name"), self.network)) track = Track(_extract(node, "artist"), _extract(node, "name"), self.network)
track.listener_count = _number(_extract(node, "listeners"))
seq.append(track)
return seq return seq
@ -3522,6 +3534,10 @@ class BadSessionError(ScrobblingError):
class _ScrobblerRequest(object): class _ScrobblerRequest(object):
def __init__(self, url, params, network, type="POST"): def __init__(self, url, params, network, type="POST"):
for key in params:
params[key] = str(params[key])
self.params = params self.params = params
self.type = type self.type = type
(self.hostname, self.subdir) = urllib.splithost(url[len("http:"):]) (self.hostname, self.subdir) = urllib.splithost(url[len("http:"):])
@ -3568,9 +3584,9 @@ class _ScrobblerRequest(object):
raise BannedClientError() raise BannedClientError()
elif status_line == "BADAUTH": elif status_line == "BADAUTH":
raise BadAuthenticationError() raise BadAuthenticationError()
elif status_line == "BadTimeError": elif status_line == "BADTIME":
raise BadTimeError() raise BadTimeError()
elif status_line == "BadSessionError": elif status_line == "BADSESSION":
raise BadSessionError() raise BadSessionError()
elif status_line.startswith("FAILED "): elif status_line.startswith("FAILED "):
reason = status_line[status_line.find("FAILED ")+len("FAILED "):] reason = status_line[status_line.find("FAILED ")+len("FAILED "):]