#!/usr/bin/python3 import shelve, os, sys import iTunesInfo, analyzedb from PersistentDict import PersistentDict session = sys.argv[1] doPlaylists = (sys.argv[2] == '1') # Write the file to a temporary file. # We don't have to do this stupid try-except-finally nesting in Python 2.5. try: try: #shelf = shelve.open('sessions/shelf.' + session, writeback=True) #shelf = shelve.Shelf(PersistentDict('sessions/shelf.' + session)) shelf = PersistentDict('sessions/shelf.' + session) shelf['data']['status'] = "Starting to parse file" shelf.sync() #raise Exception, "ERROR: permission denied for relation tracks\nCONTEXT: SQL function \"topartist\" statement 1\n" iTunesInfo.createTable("tracks" + session, "playlistsnames" + session, "playlists" + session, session) #sys.exit() playlistsNamesTableName = 'playlistsnames' + session playlistsTableName = 'playlists' + session if (not doPlaylists): playlistsNamesTableName = None playlistsTableName = None iTunesInfo.main('sessions/%s' % session, 'tracks' + session, playlistsNamesTableName, playlistsTableName, session, shelf) analyzedb.main(analyzedb.defaultDbName, 'tracks' + session, 'topartist' + session, playlistsNamesTableName, playlistsTableName, 'playlistdata' + session, 'sessions/analysis%s.html' % session, session, shelf) #analysisHtmlFile = open('sessions/analysis%s.html' % session) #analysisHtml = analysisHtmlFile.read() #analysisHtmlFile.close() shelf['data']['redirect'] = True shelf['data']['done'] = True except Exception as e: shelf['data']['status'] = 'Caught exception: %s' % (str(e)) except: shelf['data']['status'] = 'Caught unnamed exception: %s' % sys.exc_info()[0] finally: shelf['data']['done'] = True os.remove('sessions/%s' % session) iTunesInfo.removeTables(["tracks" + session, 'playlistsnames' + session, 'playlists' + session], session) shelf.close()