Add cli command new_photo.
This commit is contained in:
parent
b52e79f99c
commit
97e14b9917
1 changed files with 81 additions and 0 deletions
|
@ -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'],
|
||||
|
|
Loading…
Reference in a new issue