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 ########################################################################################## | ||||
| 
 | ||||
| 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): | ||||
|     photodb = find_photodb() | ||||
|     photos = [] | ||||
|     if 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 | ||||
| 
 | ||||
| def get_albums_from_args(args): | ||||
|     photodb = find_photodb() | ||||
|     albums = [] | ||||
|     if 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) | ||||
|     if args.any_id_args: | ||||
|         photos = get_photos_from_args(args) | ||||
|     elif args.globs: | ||||
|         photos = get_photos_by_globs(args.globs) | ||||
|     else: | ||||
|         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.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.set_defaults(func=add_tag_argparse) | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue