Add cli command new_photo.

master
voussoir 2022-08-31 20:21:07 -07:00
parent b52e79f99c
commit 97e14b9917
No known key found for this signature in database
GPG Key ID: 5F7554F8C26DACCB
1 changed files with 81 additions and 0 deletions

View File

@ -7,12 +7,15 @@ from voussoirkit import betterhelp
from voussoirkit import interactive
from voussoirkit import pathclass
from voussoirkit import pipeable
from voussoirkit import ratelimiter
from voussoirkit import spinal
from voussoirkit import stringtools
from voussoirkit import vlogging
import etiquette
log = vlogging.get_logger(__name__, 'etiquette_cli')
photodb = None
def load_photodb():
global photodb
@ -364,6 +367,40 @@ def init_argparse(args):
photodb = etiquette.photodb.PhotoDB(create=True)
return 0
def new_photo_argparse(args):
load_photodb()
limiter = ratelimiter.Ratelimiter(allowance=1, period=args.ratelimit)
need_commit = False
with photodb.transaction:
photos = []
for file in pathclass.glob_many_files(args.globs):
try:
exists = photodb.get_photo_by_path(file)
log.info('%s exists.', file.absolute_path)
continue
except etiquette.exceptions.NoSuchPhoto:
pass
limiter.limit()
photo = photodb.new_photo(file)
photos.append(photo)
need_commit = True
if not need_commit:
return 0
if args.make_album or args.album_title:
album_title = args.album_title or None
album = photodb.new_album(title=album_title)
album.add_photos(photos)
if not (args.autoyes or interactive.getpermission('Commit?')):
photodb.rollback()
return 1
return 0
def purge_deleted_files_argparse(args):
load_photodb()
@ -1075,6 +1112,50 @@ def main(argv):
################################################################################################
p_new_photo = subparsers.add_parser(
'new_photo',
aliases=['new-photo', 'new_photos', 'new-photos'],
description='''
''',
)
p_new_photo.add_argument(
'globs',
nargs='+',
help='''
Make Photos from files that match glob patterns.
''',
)
p_new_photo.add_argument(
'--ratelimit',
type=float,
default=0.25,
help='''
''',
)
p_new_photo.add_argument(
'--make_album', '--make-album',
action='store_true',
help='''
''',
)
p_new_photo.add_argument(
'--album_title', '--album-title',
default=None,
help='''
''',
)
p_new_photo.add_argument(
'--yes',
dest='autoyes',
action='store_true',
help='''
Commit the database without prompting.
''',
)
p_new_photo.set_defaults(func=new_photo_argparse)
################################################################################################
p_purge_deleted_files = subparsers.add_parser(
'purge_deleted_files',
aliases=['purge-deleted-files'],