Add init, set/unset searchhidden, add_tag commands.
This commit is contained in:
parent
272bd471ff
commit
d2b6aebee5
1 changed files with 141 additions and 46 deletions
|
@ -28,8 +28,81 @@ def find_photodb():
|
||||||
photodbs[path] = photodb
|
photodbs[path] = photodb
|
||||||
return photodb
|
return photodb
|
||||||
|
|
||||||
|
# HELPERS ##########################################################################################
|
||||||
|
|
||||||
|
def get_photos_from_args(args):
|
||||||
|
photos = []
|
||||||
|
if args.photo_id_args:
|
||||||
|
photos.extend(photodb.get_photos_by_id(args.photo_id_args))
|
||||||
|
|
||||||
|
if args.photo_search_args:
|
||||||
|
photos.extend(search_by_argparse(args.photo_search_args, yield_photos=True))
|
||||||
|
|
||||||
|
return photos
|
||||||
|
|
||||||
|
def get_albums_from_args(args):
|
||||||
|
albums = []
|
||||||
|
if args.album_id_args:
|
||||||
|
albums.extend(photodb.get_albums_by_id(args.album_id_args))
|
||||||
|
|
||||||
|
if args.album_search_args:
|
||||||
|
albums.extend(search_by_argparse(args.album_search_args, yield_albums=True))
|
||||||
|
|
||||||
|
return albums
|
||||||
|
|
||||||
|
def search_in_cwd(**kwargs):
|
||||||
|
photodb = find_photodb()
|
||||||
|
cwd = pathclass.cwd()
|
||||||
|
return photodb.search(
|
||||||
|
within_directory=cwd,
|
||||||
|
**kwargs,
|
||||||
|
)
|
||||||
|
|
||||||
|
def search_by_argparse(args, yield_albums=False, yield_photos=False):
|
||||||
|
return search_in_cwd(
|
||||||
|
area=args.area,
|
||||||
|
width=args.width,
|
||||||
|
height=args.height,
|
||||||
|
ratio=args.ratio,
|
||||||
|
bytes=args.bytes,
|
||||||
|
duration=args.duration,
|
||||||
|
author=args.author,
|
||||||
|
created=args.created,
|
||||||
|
extension=args.extension,
|
||||||
|
extension_not=args.extension_not,
|
||||||
|
filename=args.filename,
|
||||||
|
has_tags=args.has_tags,
|
||||||
|
has_thumbnail=args.has_thumbnail,
|
||||||
|
is_searchhidden=args.is_searchhidden,
|
||||||
|
mimetype=args.mimetype,
|
||||||
|
tag_musts=args.tag_musts,
|
||||||
|
tag_mays=args.tag_mays,
|
||||||
|
tag_forbids=args.tag_forbids,
|
||||||
|
tag_expression=args.tag_expression,
|
||||||
|
limit=args.limit,
|
||||||
|
offset=args.offset,
|
||||||
|
orderby=args.orderby,
|
||||||
|
yield_albums=yield_albums,
|
||||||
|
yield_photos=yield_photos,
|
||||||
|
)
|
||||||
|
|
||||||
####################################################################################################
|
####################################################################################################
|
||||||
|
|
||||||
|
def add_tag_argparse(args):
|
||||||
|
photodb = find_photodb()
|
||||||
|
|
||||||
|
tag = photodb.get_tag(name=args.tag_name)
|
||||||
|
if args.photo_id_args or args.photo_search_args:
|
||||||
|
photos = get_photos_from_args(args)
|
||||||
|
else:
|
||||||
|
photos = search_in_cwd()
|
||||||
|
|
||||||
|
for photo in photos:
|
||||||
|
photo.add_tag(tag)
|
||||||
|
|
||||||
|
if args.autoyes or getpermission.getpermission('Commit?'):
|
||||||
|
photodb.commit()
|
||||||
|
|
||||||
def digest_directory_argparse(args):
|
def digest_directory_argparse(args):
|
||||||
directory = pathclass.Path(args.directory)
|
directory = pathclass.Path(args.directory)
|
||||||
photodb = find_photodb()
|
photodb = find_photodb()
|
||||||
|
@ -51,6 +124,12 @@ def easybake_argparse(args):
|
||||||
photodb = find_photodb()
|
photodb = find_photodb()
|
||||||
for eb_string in args.eb_strings:
|
for eb_string in args.eb_strings:
|
||||||
notes = photodb.easybake(eb_string)
|
notes = photodb.easybake(eb_string)
|
||||||
|
|
||||||
|
if args.autoyes or getpermission.getpermission('Commit?'):
|
||||||
|
photodb.commit()
|
||||||
|
|
||||||
|
def init_argparse(args):
|
||||||
|
photodb = etiquette.photodb.PhotoDB('.', create=True)
|
||||||
photodb.commit()
|
photodb.commit()
|
||||||
|
|
||||||
def purge_deleted_photos_argparse(args):
|
def purge_deleted_photos_argparse(args):
|
||||||
|
@ -64,47 +143,36 @@ def purge_empty_albums_argparse(args):
|
||||||
photodb = find_photodb()
|
photodb = find_photodb()
|
||||||
for deleted in photodb.purge_empty_albums():
|
for deleted in photodb.purge_empty_albums():
|
||||||
print(deleted)
|
print(deleted)
|
||||||
|
|
||||||
if args.autoyes or getpermission.getpermission('Commit?'):
|
if args.autoyes or getpermission.getpermission('Commit?'):
|
||||||
photodb.commit()
|
photodb.commit()
|
||||||
|
|
||||||
def search_by_argparse(args, yield_albums=False, yield_photos=False):
|
|
||||||
photodb = find_photodb()
|
|
||||||
cwd = pathclass.cwd()
|
|
||||||
results = photodb.search(
|
|
||||||
area=args.area,
|
|
||||||
width=args.width,
|
|
||||||
height=args.height,
|
|
||||||
ratio=args.ratio,
|
|
||||||
bytes=args.bytes,
|
|
||||||
duration=args.duration,
|
|
||||||
author=args.author,
|
|
||||||
created=args.created,
|
|
||||||
extension=args.extension,
|
|
||||||
extension_not=args.extension_not,
|
|
||||||
filename=args.filename,
|
|
||||||
has_tags=args.has_tags,
|
|
||||||
has_thumbnail=args.has_thumbnail,
|
|
||||||
is_searchhidden=args.is_searchhidden,
|
|
||||||
mimetype=args.mimetype,
|
|
||||||
tag_musts=args.tag_musts,
|
|
||||||
tag_mays=args.tag_mays,
|
|
||||||
tag_forbids=args.tag_forbids,
|
|
||||||
tag_expression=args.tag_expression,
|
|
||||||
within_directory=cwd,
|
|
||||||
limit=args.limit,
|
|
||||||
offset=args.offset,
|
|
||||||
orderby=args.orderby,
|
|
||||||
yield_albums=yield_albums,
|
|
||||||
yield_photos=yield_photos,
|
|
||||||
)
|
|
||||||
return results
|
|
||||||
|
|
||||||
def search_argparse(args):
|
def search_argparse(args):
|
||||||
photos = search_by_argparse(args, yield_photos=True)
|
photos = search_by_argparse(args, yield_photos=True)
|
||||||
photos = sorted(photos, key=lambda p: p.real_path)
|
photos = sorted(photos, key=lambda p: p.real_path)
|
||||||
for photo in photos:
|
for photo in photos:
|
||||||
print(photo.real_path.absolute_path)
|
print(photo.real_path.absolute_path)
|
||||||
|
|
||||||
|
def set_unset_searchhidden_argparse(args, searchhidden):
|
||||||
|
photodb = find_photodb()
|
||||||
|
|
||||||
|
if args.photo_search_args:
|
||||||
|
args.photo_search_args.is_searchhidden = not searchhidden
|
||||||
|
|
||||||
|
if args.album_search_args:
|
||||||
|
args.album_search_args.is_searchhidden = not searchhidden
|
||||||
|
|
||||||
|
photos = get_photos_from_args(args)
|
||||||
|
albums = get_albums_from_args(args)
|
||||||
|
photos.extend(photo for album in albums for photo in album.walk_photos())
|
||||||
|
|
||||||
|
for photo in photos:
|
||||||
|
print(photo)
|
||||||
|
photo.set_searchhidden(searchhidden)
|
||||||
|
|
||||||
|
if args.autoyes or getpermission.getpermission('Commit?'):
|
||||||
|
photodb.commit()
|
||||||
|
|
||||||
def tag_breplace_argparse(args):
|
def tag_breplace_argparse(args):
|
||||||
photodb = find_photodb()
|
photodb = find_photodb()
|
||||||
renames = []
|
renames = []
|
||||||
|
@ -148,20 +216,33 @@ def main(argv):
|
||||||
subparsers = parser.add_subparsers()
|
subparsers = parser.add_subparsers()
|
||||||
|
|
||||||
primary_args = []
|
primary_args = []
|
||||||
|
photo_id_args = []
|
||||||
photo_search_args = []
|
photo_search_args = []
|
||||||
|
album_id_args = []
|
||||||
album_search_args = []
|
album_search_args = []
|
||||||
mode = primary_args
|
mode = primary_args
|
||||||
for arg in argv:
|
for arg in argv:
|
||||||
if arg in {'--search', '--photo_search', '--photo-search'}:
|
if 0:
|
||||||
|
pass
|
||||||
|
elif arg in {'--search', '--photo_search', '--photo-search'}:
|
||||||
mode = photo_search_args
|
mode = photo_search_args
|
||||||
continue
|
elif arg in {'--album_search', '--album-search'}:
|
||||||
if arg in {'--album_search', '--album-search'}:
|
|
||||||
mode = album_search_args
|
mode = album_search_args
|
||||||
continue
|
elif arg == '--photos':
|
||||||
|
mode = photo_id_args
|
||||||
|
elif arg == '--albums':
|
||||||
|
mode = album_id_args
|
||||||
|
else:
|
||||||
mode.append(arg)
|
mode.append(arg)
|
||||||
|
|
||||||
|
p_add_tag = subparsers.add_parser('add_tag', aliases=['add-tag'])
|
||||||
|
p_add_tag.add_argument('tag_name')
|
||||||
|
p_add_tag.add_argument('--yes', dest='autoyes', action='store_true')
|
||||||
|
p_add_tag.set_defaults(func=add_tag_argparse)
|
||||||
|
|
||||||
p_easybake = subparsers.add_parser('easybake')
|
p_easybake = subparsers.add_parser('easybake')
|
||||||
p_easybake.add_argument('eb_strings', nargs='+')
|
p_easybake.add_argument('eb_strings', nargs='+')
|
||||||
|
p_easybake.add_argument('--yes', dest='autoyes', action='store_true')
|
||||||
p_easybake.set_defaults(func=easybake_argparse)
|
p_easybake.set_defaults(func=easybake_argparse)
|
||||||
|
|
||||||
p_digest = subparsers.add_parser('digest', aliases=['digest_directory', 'digest-directory'])
|
p_digest = subparsers.add_parser('digest', aliases=['digest_directory', 'digest-directory'])
|
||||||
|
@ -173,6 +254,9 @@ def main(argv):
|
||||||
p_digest.set_defaults(func=digest_directory_argparse)
|
p_digest.set_defaults(func=digest_directory_argparse)
|
||||||
|
|
||||||
|
|
||||||
|
p_init = subparsers.add_parser('init', aliases=['create'])
|
||||||
|
p_init.set_defaults(func=init_argparse)
|
||||||
|
|
||||||
p_purge_deleted_photos = subparsers.add_parser('purge_deleted_photos', aliases=['purge-deleted-photos'])
|
p_purge_deleted_photos = subparsers.add_parser('purge_deleted_photos', aliases=['purge-deleted-photos'])
|
||||||
p_purge_deleted_photos.add_argument('--yes', dest='autoyes', action='store_true')
|
p_purge_deleted_photos.add_argument('--yes', dest='autoyes', action='store_true')
|
||||||
p_purge_deleted_photos.set_defaults(func=purge_deleted_photos_argparse)
|
p_purge_deleted_photos.set_defaults(func=purge_deleted_photos_argparse)
|
||||||
|
@ -207,6 +291,14 @@ def main(argv):
|
||||||
# p_search.add_argument('--yield_albums', '--yield-albums', dest='yield_albums', default=None)
|
# p_search.add_argument('--yield_albums', '--yield-albums', dest='yield_albums', default=None)
|
||||||
p_search.set_defaults(func=search_argparse)
|
p_search.set_defaults(func=search_argparse)
|
||||||
|
|
||||||
|
p_set_searchhidden = subparsers.add_parser('set_searchhidden', aliases=['set-searchhidden'])
|
||||||
|
p_set_searchhidden.add_argument('--yes', dest='autoyes', action='store_true')
|
||||||
|
p_set_searchhidden.set_defaults(func=lambda args: set_unset_searchhidden_argparse(args, searchhidden=True))
|
||||||
|
|
||||||
|
p_unset_searchhidden = subparsers.add_parser('unset_searchhidden', aliases=['unset-searchhidden'])
|
||||||
|
p_unset_searchhidden.add_argument('--yes', dest='autoyes', action='store_true')
|
||||||
|
p_unset_searchhidden.set_defaults(func=lambda args: set_unset_searchhidden_argparse(args, searchhidden=False))
|
||||||
|
|
||||||
p_tag_breplace = subparsers.add_parser('tag_breplace')
|
p_tag_breplace = subparsers.add_parser('tag_breplace')
|
||||||
p_tag_breplace.add_argument('replace_from')
|
p_tag_breplace.add_argument('replace_from')
|
||||||
p_tag_breplace.add_argument('replace_to')
|
p_tag_breplace.add_argument('replace_to')
|
||||||
|
@ -215,16 +307,19 @@ def main(argv):
|
||||||
p_tag_breplace.add_argument('--yes', dest='autoyes', action='store_true')
|
p_tag_breplace.add_argument('--yes', dest='autoyes', action='store_true')
|
||||||
p_tag_breplace.set_defaults(func=tag_breplace_argparse)
|
p_tag_breplace.set_defaults(func=tag_breplace_argparse)
|
||||||
|
|
||||||
args = parser.parse_args(primary_args)
|
##
|
||||||
if photo_search_args:
|
|
||||||
args.photo_search_args = p_search.parse_args(photo_search_args)
|
|
||||||
else:
|
|
||||||
args.photo_search_args = None
|
|
||||||
|
|
||||||
if album_search_args:
|
args = parser.parse_args(primary_args)
|
||||||
args.album_search_args = p_search.parse_args(album_search_args)
|
|
||||||
else:
|
photo_search_args = p_search.parse_args(photo_search_args) if photo_search_args else None
|
||||||
args.album_search_args = None
|
album_search_args = p_search.parse_args(album_search_args) if album_search_args else None
|
||||||
|
photo_id_args = [id for arg in photo_id_args for id in etiquette.helpers.comma_space_split(arg)]
|
||||||
|
album_id_args = [id for arg in album_id_args for id in etiquette.helpers.comma_space_split(arg)]
|
||||||
|
|
||||||
|
args.photo_search_args = photo_search_args
|
||||||
|
args.album_search_args = album_search_args
|
||||||
|
args.photo_id_args = photo_id_args
|
||||||
|
args.album_id_args = album_id_args
|
||||||
|
|
||||||
return args.func(args)
|
return args.func(args)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue