b/c...py: skip_first: support fractional seconds
This commit is contained in:
parent
376c7be221
commit
259107b2b6
@ -54,6 +54,18 @@ DEFAULT_PARAMETERS = {
|
|||||||
|
|
||||||
stdout_atty = hasattr(stdout, "isatty") and stdout.isatty()
|
stdout_atty = hasattr(stdout, "isatty") and stdout.isatty()
|
||||||
|
|
||||||
|
def is_decimal_number(s: str) -> bool:
|
||||||
|
if s.count('.') > 1: # More than one decimal point
|
||||||
|
return False
|
||||||
|
|
||||||
|
if s.startswith(('+', '-')):
|
||||||
|
s = s[1:] # Remove the sign for further checks
|
||||||
|
|
||||||
|
if s.replace('.', '', 1).isdigit():
|
||||||
|
return True
|
||||||
|
|
||||||
|
return False
|
||||||
|
|
||||||
def fetch(name: str):
|
def fetch(name: str):
|
||||||
if from_env := environ.get(name):
|
if from_env := environ.get(name):
|
||||||
return from_env
|
return from_env
|
||||||
@ -328,17 +340,22 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
# - Parse the '--skip-first' argument
|
# - Parse the '--skip-first' argument
|
||||||
if not args.skip_first is None:
|
if not args.skip_first is None:
|
||||||
|
encountered_point = False
|
||||||
encountered_s = False
|
encountered_s = False
|
||||||
for character in args.skip_first:
|
for character in args.skip_first:
|
||||||
if character.isdigit() or character == "s" and not encountered_s:
|
if character.isdigit() or character == "." and \
|
||||||
if character == "s":
|
not encountered_point or character == "s" and not encountered_s:
|
||||||
|
if character == ".":
|
||||||
|
encountered_point = True
|
||||||
|
elif character == "s":
|
||||||
encountered_s = True
|
encountered_s = True
|
||||||
else:
|
else:
|
||||||
print(f"Invalid --skip-first format: `{args.skip_first}`")
|
raise SystemExit( "Invalid --skip-first format: "
|
||||||
exit(1)
|
f"`{args.skip_first}`")
|
||||||
|
|
||||||
skip_first = \
|
skip_first = \
|
||||||
[int(x) if x.isdigit() else 0 for x in args.skip_first.split("s")]
|
[Decimal(x) if is_decimal_number(x) else 0 for x in \
|
||||||
|
args.skip_first.split("s")]
|
||||||
|
|
||||||
skip_first_samples = 0
|
skip_first_samples = 0
|
||||||
if len(skip_first) == 1:
|
if len(skip_first) == 1:
|
||||||
@ -348,6 +365,9 @@ if __name__ == "__main__":
|
|||||||
else:
|
else:
|
||||||
skip_first_samples = 0
|
skip_first_samples = 0
|
||||||
|
|
||||||
|
# round the number of skipped first samples
|
||||||
|
skip_first_samples = ceil(skip_first_samples)
|
||||||
|
|
||||||
length_formula = lambda channels, samples, n: channels * (samples + n)
|
length_formula = lambda channels, samples, n: channels * (samples + n)
|
||||||
gen_length = length_formula(args.channels, samples, 0)
|
gen_length = length_formula(args.channels, samples, 0)
|
||||||
loop_end = length_formula(args.channels, samples, skip_first_samples)
|
loop_end = length_formula(args.channels, samples, skip_first_samples)
|
||||||
|
Loading…
Reference in New Issue
Block a user