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