From d02caa512476c8c859ac514a7980ba2159d0437e Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Sun, 23 Nov 2025 14:46:29 -0800 Subject: [PATCH] Use voussoirkit.ffmpegtools for autocat. --- autocat.py | 49 ++++++++++++++++++++++++++++++++--------------- autocat_sendto.py | 21 ++++++++++++++++++++ 2 files changed, 55 insertions(+), 15 deletions(-) create mode 100644 autocat_sendto.py diff --git a/autocat.py b/autocat.py index a57f9b6..89783e1 100644 --- a/autocat.py +++ b/autocat.py @@ -1,23 +1,42 @@ -import glob +import argparse import os import sys import tempfile -if len(sys.argv) < 3: - raise ValueError() +from voussoirkit import betterhelp +from voussoirkit import ffmpegtools +from voussoirkit import pathclass +from voussoirkit import vlogging +from voussoirkit import winglob -output_filename = sys.argv.pop(-1) -patterns = sys.argv[1:] +log = vlogging.getLogger(__name__, 'autocat') -names = [name for pattern in patterns for name in glob.glob(pattern)] -names = [os.path.abspath(x) for x in names] -cat_lines = [f'file \'{x}\'' for x in names] -cat_text = '\n'.join(cat_lines) -cat_file = tempfile.TemporaryFile('w', encoding='utf-8', delete=False) -cat_file.write(cat_text) -cat_file.close() +def autocat_argparse(args): + if len(args.names) < 3: + raise ValueError('Should have at least three arguments: two inputs and one output.') -cmd = f'ffmpeg -f concat -safe 0 -i {cat_file.name} -map 0:v? -map 0:a? -map 0:s? -c copy "{output_filename}"' -os.system(cmd) + output_file = pathclass.Path(args.names.pop(-1)) + patterns = args.names -os.remove(cat_file.name) + input_files = list(pathclass.glob_many_files(patterns)) + output_file = ffmpegtools.concatenate(input_files, output_file) + return 0 + +@vlogging.main_decorator +def main(argv): + parser = argparse.ArgumentParser( + description=''' + ''', + ) + parser.add_argument( + 'names', + nargs='+', + help=''' + ''', + ) + parser.set_defaults(func=autocat_argparse) + + return betterhelp.go(parser, argv) + +if __name__ == '__main__': + raise SystemExit(main(sys.argv[1:])) diff --git a/autocat_sendto.py b/autocat_sendto.py new file mode 100644 index 0000000..37fd4ad --- /dev/null +++ b/autocat_sendto.py @@ -0,0 +1,21 @@ +import send2trash +import sys + +from voussoirkit import pathclass +from voussoirkit import ffmpegtools +from voussoirkit import stringtools +from voussoirkit import timetools + +if len(sys.argv) < 3: + raise ValueError() + +input_files = sys.argv[1:] +input_files = [pathclass.Path(p) for p in input_files] +input_files.sort(key=lambda f: stringtools.natural_sorter(f.normcase)) +first_file = pathclass.Path(input_files[0]) +output_file = first_file.parent.with_child(first_file.replace_extension('').basename + '_' + str(int(timetools.now().timestamp()))).add_extension(first_file.extension) + +ffmpegtools.concatenate(input_files, output_file) + +for file in input_files: + send2trash.send2trash(file.absolute_path)