Add option to natural_sort filenames before digesting.
This commit is contained in:
		
							parent
							
								
									374763f990
								
							
						
					
					
						commit
						e94e35c98c
					
				
					 2 changed files with 17 additions and 0 deletions
				
			
		|  | @ -8,6 +8,7 @@ import math | |||
| import mimetypes | ||||
| import os | ||||
| import PIL.Image | ||||
| import re | ||||
| import unicodedata | ||||
| import zipstream | ||||
| 
 | ||||
|  | @ -269,6 +270,18 @@ def is_xor(*args): | |||
|     ''' | ||||
|     return [bool(a) for a in args].count(True) == 1 | ||||
| 
 | ||||
| def natural_sorter(x): | ||||
|     ''' | ||||
|     Used for sorting files in 'natural' order instead of lexicographic order, | ||||
|     so that you get 1 2 3 4 5 6 7 8 9 10 11 12 13 ... | ||||
|     instead of 1 10 11 12 13 2 3 4 5 ... | ||||
|     Thank you Mark Byers | ||||
|     http://stackoverflow.com/a/11150413 | ||||
|     ''' | ||||
|     convert = lambda text: int(text) if text.isdigit() else text.lower() | ||||
|     alphanum_key = lambda key: [convert(c) for c in re.split('([0-9]+)', key)] | ||||
|     return alphanum_key(x) | ||||
| 
 | ||||
| def now(timestamp=True): | ||||
|     ''' | ||||
|     Return the current UTC timestamp or datetime object. | ||||
|  |  | |||
|  | @ -1116,6 +1116,7 @@ class PDBUtilMixin: | |||
|             exclude_directories=None, | ||||
|             exclude_filenames=None, | ||||
|             make_albums=True, | ||||
|             natural_sort=True, | ||||
|             new_photo_kwargs={}, | ||||
|             new_photo_ratelimit=None, | ||||
|             recurse=True, | ||||
|  | @ -1220,6 +1221,9 @@ class PDBUtilMixin: | |||
|         ) | ||||
| 
 | ||||
|         for (current_directory, subdirectories, files) in walk_generator: | ||||
|             if natural_sort: | ||||
|                 files = sorted(files, key=lambda f: helpers.natural_sorter(f.basename)) | ||||
| 
 | ||||
|             photos = create_or_fetch_photos(files, new_photo_kwargs=new_photo_kwargs) | ||||
| 
 | ||||
|             if not make_albums: | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue