From ef4bc0e6e53dbe52872699898196a459ded17aa2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Fri, 9 Nov 2018 17:35:54 +0100 Subject: [PATCH] action DJV sets start/end frame by files in folder and fps by ftrack --- pype/ftrack/actions/djvview.py | 40 +++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/pype/ftrack/actions/djvview.py b/pype/ftrack/actions/djvview.py index 31c1812662..410fa4fde5 100644 --- a/pype/ftrack/actions/djvview.py +++ b/pype/ftrack/actions/djvview.py @@ -208,19 +208,43 @@ class DJVViewAction(object): # Launching application if "values" in event["data"]: - filename = event['data']['values']['path'] + file_type = filename.split(".")[-1] + + # TODO Is this proper way? + try: + fps = int(entities[0]['custom_attributes']['fps']) + except: + fps = 24 - # TODO These should be obtained in another way - start = 375 - end = 379 - fps = 24 # TODO issequence is probably already built-in validation in ftrack isseq = re.findall('%[0-9]*d', filename) if len(isseq) > 0: - padding = re.findall('%[0-9]*d', filename).pop() - range = (padding % start) + '-' + (padding % end) - filename = re.sub('%[0-9]*d', range, filename) + if len(isseq) == 1: + frames = [] + padding = re.findall('%[0-9]*d', filename).pop() + index = filename.find(padding) + + full_file = filename[0:index-1] + file = full_file.split(os.sep)[-1] + folder = os.path.dirname(full_file) + + for fname in os.listdir(path=folder): + if fname.endswith(file_type) and file in fname: + frames.append(int(fname.split(".")[-2])) + + if len(frames) > 0: + start = min(frames) + end = max(frames) + + range = (padding % start) + '-' + (padding % end) + filename = re.sub('%[0-9]*d', range, filename) + else: + print("") + return { + 'success': False, + 'message': 'DJV View - Filename has more than one seqence identifier.' + } cmd = [] # DJV path