renumSeq 2.0.0__tar.gz → 2.1.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {renumseq-2.0.0 → renumseq-2.1.1}/LICENSE +1 -1
- renumseq-2.1.1/PKG-INFO +238 -0
- renumseq-2.1.1/README.md +208 -0
- renumseq-2.1.1/renumSeq.egg-info/PKG-INFO +238 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/renumseq/__main__.py +31 -14
- {renumseq-2.0.0 → renumseq-2.1.1}/setup.py +3 -2
- renumseq-2.0.0/PKG-INFO +0 -127
- renumseq-2.0.0/README.md +0 -99
- renumseq-2.0.0/renumSeq.egg-info/PKG-INFO +0 -127
- {renumseq-2.0.0 → renumseq-2.1.1}/renumSeq.egg-info/SOURCES.txt +0 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/renumSeq.egg-info/dependency_links.txt +0 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/renumSeq.egg-info/entry_points.txt +0 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/renumSeq.egg-info/requires.txt +0 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/renumSeq.egg-info/top_level.txt +0 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/renumseq/__init__.py +0 -0
- {renumseq-2.0.0 → renumseq-2.1.1}/setup.cfg +0 -0
renumseq-2.1.1/PKG-INFO
ADDED
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: renumSeq
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: Tool to renumber image sequences.
|
|
5
|
+
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
+
Author: James Philip Rowell
|
|
7
|
+
Author-email: james@alpha-eleven.com
|
|
8
|
+
License: BSD-3-Clause
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: Unix
|
|
12
|
+
Classifier: Operating System :: MacOS
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Requires-Python: >=3.7, <4
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: seqLister>=1.2.0
|
|
18
|
+
Requires-Dist: lsseq>=4.0.0
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
30
|
+
|
|
31
|
+
# About renumseq
|
|
32
|
+
|
|
33
|
+
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
34
|
+
which are most
|
|
35
|
+
typically used in VFX post-production or CG animation production.
|
|
36
|
+
|
|
37
|
+
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
38
|
+
It also allows you adjust the padding of the frame numbers.
|
|
39
|
+
|
|
40
|
+
`renumseq` uses the syntax of the native output of
|
|
41
|
+
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
42
|
+
the sequence to be renumbered. Therefore it is recommended to
|
|
43
|
+
use `lsseq` as it makes using `renumseq` easier.
|
|
44
|
+
|
|
45
|
+
For example, use `lsseq` to list a sequence, then
|
|
46
|
+
cut and paste its
|
|
47
|
+
output as the arguments to `renumseq` with the appropriate
|
|
48
|
+
arguments for setting the offset or new start-frame.
|
|
49
|
+
|
|
50
|
+
`renumseq` was written to be safe in that it won't
|
|
51
|
+
unintentionally overwrite any existing files
|
|
52
|
+
during renumbering.
|
|
53
|
+
|
|
54
|
+
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
55
|
+
outside the range specified then it will skip renumbering that sequence
|
|
56
|
+
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
57
|
+
there is an option to force `renumseq` to overwrite those files if desired.
|
|
58
|
+
|
|
59
|
+
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
60
|
+
(it does a move of the file), so it's fast.
|
|
61
|
+
|
|
62
|
+
`renumseq` also has a useful option, called `--replace-underscore`
|
|
63
|
+
that changes any underscore-separators (separating the filename from the
|
|
64
|
+
frame-number) with dot-separators, like this:
|
|
65
|
+
|
|
66
|
+
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
67
|
+
|
|
68
|
+
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
69
|
+
use a zero offset, plus the `--replace-underscore` argument.
|
|
70
|
+
|
|
71
|
+
## Error and warning codes returned from `renumseq`
|
|
72
|
+
|
|
73
|
+
As copied from the source code,
|
|
74
|
+
the following EXIT codes will be combined bitwise to return
|
|
75
|
+
possibly more than one different warning and/or error.
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
79
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
80
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
81
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
82
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
83
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
84
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
85
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
86
|
+
# have over-written some frames outside the range specifed.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Installing renumseq
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
python3 -m pip install renumSeq --upgrade
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Testing renumseq
|
|
96
|
+
|
|
97
|
+
After installing try the following:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
$ cd ~
|
|
101
|
+
$ mkdir tmp
|
|
102
|
+
$ cd tmp
|
|
103
|
+
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
104
|
+
$ lsseq -Z
|
|
105
|
+
aaa.[001-005].tif
|
|
106
|
+
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
107
|
+
aaa.005.tif -> aaa.015.tif
|
|
108
|
+
aaa.004.tif -> aaa.014.tif
|
|
109
|
+
aaa.003.tif -> aaa.013.tif
|
|
110
|
+
aaa.002.tif -> aaa.012.tif
|
|
111
|
+
aaa.001.tif -> aaa.011.tif
|
|
112
|
+
$ lsseq -Z
|
|
113
|
+
aaa.[011-015].tif
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Note that you may get an error from your
|
|
117
|
+
shell when you try to run the `renumseq` command above, without the
|
|
118
|
+
quotes around the sequence, that might look something like
|
|
119
|
+
this:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
% renumseq -o 10 aaa.[001-005].tif
|
|
123
|
+
renumseq: No match.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
In which case you need to "escape" the square brackets as they are special characters
|
|
127
|
+
as far as the shell is concerned. Escape them like this:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
131
|
+
aaa.005.tif -> aaa.015.tif
|
|
132
|
+
aaa.004.tif -> aaa.014.tif
|
|
133
|
+
aaa.003.tif -> aaa.013.tif
|
|
134
|
+
aaa.002.tif -> aaa.012.tif
|
|
135
|
+
aaa.001.tif -> aaa.011.tif
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Alternatively you can just enclose the argument in quotes
|
|
139
|
+
(`'aaa.[001-005].tif'`)
|
|
140
|
+
like we did in the example above.
|
|
141
|
+
|
|
142
|
+
Type this:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
$ renumseq --help
|
|
146
|
+
```
|
|
147
|
+
...for much more useful info.
|
|
148
|
+
|
|
149
|
+
# Important: latest MAJOR point release of `renumSeq`.
|
|
150
|
+
|
|
151
|
+
`renumseq` and all the utilities provided by jrowellfx github repos
|
|
152
|
+
use "[`Semantic Versioning 2.0.0`](https://semver.org/)" in numbering releases.
|
|
153
|
+
The latest release of `renumseq` upped the `MAJOR` release number
|
|
154
|
+
from `v1.x.x` to `v2.x.x`.
|
|
155
|
+
|
|
156
|
+
While the functionality and output of `renumseq` has not changed, all the so called
|
|
157
|
+
"long options" have been renamed to adhere to `POSIX` standard naming
|
|
158
|
+
conventions.
|
|
159
|
+
|
|
160
|
+
That is, prior to `v2.0.0` of `renumseq` all the long-option names used a "camel case"
|
|
161
|
+
naming convention but as of `v2.0.0` all long-option names have been
|
|
162
|
+
changed to so-called "kebab case".
|
|
163
|
+
|
|
164
|
+
For example:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
--replaceUnderscore
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
has been changed to
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
--replace-underscore
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
In the event that you have written any scripts that make use of `renumseq` or
|
|
177
|
+
any other of `jrowellfx`'s utils provided [here](https://github.com/jrowellfx)
|
|
178
|
+
you will need to edit your scripts to be able to update to the lastest versions
|
|
179
|
+
of the utilities.
|
|
180
|
+
|
|
181
|
+
In this case, in order to assist in switching to the
|
|
182
|
+
current `MAJOR` point release some `sed` scripts have been provided that should make
|
|
183
|
+
the transition quite painless. Especially if you make use
|
|
184
|
+
of [`runsed`](https://github.com/jrowellfx/vfxTdUtils) which if you haven't used it before,
|
|
185
|
+
now is the time, it's extremely helpful.
|
|
186
|
+
|
|
187
|
+
There are two files provided at the root-level of the repo, namely:
|
|
188
|
+
`sed.script.jrowellfx.doubleDashToKebab` and `sed.script.renumseq.v1tov2`.
|
|
189
|
+
|
|
190
|
+
The first one can be used to fix the long-option names for ALL the
|
|
191
|
+
`MAJOR` point release updates to the long-options in any of `jrowellfx`'s utilities.
|
|
192
|
+
The second one contains only changes needed for the updates to `renumseq`.
|
|
193
|
+
|
|
194
|
+
## Example `sed.script` usage.
|
|
195
|
+
|
|
196
|
+
Download one or both of the sed scripts named above. Make sure you have `runsed` installed
|
|
197
|
+
on your system. (Example applied to usage of `lsseq` but it's the same idea for `renumseq`.)
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
$ cd ~/bin
|
|
201
|
+
$ ls
|
|
202
|
+
myScriptThatUsesLsseq
|
|
203
|
+
$ cat myScriptThatUsesLsseq
|
|
204
|
+
#!/bin/bash
|
|
205
|
+
|
|
206
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
207
|
+
|
|
208
|
+
$ mv ~/Downloads/sed.script.jrowellfx.doubleDashToKebab sed.script
|
|
209
|
+
$ runsed myScriptThatUsesLsseq
|
|
210
|
+
$ ./.runsed.diff.runsed
|
|
211
|
+
+ /usr/bin/diff ./.myScriptThatUsesLsseq.runsed myScriptThatUsesLsseq
|
|
212
|
+
3c3
|
|
213
|
+
< lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
214
|
+
---
|
|
215
|
+
> lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
216
|
+
$ cat myScriptThatUsesLsseq
|
|
217
|
+
#!/bin/bash
|
|
218
|
+
|
|
219
|
+
lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Note that if you are unhappy with the changes you can undo them easily with
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
$ ./.runsed.undo.runsed
|
|
226
|
+
$ cat myScriptThatUsesLsseq
|
|
227
|
+
#!/bin/bash
|
|
228
|
+
|
|
229
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Contact
|
|
235
|
+
|
|
236
|
+
Please contact `j a m e s <at> a l p h a - e l e v e n . c o m` with any bug
|
|
237
|
+
reports, suggestions or praise as the case may be.
|
|
238
|
+
|
renumseq-2.1.1/README.md
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# About renumseq
|
|
2
|
+
|
|
3
|
+
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
4
|
+
which are most
|
|
5
|
+
typically used in VFX post-production or CG animation production.
|
|
6
|
+
|
|
7
|
+
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
8
|
+
It also allows you adjust the padding of the frame numbers.
|
|
9
|
+
|
|
10
|
+
`renumseq` uses the syntax of the native output of
|
|
11
|
+
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
12
|
+
the sequence to be renumbered. Therefore it is recommended to
|
|
13
|
+
use `lsseq` as it makes using `renumseq` easier.
|
|
14
|
+
|
|
15
|
+
For example, use `lsseq` to list a sequence, then
|
|
16
|
+
cut and paste its
|
|
17
|
+
output as the arguments to `renumseq` with the appropriate
|
|
18
|
+
arguments for setting the offset or new start-frame.
|
|
19
|
+
|
|
20
|
+
`renumseq` was written to be safe in that it won't
|
|
21
|
+
unintentionally overwrite any existing files
|
|
22
|
+
during renumbering.
|
|
23
|
+
|
|
24
|
+
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
25
|
+
outside the range specified then it will skip renumbering that sequence
|
|
26
|
+
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
27
|
+
there is an option to force `renumseq` to overwrite those files if desired.
|
|
28
|
+
|
|
29
|
+
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
30
|
+
(it does a move of the file), so it's fast.
|
|
31
|
+
|
|
32
|
+
`renumseq` also has a useful option, called `--replace-underscore`
|
|
33
|
+
that changes any underscore-separators (separating the filename from the
|
|
34
|
+
frame-number) with dot-separators, like this:
|
|
35
|
+
|
|
36
|
+
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
37
|
+
|
|
38
|
+
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
39
|
+
use a zero offset, plus the `--replace-underscore` argument.
|
|
40
|
+
|
|
41
|
+
## Error and warning codes returned from `renumseq`
|
|
42
|
+
|
|
43
|
+
As copied from the source code,
|
|
44
|
+
the following EXIT codes will be combined bitwise to return
|
|
45
|
+
possibly more than one different warning and/or error.
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
49
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
50
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
51
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
52
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
53
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
54
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
55
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
56
|
+
# have over-written some frames outside the range specifed.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Installing renumseq
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
python3 -m pip install renumSeq --upgrade
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Testing renumseq
|
|
66
|
+
|
|
67
|
+
After installing try the following:
|
|
68
|
+
|
|
69
|
+
```
|
|
70
|
+
$ cd ~
|
|
71
|
+
$ mkdir tmp
|
|
72
|
+
$ cd tmp
|
|
73
|
+
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
74
|
+
$ lsseq -Z
|
|
75
|
+
aaa.[001-005].tif
|
|
76
|
+
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
77
|
+
aaa.005.tif -> aaa.015.tif
|
|
78
|
+
aaa.004.tif -> aaa.014.tif
|
|
79
|
+
aaa.003.tif -> aaa.013.tif
|
|
80
|
+
aaa.002.tif -> aaa.012.tif
|
|
81
|
+
aaa.001.tif -> aaa.011.tif
|
|
82
|
+
$ lsseq -Z
|
|
83
|
+
aaa.[011-015].tif
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Note that you may get an error from your
|
|
87
|
+
shell when you try to run the `renumseq` command above, without the
|
|
88
|
+
quotes around the sequence, that might look something like
|
|
89
|
+
this:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
% renumseq -o 10 aaa.[001-005].tif
|
|
93
|
+
renumseq: No match.
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
In which case you need to "escape" the square brackets as they are special characters
|
|
97
|
+
as far as the shell is concerned. Escape them like this:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
101
|
+
aaa.005.tif -> aaa.015.tif
|
|
102
|
+
aaa.004.tif -> aaa.014.tif
|
|
103
|
+
aaa.003.tif -> aaa.013.tif
|
|
104
|
+
aaa.002.tif -> aaa.012.tif
|
|
105
|
+
aaa.001.tif -> aaa.011.tif
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Alternatively you can just enclose the argument in quotes
|
|
109
|
+
(`'aaa.[001-005].tif'`)
|
|
110
|
+
like we did in the example above.
|
|
111
|
+
|
|
112
|
+
Type this:
|
|
113
|
+
|
|
114
|
+
```
|
|
115
|
+
$ renumseq --help
|
|
116
|
+
```
|
|
117
|
+
...for much more useful info.
|
|
118
|
+
|
|
119
|
+
# Important: latest MAJOR point release of `renumSeq`.
|
|
120
|
+
|
|
121
|
+
`renumseq` and all the utilities provided by jrowellfx github repos
|
|
122
|
+
use "[`Semantic Versioning 2.0.0`](https://semver.org/)" in numbering releases.
|
|
123
|
+
The latest release of `renumseq` upped the `MAJOR` release number
|
|
124
|
+
from `v1.x.x` to `v2.x.x`.
|
|
125
|
+
|
|
126
|
+
While the functionality and output of `renumseq` has not changed, all the so called
|
|
127
|
+
"long options" have been renamed to adhere to `POSIX` standard naming
|
|
128
|
+
conventions.
|
|
129
|
+
|
|
130
|
+
That is, prior to `v2.0.0` of `renumseq` all the long-option names used a "camel case"
|
|
131
|
+
naming convention but as of `v2.0.0` all long-option names have been
|
|
132
|
+
changed to so-called "kebab case".
|
|
133
|
+
|
|
134
|
+
For example:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
--replaceUnderscore
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
has been changed to
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
--replace-underscore
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
In the event that you have written any scripts that make use of `renumseq` or
|
|
147
|
+
any other of `jrowellfx`'s utils provided [here](https://github.com/jrowellfx)
|
|
148
|
+
you will need to edit your scripts to be able to update to the lastest versions
|
|
149
|
+
of the utilities.
|
|
150
|
+
|
|
151
|
+
In this case, in order to assist in switching to the
|
|
152
|
+
current `MAJOR` point release some `sed` scripts have been provided that should make
|
|
153
|
+
the transition quite painless. Especially if you make use
|
|
154
|
+
of [`runsed`](https://github.com/jrowellfx/vfxTdUtils) which if you haven't used it before,
|
|
155
|
+
now is the time, it's extremely helpful.
|
|
156
|
+
|
|
157
|
+
There are two files provided at the root-level of the repo, namely:
|
|
158
|
+
`sed.script.jrowellfx.doubleDashToKebab` and `sed.script.renumseq.v1tov2`.
|
|
159
|
+
|
|
160
|
+
The first one can be used to fix the long-option names for ALL the
|
|
161
|
+
`MAJOR` point release updates to the long-options in any of `jrowellfx`'s utilities.
|
|
162
|
+
The second one contains only changes needed for the updates to `renumseq`.
|
|
163
|
+
|
|
164
|
+
## Example `sed.script` usage.
|
|
165
|
+
|
|
166
|
+
Download one or both of the sed scripts named above. Make sure you have `runsed` installed
|
|
167
|
+
on your system. (Example applied to usage of `lsseq` but it's the same idea for `renumseq`.)
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
$ cd ~/bin
|
|
171
|
+
$ ls
|
|
172
|
+
myScriptThatUsesLsseq
|
|
173
|
+
$ cat myScriptThatUsesLsseq
|
|
174
|
+
#!/bin/bash
|
|
175
|
+
|
|
176
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
177
|
+
|
|
178
|
+
$ mv ~/Downloads/sed.script.jrowellfx.doubleDashToKebab sed.script
|
|
179
|
+
$ runsed myScriptThatUsesLsseq
|
|
180
|
+
$ ./.runsed.diff.runsed
|
|
181
|
+
+ /usr/bin/diff ./.myScriptThatUsesLsseq.runsed myScriptThatUsesLsseq
|
|
182
|
+
3c3
|
|
183
|
+
< lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
184
|
+
---
|
|
185
|
+
> lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
186
|
+
$ cat myScriptThatUsesLsseq
|
|
187
|
+
#!/bin/bash
|
|
188
|
+
|
|
189
|
+
lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Note that if you are unhappy with the changes you can undo them easily with
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
$ ./.runsed.undo.runsed
|
|
196
|
+
$ cat myScriptThatUsesLsseq
|
|
197
|
+
#!/bin/bash
|
|
198
|
+
|
|
199
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
## Contact
|
|
205
|
+
|
|
206
|
+
Please contact `j a m e s <at> a l p h a - e l e v e n . c o m` with any bug
|
|
207
|
+
reports, suggestions or praise as the case may be.
|
|
208
|
+
|
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: renumSeq
|
|
3
|
+
Version: 2.1.1
|
|
4
|
+
Summary: Tool to renumber image sequences.
|
|
5
|
+
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
+
Author: James Philip Rowell
|
|
7
|
+
Author-email: james@alpha-eleven.com
|
|
8
|
+
License: BSD-3-Clause
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Operating System :: POSIX
|
|
11
|
+
Classifier: Operating System :: Unix
|
|
12
|
+
Classifier: Operating System :: MacOS
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Requires-Python: >=3.7, <4
|
|
15
|
+
Description-Content-Type: text/markdown
|
|
16
|
+
License-File: LICENSE
|
|
17
|
+
Requires-Dist: seqLister>=1.2.0
|
|
18
|
+
Requires-Dist: lsseq>=4.0.0
|
|
19
|
+
Dynamic: author
|
|
20
|
+
Dynamic: author-email
|
|
21
|
+
Dynamic: classifier
|
|
22
|
+
Dynamic: description
|
|
23
|
+
Dynamic: description-content-type
|
|
24
|
+
Dynamic: home-page
|
|
25
|
+
Dynamic: license
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
Dynamic: requires-dist
|
|
28
|
+
Dynamic: requires-python
|
|
29
|
+
Dynamic: summary
|
|
30
|
+
|
|
31
|
+
# About renumseq
|
|
32
|
+
|
|
33
|
+
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
34
|
+
which are most
|
|
35
|
+
typically used in VFX post-production or CG animation production.
|
|
36
|
+
|
|
37
|
+
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
38
|
+
It also allows you adjust the padding of the frame numbers.
|
|
39
|
+
|
|
40
|
+
`renumseq` uses the syntax of the native output of
|
|
41
|
+
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
42
|
+
the sequence to be renumbered. Therefore it is recommended to
|
|
43
|
+
use `lsseq` as it makes using `renumseq` easier.
|
|
44
|
+
|
|
45
|
+
For example, use `lsseq` to list a sequence, then
|
|
46
|
+
cut and paste its
|
|
47
|
+
output as the arguments to `renumseq` with the appropriate
|
|
48
|
+
arguments for setting the offset or new start-frame.
|
|
49
|
+
|
|
50
|
+
`renumseq` was written to be safe in that it won't
|
|
51
|
+
unintentionally overwrite any existing files
|
|
52
|
+
during renumbering.
|
|
53
|
+
|
|
54
|
+
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
55
|
+
outside the range specified then it will skip renumbering that sequence
|
|
56
|
+
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
57
|
+
there is an option to force `renumseq` to overwrite those files if desired.
|
|
58
|
+
|
|
59
|
+
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
60
|
+
(it does a move of the file), so it's fast.
|
|
61
|
+
|
|
62
|
+
`renumseq` also has a useful option, called `--replace-underscore`
|
|
63
|
+
that changes any underscore-separators (separating the filename from the
|
|
64
|
+
frame-number) with dot-separators, like this:
|
|
65
|
+
|
|
66
|
+
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
67
|
+
|
|
68
|
+
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
69
|
+
use a zero offset, plus the `--replace-underscore` argument.
|
|
70
|
+
|
|
71
|
+
## Error and warning codes returned from `renumseq`
|
|
72
|
+
|
|
73
|
+
As copied from the source code,
|
|
74
|
+
the following EXIT codes will be combined bitwise to return
|
|
75
|
+
possibly more than one different warning and/or error.
|
|
76
|
+
|
|
77
|
+
```
|
|
78
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
79
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
80
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
81
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
82
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
83
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
84
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
85
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
86
|
+
# have over-written some frames outside the range specifed.
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Installing renumseq
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
python3 -m pip install renumSeq --upgrade
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Testing renumseq
|
|
96
|
+
|
|
97
|
+
After installing try the following:
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
$ cd ~
|
|
101
|
+
$ mkdir tmp
|
|
102
|
+
$ cd tmp
|
|
103
|
+
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
104
|
+
$ lsseq -Z
|
|
105
|
+
aaa.[001-005].tif
|
|
106
|
+
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
107
|
+
aaa.005.tif -> aaa.015.tif
|
|
108
|
+
aaa.004.tif -> aaa.014.tif
|
|
109
|
+
aaa.003.tif -> aaa.013.tif
|
|
110
|
+
aaa.002.tif -> aaa.012.tif
|
|
111
|
+
aaa.001.tif -> aaa.011.tif
|
|
112
|
+
$ lsseq -Z
|
|
113
|
+
aaa.[011-015].tif
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Note that you may get an error from your
|
|
117
|
+
shell when you try to run the `renumseq` command above, without the
|
|
118
|
+
quotes around the sequence, that might look something like
|
|
119
|
+
this:
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
% renumseq -o 10 aaa.[001-005].tif
|
|
123
|
+
renumseq: No match.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
In which case you need to "escape" the square brackets as they are special characters
|
|
127
|
+
as far as the shell is concerned. Escape them like this:
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
131
|
+
aaa.005.tif -> aaa.015.tif
|
|
132
|
+
aaa.004.tif -> aaa.014.tif
|
|
133
|
+
aaa.003.tif -> aaa.013.tif
|
|
134
|
+
aaa.002.tif -> aaa.012.tif
|
|
135
|
+
aaa.001.tif -> aaa.011.tif
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Alternatively you can just enclose the argument in quotes
|
|
139
|
+
(`'aaa.[001-005].tif'`)
|
|
140
|
+
like we did in the example above.
|
|
141
|
+
|
|
142
|
+
Type this:
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
$ renumseq --help
|
|
146
|
+
```
|
|
147
|
+
...for much more useful info.
|
|
148
|
+
|
|
149
|
+
# Important: latest MAJOR point release of `renumSeq`.
|
|
150
|
+
|
|
151
|
+
`renumseq` and all the utilities provided by jrowellfx github repos
|
|
152
|
+
use "[`Semantic Versioning 2.0.0`](https://semver.org/)" in numbering releases.
|
|
153
|
+
The latest release of `renumseq` upped the `MAJOR` release number
|
|
154
|
+
from `v1.x.x` to `v2.x.x`.
|
|
155
|
+
|
|
156
|
+
While the functionality and output of `renumseq` has not changed, all the so called
|
|
157
|
+
"long options" have been renamed to adhere to `POSIX` standard naming
|
|
158
|
+
conventions.
|
|
159
|
+
|
|
160
|
+
That is, prior to `v2.0.0` of `renumseq` all the long-option names used a "camel case"
|
|
161
|
+
naming convention but as of `v2.0.0` all long-option names have been
|
|
162
|
+
changed to so-called "kebab case".
|
|
163
|
+
|
|
164
|
+
For example:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
--replaceUnderscore
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
has been changed to
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
--replace-underscore
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
In the event that you have written any scripts that make use of `renumseq` or
|
|
177
|
+
any other of `jrowellfx`'s utils provided [here](https://github.com/jrowellfx)
|
|
178
|
+
you will need to edit your scripts to be able to update to the lastest versions
|
|
179
|
+
of the utilities.
|
|
180
|
+
|
|
181
|
+
In this case, in order to assist in switching to the
|
|
182
|
+
current `MAJOR` point release some `sed` scripts have been provided that should make
|
|
183
|
+
the transition quite painless. Especially if you make use
|
|
184
|
+
of [`runsed`](https://github.com/jrowellfx/vfxTdUtils) which if you haven't used it before,
|
|
185
|
+
now is the time, it's extremely helpful.
|
|
186
|
+
|
|
187
|
+
There are two files provided at the root-level of the repo, namely:
|
|
188
|
+
`sed.script.jrowellfx.doubleDashToKebab` and `sed.script.renumseq.v1tov2`.
|
|
189
|
+
|
|
190
|
+
The first one can be used to fix the long-option names for ALL the
|
|
191
|
+
`MAJOR` point release updates to the long-options in any of `jrowellfx`'s utilities.
|
|
192
|
+
The second one contains only changes needed for the updates to `renumseq`.
|
|
193
|
+
|
|
194
|
+
## Example `sed.script` usage.
|
|
195
|
+
|
|
196
|
+
Download one or both of the sed scripts named above. Make sure you have `runsed` installed
|
|
197
|
+
on your system. (Example applied to usage of `lsseq` but it's the same idea for `renumseq`.)
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
$ cd ~/bin
|
|
201
|
+
$ ls
|
|
202
|
+
myScriptThatUsesLsseq
|
|
203
|
+
$ cat myScriptThatUsesLsseq
|
|
204
|
+
#!/bin/bash
|
|
205
|
+
|
|
206
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
207
|
+
|
|
208
|
+
$ mv ~/Downloads/sed.script.jrowellfx.doubleDashToKebab sed.script
|
|
209
|
+
$ runsed myScriptThatUsesLsseq
|
|
210
|
+
$ ./.runsed.diff.runsed
|
|
211
|
+
+ /usr/bin/diff ./.myScriptThatUsesLsseq.runsed myScriptThatUsesLsseq
|
|
212
|
+
3c3
|
|
213
|
+
< lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
214
|
+
---
|
|
215
|
+
> lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
216
|
+
$ cat myScriptThatUsesLsseq
|
|
217
|
+
#!/bin/bash
|
|
218
|
+
|
|
219
|
+
lsseq --global-sort-by-time --recursive --prepend-path-abs /Volumes/myProjectFiles
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Note that if you are unhappy with the changes you can undo them easily with
|
|
223
|
+
|
|
224
|
+
```
|
|
225
|
+
$ ./.runsed.undo.runsed
|
|
226
|
+
$ cat myScriptThatUsesLsseq
|
|
227
|
+
#!/bin/bash
|
|
228
|
+
|
|
229
|
+
lsseq --globalSortByTime --recursive --prependPathAbs /Volumes/myProjectFiles
|
|
230
|
+
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
## Contact
|
|
235
|
+
|
|
236
|
+
Please contact `j a m e s <at> a l p h a - e l e v e n . c o m` with any bug
|
|
237
|
+
reports, suggestions or praise as the case may be.
|
|
238
|
+
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# 3-Clause BSD License
|
|
4
4
|
#
|
|
5
|
-
# Copyright (c) 2008-
|
|
5
|
+
# Copyright (c) 2008-2026, James Philip Rowell,
|
|
6
6
|
# Alpha Eleven Incorporated
|
|
7
7
|
# www.alpha-eleven.com
|
|
8
8
|
# All rights reserved.
|
|
@@ -54,13 +54,21 @@ import glob
|
|
|
54
54
|
# MINOR version for added functionality in a backwards compatible manner
|
|
55
55
|
# PATCH version for backwards compatible bug fixes
|
|
56
56
|
#
|
|
57
|
-
VERSION = "2.
|
|
57
|
+
VERSION = "2.1.1"
|
|
58
58
|
|
|
59
59
|
PROG_NAME = "renumseq"
|
|
60
60
|
|
|
61
|
-
EXIT_NO_ERROR
|
|
62
|
-
|
|
63
|
-
EXIT_ARGPARSE_ERROR
|
|
61
|
+
EXIT_NO_ERROR = 0 # Clean exit.
|
|
62
|
+
EXIT_PREEXISTINGSEQ_ERROR = 1 # Attempting to rename seq to one that already exists.
|
|
63
|
+
EXIT_ARGPARSE_ERROR = 2 # Parsing an argument revealed an error.
|
|
64
|
+
EXIT_NULLACTION_WARNING = 4 # Exited with nothing to do.
|
|
65
|
+
EXIT_INVALIDRANGE_WARNING = 8 # Invalid frame-range specified for a sequence
|
|
66
|
+
EXIT_NOTASEQ_WARNING = 16 # Expecting a sequence, but doesn't appear to be one.
|
|
67
|
+
EXIT_NONEXISTENTSEQ_WARNING = 32 # Specified sequence does not exist.
|
|
68
|
+
EXIT_OVERWRITEFRAME_WARNING = 64 # Renumbering a sequence would
|
|
69
|
+
# # have over-written some frames outside the range specifed.
|
|
70
|
+
#
|
|
71
|
+
gExitStatus = EXIT_NO_ERROR
|
|
64
72
|
|
|
65
73
|
# List of date formats accepted to set file times with --touch.
|
|
66
74
|
# They are same as the formats used by 'lsseq --only-show'.
|
|
@@ -91,13 +99,17 @@ class Touch(Enum):
|
|
|
91
99
|
SPECIFIC_TIME = 3
|
|
92
100
|
|
|
93
101
|
def warnSeqSyntax(silent, basename, seq) :
|
|
102
|
+
global gExitStatus
|
|
94
103
|
if not silent :
|
|
95
104
|
print( PROG_NAME,
|
|
96
105
|
": warning: invalid range [", seq, "] for seq ", basename,
|
|
97
106
|
file=sys.stderr, sep='')
|
|
107
|
+
gExitStatus = gExitStatus | EXIT_INVALIDRANGE_WARNING
|
|
98
108
|
|
|
99
109
|
def main():
|
|
100
110
|
|
|
111
|
+
global gExitStatus
|
|
112
|
+
|
|
101
113
|
NEVER_START_FRAME = -999999999999 # Seems safe enough.
|
|
102
114
|
howToTouch = "" # Set below.
|
|
103
115
|
specificTime = 0 # Set below.
|
|
@@ -132,7 +144,7 @@ def main():
|
|
|
132
144
|
$ lsseq
|
|
133
145
|
aaa.[011-015].tif
|
|
134
146
|
'''),
|
|
135
|
-
usage="%(prog)s [OPTION]... [SEQ]...")
|
|
147
|
+
usage="%(prog)s [-h | --help] [OPTION]... [SEQ]...")
|
|
136
148
|
|
|
137
149
|
p.add_argument("--version", action="version", version=VERSION)
|
|
138
150
|
|
|
@@ -266,7 +278,7 @@ def main():
|
|
|
266
278
|
print(PROG_NAME, ": error: --rename will rename the sequence in-place, so please omit the path ",
|
|
267
279
|
'/'.join(args.newSeqName[0].split('/')[:-1]),
|
|
268
280
|
file=sys.stderr, sep='')
|
|
269
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
281
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
270
282
|
|
|
271
283
|
match = lsseqPattern.search(args.newSeqName[0])
|
|
272
284
|
|
|
@@ -276,7 +288,7 @@ def main():
|
|
|
276
288
|
file=sys.stderr, sep='')
|
|
277
289
|
print(" omitted from '--rename ", args.newSeqName[0], "'", " by mistake?",
|
|
278
290
|
file=sys.stderr, sep='')
|
|
279
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
291
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
280
292
|
|
|
281
293
|
elif len(args.files) >= 1 and match : # If len() > 1 then also invalid, but this catches both.
|
|
282
294
|
if not args.silent :
|
|
@@ -286,13 +298,13 @@ def main():
|
|
|
286
298
|
file=sys.stderr, sep='')
|
|
287
299
|
print(" appears to be a full lsseq native-format description of a sequence.",
|
|
288
300
|
file=sys.stderr, sep='')
|
|
289
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
301
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
290
302
|
|
|
291
303
|
elif len(args.files) > 1 :
|
|
292
304
|
if not args.silent :
|
|
293
305
|
print(PROG_NAME, ": error: can NOT rename more than one SEQ at a time.",
|
|
294
306
|
file=sys.stderr, sep='')
|
|
295
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
307
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
296
308
|
|
|
297
309
|
# Now check to see if a sequence with NEW_SEQNAME exists already.
|
|
298
310
|
# This code relies on lsseq >= v2.5.0 be installed.
|
|
@@ -320,10 +332,10 @@ def main():
|
|
|
320
332
|
print(PROG_NAME, ": error: can NOT rename to an existing sequence ",
|
|
321
333
|
lsseqResult.stdout,
|
|
322
334
|
file=sys.stderr, sep='', end='')
|
|
323
|
-
sys.exit(
|
|
335
|
+
sys.exit(gExitStatus | EXIT_PREEXISTINGSEQ_ERROR)
|
|
324
336
|
|
|
325
337
|
if len(args.files) == 0 :
|
|
326
|
-
sys.exit(
|
|
338
|
+
sys.exit(gExitStatus)
|
|
327
339
|
|
|
328
340
|
# The following logic means "do nothing" - so just exit cleanly (**b**)
|
|
329
341
|
#
|
|
@@ -336,7 +348,7 @@ def main():
|
|
|
336
348
|
print(PROG_NAME,
|
|
337
349
|
": warning: no offset, no rename, no padding change, etc., nothing to do",
|
|
338
350
|
file=sys.stderr, sep='')
|
|
339
|
-
sys.exit(
|
|
351
|
+
sys.exit(gExitStatus | EXIT_NULLACTION_WARNING)
|
|
340
352
|
|
|
341
353
|
# args.touch is either a string, presumably containing a date (so need to
|
|
342
354
|
# check its validity), the string "0" (meaning --touch was called with NO argument),
|
|
@@ -386,7 +398,7 @@ def main():
|
|
|
386
398
|
print(PROG_NAME,
|
|
387
399
|
": error: argument --touch: the time must be of the form [CC]YYMMDD[-hh[mm[ss]]]",
|
|
388
400
|
file=sys.stderr, sep='')
|
|
389
|
-
sys.exit(EXIT_ARGPARSE_ERROR)
|
|
401
|
+
sys.exit(gExitStatus | EXIT_ARGPARSE_ERROR)
|
|
390
402
|
|
|
391
403
|
specificTime = int(time.mktime(timeData.timetuple())) # Epoch time
|
|
392
404
|
|
|
@@ -404,6 +416,7 @@ def main():
|
|
|
404
416
|
print(PROG_NAME, ": warning: ", arg,
|
|
405
417
|
" not a sequence or not in lsseq native format",
|
|
406
418
|
file=sys.stderr, sep='')
|
|
419
|
+
gExitStatus = gExitStatus | EXIT_NOTASEQ_WARNING
|
|
407
420
|
continue
|
|
408
421
|
|
|
409
422
|
v = match.groups()
|
|
@@ -494,6 +507,7 @@ def main():
|
|
|
494
507
|
print(PROG_NAME,
|
|
495
508
|
": warning: no offset, no padding/underscore change, skipping sequence: ",
|
|
496
509
|
arg, file=sys.stderr, sep='')
|
|
510
|
+
# No change to exit codes since other seq's might have been changed.
|
|
497
511
|
continue
|
|
498
512
|
|
|
499
513
|
startPad = len(startStr)
|
|
@@ -582,6 +596,7 @@ def main():
|
|
|
582
596
|
if not args.silent :
|
|
583
597
|
print(PROG_NAME, ": warning: ", arg,
|
|
584
598
|
" is nonexistent", file=sys.stderr, sep='')
|
|
599
|
+
gExitStatus = gExitStatus | EXIT_NONEXISTENTSEQ_WARNING
|
|
585
600
|
continue
|
|
586
601
|
|
|
587
602
|
if not args.clobber :
|
|
@@ -599,6 +614,7 @@ def main():
|
|
|
599
614
|
": renumbering would have overwritten a file outside the sequence being renumbered. e.g.: ",
|
|
600
615
|
f, file=sys.stderr, sep='')
|
|
601
616
|
continue
|
|
617
|
+
gExitStatus = gExitStatus | EXIT_OVERWRITEFRAME_WARNING
|
|
602
618
|
|
|
603
619
|
i = 0
|
|
604
620
|
numFiles = len(origName)
|
|
@@ -630,6 +646,7 @@ def main():
|
|
|
630
646
|
print(PROG_NAME,
|
|
631
647
|
": warning: no changes were made to ", arg, ": skipping",
|
|
632
648
|
file=sys.stderr, sep='')
|
|
649
|
+
# gExitStatus not changed as other sequences specified may have been changed.
|
|
633
650
|
|
|
634
651
|
if __name__ == '__main__':
|
|
635
652
|
main()
|
|
@@ -14,17 +14,18 @@ long_description = (here / 'README.md').read_text(encoding='utf-8')
|
|
|
14
14
|
|
|
15
15
|
setup(
|
|
16
16
|
name = 'renumSeq',
|
|
17
|
-
version = '2.
|
|
17
|
+
version = '2.1.1',
|
|
18
18
|
description='Tool to renumber image sequences.',
|
|
19
19
|
long_description=long_description,
|
|
20
20
|
long_description_content_type='text/markdown',
|
|
21
21
|
url = 'https://github.com/jrowellfx/renumSeq',
|
|
22
22
|
author = 'James Philip Rowell',
|
|
23
23
|
author_email = 'james@alpha-eleven.com',
|
|
24
|
+
license = "BSD-3-Clause",
|
|
25
|
+
license_files = ["LICENSE"],
|
|
24
26
|
|
|
25
27
|
classifiers=[
|
|
26
28
|
'Programming Language :: Python :: 3',
|
|
27
|
-
'License :: OSI Approved :: BSD License',
|
|
28
29
|
'Operating System :: POSIX',
|
|
29
30
|
'Operating System :: Unix',
|
|
30
31
|
'Operating System :: MacOS',
|
renumseq-2.0.0/PKG-INFO
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: renumSeq
|
|
3
|
-
Version: 2.0.0
|
|
4
|
-
Summary: Tool to renumber image sequences.
|
|
5
|
-
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
-
Author: James Philip Rowell
|
|
7
|
-
Author-email: james@alpha-eleven.com
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
-
Classifier: Operating System :: POSIX
|
|
11
|
-
Classifier: Operating System :: Unix
|
|
12
|
-
Classifier: Operating System :: MacOS
|
|
13
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
-
Requires-Python: >=3.7, <4
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: seqLister>=1.2.0
|
|
18
|
-
Requires-Dist: lsseq>=4.0.0
|
|
19
|
-
Dynamic: author
|
|
20
|
-
Dynamic: author-email
|
|
21
|
-
Dynamic: classifier
|
|
22
|
-
Dynamic: description
|
|
23
|
-
Dynamic: description-content-type
|
|
24
|
-
Dynamic: home-page
|
|
25
|
-
Dynamic: requires-dist
|
|
26
|
-
Dynamic: requires-python
|
|
27
|
-
Dynamic: summary
|
|
28
|
-
|
|
29
|
-
# About renumseq
|
|
30
|
-
|
|
31
|
-
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
32
|
-
which are most
|
|
33
|
-
typically used in CG post-production.
|
|
34
|
-
|
|
35
|
-
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
36
|
-
It also allows you adjust the padding of the frame numbers.
|
|
37
|
-
|
|
38
|
-
`renumseq` uses the syntax of the native output of
|
|
39
|
-
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
40
|
-
the sequence to be renumbered. Therefore it is recommended to
|
|
41
|
-
use `lsseq` as it makes using `renumseq` easier.
|
|
42
|
-
|
|
43
|
-
For example, use `lsseq` to list a sequence, then
|
|
44
|
-
cut and paste its
|
|
45
|
-
output as the arguments to `renumseq` with the appropriate
|
|
46
|
-
arguments for setting the offset or new start-frame.
|
|
47
|
-
|
|
48
|
-
`renumseq` was written to be safe in that it won't
|
|
49
|
-
unintentionally overwrite any existing files
|
|
50
|
-
during renumbering.
|
|
51
|
-
|
|
52
|
-
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
53
|
-
outside the range specified then it will skip renumbering that sequence
|
|
54
|
-
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
55
|
-
there is an option to force `renumseq` to overwrite those files if desired.
|
|
56
|
-
|
|
57
|
-
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
58
|
-
(it does a move of the file), so it's fast.
|
|
59
|
-
|
|
60
|
-
`renumseq` also has a useful option, called `--replace-underscore`
|
|
61
|
-
that changes any underscore-separators (separating the filename from the
|
|
62
|
-
frame-number) with dot-separators, like this:
|
|
63
|
-
|
|
64
|
-
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
65
|
-
|
|
66
|
-
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
67
|
-
use a zero offset, plus the `--replace-underscore` argument.
|
|
68
|
-
|
|
69
|
-
## Installing renumseq
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
python3 -m pip install renumSeq --upgrade
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Testing renumseq
|
|
76
|
-
|
|
77
|
-
After installing try the following:
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
$ cd ~
|
|
81
|
-
$ mkdir tmp
|
|
82
|
-
$ cd tmp
|
|
83
|
-
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
84
|
-
$ lsseq -Z
|
|
85
|
-
aaa.[001-005].tif
|
|
86
|
-
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
87
|
-
aaa.005.tif -> aaa.015.tif
|
|
88
|
-
aaa.004.tif -> aaa.014.tif
|
|
89
|
-
aaa.003.tif -> aaa.013.tif
|
|
90
|
-
aaa.002.tif -> aaa.012.tif
|
|
91
|
-
aaa.001.tif -> aaa.011.tif
|
|
92
|
-
$ lsseq -Z
|
|
93
|
-
aaa.[011-015].tif
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Note that you may get an error from your
|
|
97
|
-
shell when you try to run the `renumseq` command above, without the
|
|
98
|
-
quotes around the sequence, that might look something like
|
|
99
|
-
this:
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
% renumseq -o 10 aaa.[001-005].tif
|
|
103
|
-
renumseq: No match.
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
In which case you need to "escape" the square brackets as they are special characters
|
|
107
|
-
as far as the shell is concerned. Escape them like this:
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
111
|
-
aaa.005.tif -> aaa.015.tif
|
|
112
|
-
aaa.004.tif -> aaa.014.tif
|
|
113
|
-
aaa.003.tif -> aaa.013.tif
|
|
114
|
-
aaa.002.tif -> aaa.012.tif
|
|
115
|
-
aaa.001.tif -> aaa.011.tif
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Alternatively you can just enclose the argument in quotes
|
|
119
|
-
(`'aaa.[001-005].tif'`)
|
|
120
|
-
like we did in the example above.
|
|
121
|
-
|
|
122
|
-
Type this:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
$ renumseq --help
|
|
126
|
-
```
|
|
127
|
-
...for much more useful info.
|
renumseq-2.0.0/README.md
DELETED
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
# About renumseq
|
|
2
|
-
|
|
3
|
-
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
4
|
-
which are most
|
|
5
|
-
typically used in CG post-production.
|
|
6
|
-
|
|
7
|
-
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
8
|
-
It also allows you adjust the padding of the frame numbers.
|
|
9
|
-
|
|
10
|
-
`renumseq` uses the syntax of the native output of
|
|
11
|
-
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
12
|
-
the sequence to be renumbered. Therefore it is recommended to
|
|
13
|
-
use `lsseq` as it makes using `renumseq` easier.
|
|
14
|
-
|
|
15
|
-
For example, use `lsseq` to list a sequence, then
|
|
16
|
-
cut and paste its
|
|
17
|
-
output as the arguments to `renumseq` with the appropriate
|
|
18
|
-
arguments for setting the offset or new start-frame.
|
|
19
|
-
|
|
20
|
-
`renumseq` was written to be safe in that it won't
|
|
21
|
-
unintentionally overwrite any existing files
|
|
22
|
-
during renumbering.
|
|
23
|
-
|
|
24
|
-
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
25
|
-
outside the range specified then it will skip renumbering that sequence
|
|
26
|
-
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
27
|
-
there is an option to force `renumseq` to overwrite those files if desired.
|
|
28
|
-
|
|
29
|
-
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
30
|
-
(it does a move of the file), so it's fast.
|
|
31
|
-
|
|
32
|
-
`renumseq` also has a useful option, called `--replace-underscore`
|
|
33
|
-
that changes any underscore-separators (separating the filename from the
|
|
34
|
-
frame-number) with dot-separators, like this:
|
|
35
|
-
|
|
36
|
-
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
37
|
-
|
|
38
|
-
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
39
|
-
use a zero offset, plus the `--replace-underscore` argument.
|
|
40
|
-
|
|
41
|
-
## Installing renumseq
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
python3 -m pip install renumSeq --upgrade
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
## Testing renumseq
|
|
48
|
-
|
|
49
|
-
After installing try the following:
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
$ cd ~
|
|
53
|
-
$ mkdir tmp
|
|
54
|
-
$ cd tmp
|
|
55
|
-
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
56
|
-
$ lsseq -Z
|
|
57
|
-
aaa.[001-005].tif
|
|
58
|
-
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
59
|
-
aaa.005.tif -> aaa.015.tif
|
|
60
|
-
aaa.004.tif -> aaa.014.tif
|
|
61
|
-
aaa.003.tif -> aaa.013.tif
|
|
62
|
-
aaa.002.tif -> aaa.012.tif
|
|
63
|
-
aaa.001.tif -> aaa.011.tif
|
|
64
|
-
$ lsseq -Z
|
|
65
|
-
aaa.[011-015].tif
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
Note that you may get an error from your
|
|
69
|
-
shell when you try to run the `renumseq` command above, without the
|
|
70
|
-
quotes around the sequence, that might look something like
|
|
71
|
-
this:
|
|
72
|
-
|
|
73
|
-
```
|
|
74
|
-
% renumseq -o 10 aaa.[001-005].tif
|
|
75
|
-
renumseq: No match.
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
In which case you need to "escape" the square brackets as they are special characters
|
|
79
|
-
as far as the shell is concerned. Escape them like this:
|
|
80
|
-
|
|
81
|
-
```
|
|
82
|
-
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
83
|
-
aaa.005.tif -> aaa.015.tif
|
|
84
|
-
aaa.004.tif -> aaa.014.tif
|
|
85
|
-
aaa.003.tif -> aaa.013.tif
|
|
86
|
-
aaa.002.tif -> aaa.012.tif
|
|
87
|
-
aaa.001.tif -> aaa.011.tif
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Alternatively you can just enclose the argument in quotes
|
|
91
|
-
(`'aaa.[001-005].tif'`)
|
|
92
|
-
like we did in the example above.
|
|
93
|
-
|
|
94
|
-
Type this:
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
$ renumseq --help
|
|
98
|
-
```
|
|
99
|
-
...for much more useful info.
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.2
|
|
2
|
-
Name: renumSeq
|
|
3
|
-
Version: 2.0.0
|
|
4
|
-
Summary: Tool to renumber image sequences.
|
|
5
|
-
Home-page: https://github.com/jrowellfx/renumSeq
|
|
6
|
-
Author: James Philip Rowell
|
|
7
|
-
Author-email: james@alpha-eleven.com
|
|
8
|
-
Classifier: Programming Language :: Python :: 3
|
|
9
|
-
Classifier: License :: OSI Approved :: BSD License
|
|
10
|
-
Classifier: Operating System :: POSIX
|
|
11
|
-
Classifier: Operating System :: Unix
|
|
12
|
-
Classifier: Operating System :: MacOS
|
|
13
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
-
Requires-Python: >=3.7, <4
|
|
15
|
-
Description-Content-Type: text/markdown
|
|
16
|
-
License-File: LICENSE
|
|
17
|
-
Requires-Dist: seqLister>=1.2.0
|
|
18
|
-
Requires-Dist: lsseq>=4.0.0
|
|
19
|
-
Dynamic: author
|
|
20
|
-
Dynamic: author-email
|
|
21
|
-
Dynamic: classifier
|
|
22
|
-
Dynamic: description
|
|
23
|
-
Dynamic: description-content-type
|
|
24
|
-
Dynamic: home-page
|
|
25
|
-
Dynamic: requires-dist
|
|
26
|
-
Dynamic: requires-python
|
|
27
|
-
Dynamic: summary
|
|
28
|
-
|
|
29
|
-
# About renumseq
|
|
30
|
-
|
|
31
|
-
`renumseq` is a Unix/Linux command-line-utility for renumbering image-sequences
|
|
32
|
-
which are most
|
|
33
|
-
typically used in CG post-production.
|
|
34
|
-
|
|
35
|
-
`renumseq` allows you to renumber sequences with an offset or give them a new `start` frame.
|
|
36
|
-
It also allows you adjust the padding of the frame numbers.
|
|
37
|
-
|
|
38
|
-
`renumseq` uses the syntax of the native output of
|
|
39
|
-
[`lsseq`](https://github.com/jrowellfx/lsseq) to specify
|
|
40
|
-
the sequence to be renumbered. Therefore it is recommended to
|
|
41
|
-
use `lsseq` as it makes using `renumseq` easier.
|
|
42
|
-
|
|
43
|
-
For example, use `lsseq` to list a sequence, then
|
|
44
|
-
cut and paste its
|
|
45
|
-
output as the arguments to `renumseq` with the appropriate
|
|
46
|
-
arguments for setting the offset or new start-frame.
|
|
47
|
-
|
|
48
|
-
`renumseq` was written to be safe in that it won't
|
|
49
|
-
unintentionally overwrite any existing files
|
|
50
|
-
during renumbering.
|
|
51
|
-
|
|
52
|
-
If `renumseq` finds that by renumbering a sequence it will write over another frame
|
|
53
|
-
outside the range specified then it will skip renumbering that sequence
|
|
54
|
-
(printing a warning) and go onto the next sequence in the list. Naturally
|
|
55
|
-
there is an option to force `renumseq` to overwrite those files if desired.
|
|
56
|
-
|
|
57
|
-
`renumseq` doesn't need to make temporary copies of files during the renumbering
|
|
58
|
-
(it does a move of the file), so it's fast.
|
|
59
|
-
|
|
60
|
-
`renumseq` also has a useful option, called `--replace-underscore`
|
|
61
|
-
that changes any underscore-separators (separating the filename from the
|
|
62
|
-
frame-number) with dot-separators, like this:
|
|
63
|
-
|
|
64
|
-
`filename_[n-m].extension` -> `filename.[n-m].extension`
|
|
65
|
-
|
|
66
|
-
`Protip`: If all you want to do is switch the separator from an underscore to a dot, then
|
|
67
|
-
use a zero offset, plus the `--replace-underscore` argument.
|
|
68
|
-
|
|
69
|
-
## Installing renumseq
|
|
70
|
-
|
|
71
|
-
```
|
|
72
|
-
python3 -m pip install renumSeq --upgrade
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Testing renumseq
|
|
76
|
-
|
|
77
|
-
After installing try the following:
|
|
78
|
-
|
|
79
|
-
```
|
|
80
|
-
$ cd ~
|
|
81
|
-
$ mkdir tmp
|
|
82
|
-
$ cd tmp
|
|
83
|
-
$ touch aaa.001.tif aaa.002.tif aaa.003.tif aaa.004.tif aaa.005.tif
|
|
84
|
-
$ lsseq -Z
|
|
85
|
-
aaa.[001-005].tif
|
|
86
|
-
$ renumseq --verbose --offset 10 'aaa.[001-005].tif'
|
|
87
|
-
aaa.005.tif -> aaa.015.tif
|
|
88
|
-
aaa.004.tif -> aaa.014.tif
|
|
89
|
-
aaa.003.tif -> aaa.013.tif
|
|
90
|
-
aaa.002.tif -> aaa.012.tif
|
|
91
|
-
aaa.001.tif -> aaa.011.tif
|
|
92
|
-
$ lsseq -Z
|
|
93
|
-
aaa.[011-015].tif
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
Note that you may get an error from your
|
|
97
|
-
shell when you try to run the `renumseq` command above, without the
|
|
98
|
-
quotes around the sequence, that might look something like
|
|
99
|
-
this:
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
% renumseq -o 10 aaa.[001-005].tif
|
|
103
|
-
renumseq: No match.
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
In which case you need to "escape" the square brackets as they are special characters
|
|
107
|
-
as far as the shell is concerned. Escape them like this:
|
|
108
|
-
|
|
109
|
-
```
|
|
110
|
-
% renumseq -v -o 10 aaa.\[001-005\].tif
|
|
111
|
-
aaa.005.tif -> aaa.015.tif
|
|
112
|
-
aaa.004.tif -> aaa.014.tif
|
|
113
|
-
aaa.003.tif -> aaa.013.tif
|
|
114
|
-
aaa.002.tif -> aaa.012.tif
|
|
115
|
-
aaa.001.tif -> aaa.011.tif
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
Alternatively you can just enclose the argument in quotes
|
|
119
|
-
(`'aaa.[001-005].tif'`)
|
|
120
|
-
like we did in the example above.
|
|
121
|
-
|
|
122
|
-
Type this:
|
|
123
|
-
|
|
124
|
-
```
|
|
125
|
-
$ renumseq --help
|
|
126
|
-
```
|
|
127
|
-
...for much more useful info.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|