From 0e7dbdf722d9714de7768bbbff74a961c65c4356 Mon Sep 17 00:00:00 2001 From: stephendenham Date: Thu, 13 Jan 2011 00:49:29 +0000 Subject: [PATCH] New API. git-svn-id: svn://svn.code.sf.net/p/xbmc-groove/code@29 2dec19e3-eb1d-4749-8193-008c8bba0994 --- resources/lib/GroovesharkAPI.py | 34 +++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/resources/lib/GroovesharkAPI.py b/resources/lib/GroovesharkAPI.py index 18dd631..2eadd13 100644 --- a/resources/lib/GroovesharkAPI.py +++ b/resources/lib/GroovesharkAPI.py @@ -178,6 +178,7 @@ class GrooveAPI: sessionID = '' userID = 0 host = 'api.grooveshark.com' + lastSessionTime = 0 # Constructor def __init__(self, cacheDir): @@ -185,13 +186,16 @@ class GrooveAPI: self.simplejson = simplejson socket.setdefaulttimeout(40) self.cacheDir = cacheDir - self.sessionID = self._getSavedSessionID() - if self.sessionID == '': + self._getSavedSessionID() + # session ids last 1 week + if self.sessionID == '' or time.time()- self.lastSessionTime >= 6*86400: self.sessionID = self._getSessionID() if self.sessionID == '': raise StandardError('Failed to get session id') else: - self._setSavedSessionID() + print "New session id: " + self.sessionID + self._setSavedSessionID() + # Sort keys def _keySort(self, d): return [(k,d[k]) for k in sorted(d.keys())] @@ -227,20 +231,21 @@ class GrooveAPI: def _getSessionID(self): params = {} result = self._callRemote('startSession', params) + self.lastSessionTime = time.time() return result['result']['sessionID'] def _getSavedSessionID(self): - sessionID = '' - path = os.path.join(self.cacheDir, 'session', 'session.txt') + path = os.path.join(self.cacheDir, 'session', 'session.dmp') try: f = open(path, 'rb') - sessionID = pickle.load(f) + session = pickle.load(f) + self.sessionID = session['sessionID'] + self.lastSessionTime = session['lastSessionTime'] f.close() except: - sessionID = '' + self.sessionID = '' + self.lastSessionTime = 0 pass - - return sessionID def _setSavedSessionID(self): try: @@ -248,9 +253,10 @@ class GrooveAPI: # Create the 'data' directory if it doesn't exist. if not os.path.exists(dir): os.makedirs(dir) - path = os.path.join(dir, 'session.txt') + path = os.path.join(dir, 'session.dmp') f = open(path, 'wb') - pickle.dump(self.sessionID, f, protocol=pickle.HIGHEST_PROTOCOL) + session = { 'sessionID' : self.sessionID, 'lastSessionTime' : self.lastSessionTime} + pickle.dump(session, f, protocol=pickle.HIGHEST_PROTOCOL) f.close() except: print "An error occured during save session" @@ -469,8 +475,8 @@ class GrooveAPI: # Test -#res = [] -#groovesharkApi = GrooveAPI('/tmp') +res = [] +groovesharkApi = GrooveAPI('/tmp') #res = groovesharkApi.login('stephendenham', '*******') #res = groovesharkApi.getSongSearchResults('jimmy jazz', 3) #res = groovesharkApi.getPopularSongsToday() @@ -479,7 +485,7 @@ class GrooveAPI: #res = groovesharkApi.getArtistSearchResults('the clash', 3) #res = groovesharkApi.getUserFavoriteSongs() #res = groovesharkApi.getUserPlaylists() -#res = groovesharkApi.getSongInfo('27425375') +res = groovesharkApi.getSongInfo('27425375') #res = groovesharkApi.getPlaylistSongs(40902662) #pprint.pprint(res) -- 2.20.1