cmd/sdingest.py

73 lines
1.9 KiB
Python

import argparse
import os
import shutil
import sys
import photo_rename
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:
files = list(panasonic.walk_files())
pairs = photo_rename.makenames(files, read_mtime=True, minus_duration=True)
for (old, new) in pairs.items():
os.rename(old.absolute_path, new.absolute_path)
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:]))