diff --git a/client/ayon_traypublisher/plugins/create/create_csv_ingest.py b/client/ayon_traypublisher/plugins/create/create_csv_ingest.py index b00ef1d..82dadf6 100644 --- a/client/ayon_traypublisher/plugins/create/create_csv_ingest.py +++ b/client/ayon_traypublisher/plugins/create/create_csv_ingest.py @@ -644,9 +644,21 @@ def _add_representation( # convert ### string in file name to %03d # this is for correct frame range validation # example: file.###.exr -> file.%03d.exr + file_head = basename.split(".")[0] if "#" in basename: padding = len(basename.split("#")) - 1 - basename = basename.replace("#" * padding, f"%0{padding}d") + seq_padding = f"%0{padding}d" + basename = basename.replace("#" * padding, seq_padding) + file_head = basename.split(seq_padding)[0] + is_sequence = True + elif "%" in basename: + pattern = re.compile(r"%\d+d|%d") + padding = pattern.findall(basename) + if not padding: + raise CreatorError( + f"File sequence padding not found in '{basename}'." + ) + file_head = basename.split("%")[0] is_sequence = True # make absolute path to file @@ -662,8 +674,14 @@ def _add_representation( frame_end: Union[int, None] = None files: Union[str, List[str]] = basename if is_sequence: + # get only filtered files form dirname + files_from_dir = [ + filename + for filename in os.listdir(dirname) + if filename.startswith(file_head) + ] # collect all data from dirname - cols, _ = clique.assemble(list(os.listdir(dirname))) + cols, _ = clique.assemble(files_from_dir) if not cols: raise CreatorError( f"No collections found in directory '{dirname}'."