Improve the args.any postprocessor results and the way we glob.

This commit is contained in:
voussoir 2022-01-10 17:53:00 -08:00
parent a0ed8fcaa0
commit fcc6073d52
No known key found for this signature in database
GPG key ID: 5F7554F8C26DACCB

View file

@ -65,16 +65,7 @@ def get_photos_by_glob(pattern):
if pattern == '**': if pattern == '**':
return search_in_cwd(yield_photos=True, yield_albums=False) return search_in_cwd(yield_photos=True, yield_albums=False)
cwd = pathclass.cwd() for file in pathclass.glob_files(pattern):
(folder, pattern) = os.path.split(pattern)
if folder:
folder = cwd.join(folder)
else:
folder = cwd
files = [f for f in folder.glob(pattern) if f.is_file]
for file in files:
try: try:
photo = photodb.get_photo_by_path(file) photo = photodb.get_photo_by_path(file)
yield photo yield photo
@ -89,6 +80,12 @@ def get_photos_from_args(args):
load_photodb() load_photodb()
photos = [] photos = []
if args.globs:
photos.extend(get_photos_by_globs(args.globs))
if args.glob:
photos.extend(get_photos_by_glob(args.glob))
if args.photo_id_args: if args.photo_id_args:
photos.extend(photodb.get_photos_by_id(args.photo_id_args)) photos.extend(photodb.get_photos_by_id(args.photo_id_args))
@ -151,19 +148,29 @@ def search_by_argparse(args, yield_albums=False, yield_photos=False):
def add_remove_tag_argparse(args, action): def add_remove_tag_argparse(args, action):
load_photodb() load_photodb()
tag = photodb.get_tag(name=args.tag_name) tag = photodb.get_tag_by_name(args.tag_name)
if args.any_id_args:
if args.any_photo_args:
photos = get_photos_from_args(args) photos = get_photos_from_args(args)
elif args.globs:
photos = get_photos_by_globs(args.globs)
else: else:
photos = search_in_cwd(yield_photos=True, yield_albums=False) photos = search_in_cwd(yield_photos=True, yield_albums=False)
need_commit = False
for photo in photos: for photo in photos:
if action == 'add': if action == 'add':
photo.add_tag(tag) photo.add_tag(tag)
elif action == 'remove': elif action == 'remove':
photo.remove_tag(tag) photo.remove_tag(tag)
need_commit = True
if not need_commit:
return 0
if args.autoyes or interactive.getpermission('Commit?'):
photodb.commit()
return 0
if args.autoyes or interactive.getpermission('Commit?'): if args.autoyes or interactive.getpermission('Commit?'):
photodb.commit() photodb.commit()
@ -247,7 +254,7 @@ def export_symlinks_argparse(args):
total_paths = set() total_paths = set()
if args.album_id_args or args.album_search_args: if args.any_album_args:
albums = get_albums_from_args(args) albums = get_albums_from_args(args)
export = export_symlinks_albums( export = export_symlinks_albums(
albums, albums,
@ -256,7 +263,7 @@ def export_symlinks_argparse(args):
) )
total_paths.update(export) total_paths.update(export)
if args.photo_id_args or args.photo_search_args: if args.any_photo_args:
photos = get_photos_from_args(args) photos = get_photos_from_args(args)
export = export_symlinks_photos( export = export_symlinks_photos(
photos, photos,
@ -291,7 +298,7 @@ def export_symlinks_argparse(args):
def generate_thumbnail_argparse(args): def generate_thumbnail_argparse(args):
load_photodb() load_photodb()
if args.photo_id_args or args.photo_search_args: if args.any_photo_args:
photos = get_photos_from_args(args) photos = get_photos_from_args(args)
else: else:
photos = search_in_cwd(yield_photos=True, yield_albums=False) photos = search_in_cwd(yield_photos=True, yield_albums=False)
@ -320,7 +327,7 @@ def init_argparse(args):
def purge_deleted_files_argparse(args): def purge_deleted_files_argparse(args):
load_photodb() load_photodb()
if args.photo_id_args or args.photo_search_args: if args.any_photo_args:
photos = get_photos_from_args(args) photos = get_photos_from_args(args)
else: else:
photos = search_in_cwd(yield_photos=True, yield_albums=False) photos = search_in_cwd(yield_photos=True, yield_albums=False)
@ -367,7 +374,7 @@ def purge_empty_albums_argparse(args):
def reload_metadata_argparse(args): def reload_metadata_argparse(args):
load_photodb() load_photodb()
if args.photo_id_args or args.photo_search_args: if args.any_photo_args:
photos = get_photos_from_args(args) photos = get_photos_from_args(args)
else: else:
photos = search_in_cwd(yield_photos=True, yield_albums=False) photos = search_in_cwd(yield_photos=True, yield_albums=False)
@ -423,7 +430,7 @@ def search_argparse(args):
return 0 return 0
def show_associated_directories_argparse(args): def show_associated_directories_argparse(args):
if args.album_id_args or args.album_search_args: if args.any_album_args:
albums = get_albums_from_args(args) albums = get_albums_from_args(args)
else: else:
albums = search_in_cwd(yield_photos=False, yield_albums=True) albums = search_in_cwd(yield_photos=False, yield_albums=True)
@ -447,8 +454,10 @@ def set_unset_searchhidden_argparse(args, searchhidden):
if args.album_search_args: if args.album_search_args:
args.album_search_args.is_searchhidden = not searchhidden args.album_search_args.is_searchhidden = not searchhidden
if args.any_id_args: photos = []
photos = get_photos_from_args(args) if args.any_photo_args:
photos.extend(get_photos_from_args(args))
if args.any_album_args:
albums = get_albums_from_args(args) albums = get_albums_from_args(args)
photos.extend(photo for album in albums for photo in album.walk_photos()) photos.extend(photo for album in albums for photo in album.walk_photos())
else: else:
@ -987,6 +996,7 @@ def main(argv):
p_purge_empty_albums.set_defaults(func=purge_empty_albums_argparse) p_purge_empty_albums.set_defaults(func=purge_empty_albums_argparse)
p_reload_metadata = subparsers.add_parser('reload_metadata', aliases=['reload-metadata']) p_reload_metadata = subparsers.add_parser('reload_metadata', aliases=['reload-metadata'])
p_reload_metadata.add_argument('globs', nargs='*')
p_reload_metadata.add_argument('--hash_bytes_per_second', '--hash-bytes-per-second', default=None) p_reload_metadata.add_argument('--hash_bytes_per_second', '--hash-bytes-per-second', default=None)
p_reload_metadata.add_argument('--force', action='store_true') p_reload_metadata.add_argument('--force', action='store_true')
p_reload_metadata.add_argument('--yes', dest='autoyes', action='store_true') p_reload_metadata.add_argument('--yes', dest='autoyes', action='store_true')
@ -1054,11 +1064,22 @@ def main(argv):
args.album_search_args = p_search.parse_args(album_search_args) if album_search_args else None args.album_search_args = p_search.parse_args(album_search_args) if album_search_args else None
args.photo_id_args = [id for arg in photo_id_args for id in stringtools.comma_space_split(arg)] args.photo_id_args = [id for arg in photo_id_args for id in stringtools.comma_space_split(arg)]
args.album_id_args = [id for arg in album_id_args for id in stringtools.comma_space_split(arg)] args.album_id_args = [id for arg in album_id_args for id in stringtools.comma_space_split(arg)]
args.any_id_args = bool(
if not hasattr(args, 'globs'):
args.globs = None
if not hasattr(args, 'glob'):
args.glob = None
args.any_photo_args = bool(
args.photo_search_args or args.photo_search_args or
args.album_search_args or
args.photo_id_args or args.photo_id_args or
args.album_id_args args.globs or
args.glob
)
args.any_album_args = bool(
args.album_id_args or
args.album_search_args
) )
return args return args