From d441c69fefeaef7ab7e58becc787d1f353ae9365 Mon Sep 17 00:00:00 2001 From: Ethan Dalool Date: Sat, 8 Nov 2025 11:40:31 -0800 Subject: [PATCH] Add sdingest.py. --- sdingest.py | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 sdingest.py diff --git a/sdingest.py b/sdingest.py new file mode 100644 index 0000000..407467f --- /dev/null +++ b/sdingest.py @@ -0,0 +1,66 @@ +import shutil +import argparse +import sys + +from voussoirkit import betterhelp +from voussoirkit import pathclass +from voussoirkit import spinal +from voussoirkit import vlogging +from voussoirkit import windrives +from voussoirkit import progressbars + +log = vlogging.getLogger(__name__, 'sdingest') + +def sdingest_one(folder): + cwd = pathclass.cwd() + for file in folder.walk_files(): + # print(file.absolute_path) + spinal.copy_file( + file, + cwd.with_child(file.basename), + progressbar=progressbars.Bar1_bytestring, + ) + +def sdingest_all(): + dcim = None + drives = windrives.get_drive_map() + for (mount, info) in drives.items(): + mount = pathclass.Path(mount) + + # Panasonic HC-X1500/HC-X2000 + panasonic = mount.with_child('PRIVATE').with_child('PANA_GRP').with_child('001YAQAM') + if panasonic.is_folder: + sdingest_one(panasonic) + continue + + # Most cameras + dcim = mount.with_child('DCIM') + if dcim.is_folder: + sdingest_one(dcim) + continue + + # Sony ICD UX570 + if info.get('name').upper() == 'MEMORY CARD': + folder = mount.join('PRIVATE\\SONY\\REC_FILE') + if folder.exists: + sdingest_one(folder) + continue + + if dcim is None: + return 1 + +def sdingest_argparse(args): + return sdingest_all() + +@vlogging.main_decorator +def main(argv): + parser = argparse.ArgumentParser( + description=''' + ''', + ) + parser.set_defaults(func=sdingest_argparse) + + return betterhelp.go(parser, argv) + +if __name__ == '__main__': + raise SystemExit(main(sys.argv[1:]))