Add support for file glob patterns in add_tag command.
This commit is contained in:
		
							parent
							
								
									a1fd6c26c5
								
							
						
					
					
						commit
						f112a3d041
					
				
					 1 changed files with 32 additions and 0 deletions
				
			
		|  | @ -38,7 +38,35 @@ def find_photodb(): | ||||||
| 
 | 
 | ||||||
| # HELPERS ########################################################################################## | # HELPERS ########################################################################################## | ||||||
| 
 | 
 | ||||||
|  | def get_photos_by_glob(pattern): | ||||||
|  |     photodb = find_photodb() | ||||||
|  |     pattern = pathclass.normalize_sep(pattern) | ||||||
|  | 
 | ||||||
|  |     if pattern == '**': | ||||||
|  |         return search_in_cwd(yield_photos=True, yield_albums=False) | ||||||
|  | 
 | ||||||
|  |     cwd = pathclass.cwd() | ||||||
|  | 
 | ||||||
|  |     (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: | ||||||
|  |             photo = photodb.get_photo_by_path(file) | ||||||
|  |         except etiquette.exceptions.NoSuchPhoto: | ||||||
|  |             pass | ||||||
|  |         yield photo | ||||||
|  | 
 | ||||||
|  | def get_photos_by_globs(patterns): | ||||||
|  |     for pattern in patterns: | ||||||
|  |         yield from get_photos_by_glob(pattern) | ||||||
|  | 
 | ||||||
| def get_photos_from_args(args): | def get_photos_from_args(args): | ||||||
|  |     photodb = find_photodb() | ||||||
|     photos = [] |     photos = [] | ||||||
|     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)) | ||||||
|  | @ -49,6 +77,7 @@ def get_photos_from_args(args): | ||||||
|     return photos |     return photos | ||||||
| 
 | 
 | ||||||
| def get_albums_from_args(args): | def get_albums_from_args(args): | ||||||
|  |     photodb = find_photodb() | ||||||
|     albums = [] |     albums = [] | ||||||
|     if args.album_id_args: |     if args.album_id_args: | ||||||
|         albums.extend(photodb.get_albums_by_id(args.album_id_args)) |         albums.extend(photodb.get_albums_by_id(args.album_id_args)) | ||||||
|  | @ -102,6 +131,8 @@ def add_tag_argparse(args): | ||||||
|     tag = photodb.get_tag(name=args.tag_name) |     tag = photodb.get_tag(name=args.tag_name) | ||||||
|     if args.any_id_args: |     if args.any_id_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) | ||||||
| 
 | 
 | ||||||
|  | @ -265,6 +296,7 @@ def main(argv): | ||||||
| 
 | 
 | ||||||
|     p_add_tag = subparsers.add_parser('add_tag', aliases=['add-tag']) |     p_add_tag = subparsers.add_parser('add_tag', aliases=['add-tag']) | ||||||
|     p_add_tag.add_argument('tag_name') |     p_add_tag.add_argument('tag_name') | ||||||
|  |     p_add_tag.add_argument('globs', nargs='*') | ||||||
|     p_add_tag.add_argument('--yes', dest='autoyes', action='store_true') |     p_add_tag.add_argument('--yes', dest='autoyes', action='store_true') | ||||||
|     p_add_tag.set_defaults(func=add_tag_argparse) |     p_add_tag.set_defaults(func=add_tag_argparse) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue