예제 #1
0
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)
예제 #2
0
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()
예제 #5
0
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
예제 #6
0
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()