sessionID = ''
userID = 0
host = 'api.grooveshark.com'
+ lastSessionTime = 0
# Constructor
def __init__(self, cacheDir):
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())]
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:
# 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"
# Test
-#res = []
-#groovesharkApi = GrooveAPI('/tmp')
+res = []
+groovesharkApi = GrooveAPI('/tmp')
#res = groovesharkApi.login('stephendenham', '*******')
#res = groovesharkApi.getSongSearchResults('jimmy jazz', 3)
#res = groovesharkApi.getPopularSongsToday()
#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)