def copy_to_staging(variables, queue): if not os.path.isfile(rl_paths.demo_folder(variables[1])): shutil.copy2(rl_paths.tracked_folder(variables[1]),rl_paths.demo_folder(variables[1])) logger.info("Copied %s to demo_folder",variables[1]) if not os.path.isfile(rl_paths.tracked_folder(variables[1])): shutil.copy2(rl_paths.demo_folder(variables[1]),rl_paths.tracked_folder(variables[1])) logger.info("Copied %s to tracked folder",variables[1]) if not os.path.isfile(rl_paths.backup_folder(variables[1])): shutil.copy2(rl_paths.demo_folder(variables[1]),rl_paths.backup_folder(variables[1])) logger.info("Copied %s to backup folder",variables[1]) queue.put(QueueOp.STOP)
def fetch_replays(replayfilters={},tagfilters={},playerfilters={},groupfilters={},queue=None): logger.info("Fetching replays") with DB_Manager() as mann: if replayfilters or tagfilters or playerfilters or groupfilters: replays = mann.filter_replays(replayfilters,tagfilters,playerfilters,groupfilters) logger.debug("Fetched replays from database with parameters %s %s %s %s", replayfilters,tagfilters,playerfilters,groupfilters) else: replays = mann.get_all("replays","date_time desc") logger.debug("Fetched all replays (paramless)") # print "REPLAYS: ",replays for replay in replays: if not os.path.isfile(rl_paths.tracked_folder(replay[1])) and os.path.isfile(rl_paths.backup_folder(replay[1])): shutil.copy2(rl_paths.backup_folder(replay[1]), rl_paths.tracked_folder(replay[1])) logger.info("Restored missing replay %s from backup",replay[1]) # print "Putting replay",replay queue.put( (replay, os.path.isfile(rl_paths.demo_folder(replay[1]))) ) logger.info("Inserted replays into tracked_replay_list") print "Fetch replays done" queue.put(QueueOp.STOP)
def delete_from_staging(self,variables_list): for variables in variables_list: try: os.remove(rl_paths.demo_folder(variables[1])) logger.info("Unstaged replay %s",variables[1]) except WindowsError,e: logger.error("Error unstaging file %s ",variables[1]) logger.error("Error: %s",e)
def determine_replaydir(): if os.path.isfile("replay.path"): print "have path" read_replay_path() return if not os.path.isdir(rl_paths.demo_folder()): print "Demo folder not in default location" if not os.path.isfile("replay.path"): print "Replay folder not in default location" tkMessageBox.showinfo(title="Replay Directory",message="Your replay directory is not in the default selection.\nPlease select its location from the next dialog.") dirpath = tkFileDialog.askdirectory(title="Select Replay Directory",initialdir=os.path.expanduser("~")) rl_paths._default_path = dirpath with open("replay.path",'w') as f: f.write(dirpath) f.write("\n") else: read_replay_path() print "DEFAULT: ",rl_paths._default_path print "DEMO: ",rl_paths.demo_folder()
def _insert_new_replay_into_database(replay): try: with DB_Manager(debug=True) as dmann: #Create a replay entry and get the id. c = dmann.add_replay(filename=replay['filename'],name=replay['name'], mapname=replay['mapname'], date_time=replay['date']) idx = c.lastrowid logger.debug("Created replay: %s",replay) #Make list of tuples to be inserted into database teams = [(idx,)+player[1:] for player in replay['teams']] logger.debug("Inserting teams: %s",teams) dmann.add_many_team(teams) dmann.add_note(idx,"") logger.info("Replay added") shutil.copy2(rl_paths.demo_folder(replay['filename']),rl_paths.backup_folder(replay['filename'])) shutil.move(rl_paths.demo_folder(replay['filename']),rl_paths.backup_folder(replay['filename'])) except sqlite3.IntegrityError, e: self.notif_text.set("ERROR: COULD NOT CREATE ENTRY\n"+str(e)) logger.error("Could not create entry") logger.error("Error : %s",e) raise
def _scan_demo_folder(dlist): print "scanning on",rl_paths.demo_folder() logger.info("Scanning demo on path %s",rl_paths.demo_folder()) with DB_Manager(debug=True) as dmann: l = [rl_paths.demo_folder( os.path.splitext(x)[0]) for x in os.listdir(rl_paths.demo_folder()) if os.path.isfile(rl_paths.demo_folder(os.path.splitext(x)[0]))] l.sort(reverse=True,key=lambda x: os.path.getmtime(x)) # print "Sorted replays by date" logger.info("Sorted replays by date") for f in l: filename = os.path.splitext(os.path.basename(f))[0] res = "" if os.path.isfile(f) and not dmann.replay_exists(filename): res = {"path":f,"name":filename,"tracked":False} dlist.append(res) elif os.path.isfile(f): res = {"path":f,"name":filename,"tracked":True} dlist.append(res) else: continue logger.debug("Scanning %s resulted in %s",filename,res) # print "Scanning %s resulted in %s"%(filename,res) logger.info("Appended all %s replays",len(l))
def restore(var): print "Restoring demo folder" logger.info("Restoring demo folder to its original state") logger.info("Path to backups: %s",rl_paths.backup_folder()) logger.debug("Files there: %s",os.listdir(rl_paths.backup_folder())) for f in os.listdir(rl_paths.backup_folder()): f = os.path.splitext(f)[0] src = rl_paths.backup_folder(f) dst = rl_paths.demo_folder(f) shutil.copy2(src,dst) logger.debug("Copied from %s to %s",src,dst) shutil.rmtree(rl_paths.tracked_folder()) shutil.rmtree(rl_paths.untracked_folder()) logger.info("Removed tracked and untracked folder") logger.info("Restore Complete!") var.set("Demo folder restored!")
def main(): print "Starting application" try: root = Tk() determine_replaydir() if not os.path.isfile(os.path.join(__location__,"rocketleague.db")): import db_setup db_setup.initdb() #If untracked folder move everything to demo folder for new processing method. if os.path.isdir(rl_paths.untracked_folder()): for f in os.listdir(rl_paths.untracked_folder()): f = os.path.splitext(f)[0] shutil.move(rl_paths.untracked_folder(f),rl_paths.demo_folder(f)) root.title("Rocket League Replay Handler") root.minsize(700,500) rman = cst.ReplayManager(root) rman.pack(expand=True,fill=BOTH) menu = Menu(root) root.config(menu=menu) filemenu = Menu(menu,tearoff=0) #menu.add_cascade(label="File", menu=filemenu) menu.add_command(label="Import", command=lambda : import_func(rman)) menu.add_command(label="Export Selected", command=lambda : export_single_func(rman)) menu.add_command(label="Export Multiple", command=lambda : export_many_func(rman)) menu.add_command(label="Edit Selected",command=rman.edit) menu.add_command(label="Rescan",command=rman.process_new) root.protocol("WM_DELETE_WINDOW",lambda : on_exit(rman,root)) root.mainloop() except Exception, e: logger.error("Encountered uncaught error") logger.error("Error was: %s", e) logger.error("%s",sys.exc_info()) print "Error",e,sys.exc_info() print traceback.format_exc()