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 mimetypes | ||||||
| import os | import os | ||||||
| import PIL.Image | import PIL.Image | ||||||
|  | import re | ||||||
| import unicodedata | import unicodedata | ||||||
| import zipstream | import zipstream | ||||||
| 
 | 
 | ||||||
|  | @ -269,6 +270,18 @@ def is_xor(*args): | ||||||
|     ''' |     ''' | ||||||
|     return [bool(a) for a in args].count(True) == 1 |     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): | def now(timestamp=True): | ||||||
|     ''' |     ''' | ||||||
|     Return the current UTC timestamp or datetime object. |     Return the current UTC timestamp or datetime object. | ||||||
|  |  | ||||||
|  | @ -1116,6 +1116,7 @@ class PDBUtilMixin: | ||||||
|             exclude_directories=None, |             exclude_directories=None, | ||||||
|             exclude_filenames=None, |             exclude_filenames=None, | ||||||
|             make_albums=True, |             make_albums=True, | ||||||
|  |             natural_sort=True, | ||||||
|             new_photo_kwargs={}, |             new_photo_kwargs={}, | ||||||
|             new_photo_ratelimit=None, |             new_photo_ratelimit=None, | ||||||
|             recurse=True, |             recurse=True, | ||||||
|  | @ -1220,6 +1221,9 @@ class PDBUtilMixin: | ||||||
|         ) |         ) | ||||||
| 
 | 
 | ||||||
|         for (current_directory, subdirectories, files) in walk_generator: |         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) |             photos = create_or_fetch_photos(files, new_photo_kwargs=new_photo_kwargs) | ||||||
| 
 | 
 | ||||||
|             if not make_albums: |             if not make_albums: | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue