_sessionID = ''
_userID = 0
_lastSessionTime = 0
- _lastStreamKey = ''
- _lastStreamServerID = ''
_key = md5.new(os.path.basename("GroovesharkAPI.py")).hexdigest()
+ _apiDebug = False
# Constructor
def __init__(self):
self.cacheDir = os.path.join(tempfile.gettempdir(), 'groovesharkapi')
if os.path.isdir(self.cacheDir) == False:
os.makedirs(self.cacheDir)
- print "Made " + self.cacheDir
+ if self._apiDebug:
+ print "Made " + self.cacheDir
self._getSavedSession()
# session ids last 2 weeks
if self._sessionID == '' or time.time()- self._lastSessionTime >= SESSION_EXPIRY:
if self._sessionID == '':
raise StandardError('Failed to get session id')
else:
- print "New GrooveAPI session id: " + self._sessionID
+ if self._apiDebug:
+ print "New GrooveAPI session id: " + self._sessionID
self._ip = self._getIP()
self._country = self._getCountry()
self._setSavedSession()
req = urllib2.Request(url, postData)
response = urllib2.urlopen(req)
result = response.read()
- print "Response..."
- pprint.pprint(result)
+ if self._apiDebug:
+ print "Response..."
+ pprint.pprint(result)
response.close()
result = simplejson.loads(result)
return result
req = urllib2.Request(url)
response = urllib2.urlopen(req)
result = response.read()
- print "Request..."
- pprint.pprint(result)
+ if self._apiDebug:
+ print "Request..."
+ pprint.pprint(result)
response.close()
try:
result = simplejson.loads(result)
except:
print "An error occurred during save session"
pass
-
- def _setParams(self, params):
- try:
- # Create the directory if it doesn't exist.
- if not os.path.exists(self.cacheDir):
- os.makedirs(self.cacheDir)
- path = os.path.join(self.cacheDir, 'params.dmp')
- f = open(path, 'wb')
- pickle.dump(params, f, protocol=pickle.HIGHEST_PROTOCOL)
- f.close()
- except:
- print "An error occurred during save params"
- pass
# Get IP
def _getIP(self):
try:
myip = urllib2.urlopen('http://whatismyip.org').read()
if re.match("^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$", myip):
- print "IP is " + myip
+ if self._apiDebug:
+ print "IP is " + myip
return myip
except:
return '0.0.0.0'
params = { "songID": songID, "country": self._country }
response = self._callRemote("getSubscriberStreamKey", params)
try:
- self._lastStreamKey = response["result"]["StreamKey"]
- self._lastStreamServerID = response["result"]["StreamServerID"]
res = response["result"]
return res
except:
# Get artists albums
def getArtistAlbums(self, artistID, limit=ALBUM_LIMIT):
- result = self._callRemote('getArtistAlbums', {'artistID' : artistID})
+ result = self._callRemote('getArtistVerifiedAlbums', {'artistID' : artistID})
if 'result' in result:
return self._parseAlbums(result, limit)
else:
else:
return []
+ def getDoesArtistExist(self, artistId):
+ response = self._callRemote("getDoesArtistExist", {"artistID": artistId})
+ if 'result' in response and response['result'] == True:
+ return True
+ else:
+ return False
+
+ def getDoesAlbumExist(self, albumId):
+ response = self._callRemote("getDoesAlbumExist", {"albumID": albumId})
+ if 'result' in response and response['result'] == True:
+ return True
+ else:
+ return False
+
+ def getDoesSongExist(self, songId):
+ response = self._callRemote("getDoesSongExist", {"songID": songId})
+ if 'result' in response and response['result'] == True:
+ return True
+ else:
+ return False
+
# After 30s play time
- def markStreamKeyOver30Secs(self):
- params = { "streamKey" : self._lastStreamKey, "streamServerID" : self._lastStreamServerID }
+ def markStreamKeyOver30Secs(self, lastStreamKey, lastStreamServerID):
+ params = { "streamKey" : lastStreamKey, "streamServerID" : lastStreamServerID }
self._callRemote("markStreamKeyOver30Secs", params)
# Song complete
- def markSongComplete(self, songid):
- params = { "songID" : songid, "streamKey" : self._lastStreamKey, "streamServerID" : self._lastStreamServerID }
+ def markSongComplete(self, songid, lastStreamKey, lastStreamServerID):
+ params = { "songID" : songid, "streamKey" : lastStreamKey, "streamServerID" : lastStreamServerID }
self._callRemote("markSongComplete", params)
+ # Debug on off
+ def setDebug(self, state):
+ self._apiDebug = state
+ if (self._apiDebug):
+ print "API debug is on"
+
+
# Extract song data
def _parseSongs(self, items, limit=0):
if 'result' in items: