#vfx #clique #filesequence

bin+lib cliquers

通过共同的数字组件管理文件序列

4 个版本 (重大更改)

0.3.0 2020年7月8日
0.2.0 2020年7月1日
0.1.0 2020年6月29日
0.0.1 2020年6月21日

#987 in 数据结构

Apache-2.0

37KB
825

Cliquers

crates.io

使用 Rust 管理具有共同数字组件的文件序列。

使用方法

使用命令行

$ cliquers --help
cliquers 0.2.0

USAGE:
    cliquers [FLAGS] [OPTIONS] [--] [paths]...

FLAGS:
    -h, --help              Prints help information
    -r, --recurse           Recurse down subdirectories
    -s, --show-remainder    Print files not in a collection
    -V, --version           Prints version information

OPTIONS:
    -f, --format <format>           Optional format of filesequences, default format: "{head}{padding}{tail} [{ranges}]"
    -p, --patterns <patterns>...    Optional custom pattern for grouping collections of files, default pattern:
                                    "(?P<index>(?P<padding>0*)\d+)"

ARGS:
    <paths>...    The path to list files and filesequences under
$ cliquers /shot/task/main
/shot/task/main/render.%04d.exr [1001-1005]

$ cliquers -r /shot/task
/shot/task/main/render.%04d.exr [1001-1005]
/shot/task/foo/render.%04d.exr [1001-1005]
/shot/task/bar/render.%04d.exr [1001-1005]

$ cliquers --format "{head}####{tail}" /shot/task/main
/shot/task/main/render.####.exr

$ cliquers --patterns "v(?P<index>(?P<padding>0*)\d+)" /shot/task/main
/shot/task/main/render.1001.exr
/shot/task/main/render.1002.exr
/shot/task/main/render.1003.exr
/shot/task/main/render.1004.exr
/shot/task/main/render.1005.exr

$ cliquers --patterns "(?P<index>(?P<padding>0*)\d+)" /shot/task/main
/shot/task/main/render.%04d.exr [1001-1005]

使用库

use cliquers;

let files = vec![
    "/shot/task/main/render.1001.exr",
    "/shot/task/main/render.1002.exr",
    "/shot/task/main/render.1003.exr",
    "/shot/task/main/render.1004.exr",
    "/shot/task/main/render.1005.exr",
];
let (collections, remainders) = cliquers.assemble(&files, None);
let c = &collections[0];

// access structure of file sequence
assert_eq!(c.head, "/shot/task/main/render.");
assert_eq!(c.tail, ".exr");
assert_eq!(c.padding, 4);
assert_eq!(c.indexes, vec![1001, 1002, 1003, 1004, 1005]);
assert_eq!(c.format(None), "/shot/task/main/render.%04d.exr [1001-1005]");
assert_eq!(c.format(Some("{head}####{tail}")), "/shot/task/main/render.####.exr");

// iterate over files of filesequence
let mut iter = c.into_iter();
assert_eq!(iter.next(), Some("/shot/task/main/render.1001.exr".to_string()));

文档

来源

此库是出色的 Python 模块 Clique 的直接移植。

这仍然是一个正在进行中的项目,因此还不是完整的移植...!

依赖项

~6MB
~107K SLoC