From 08dafda29b769d15870e8445a367df5b7f34e7b6 Mon Sep 17 00:00:00 2001 From: ville rantanen Date: Fri, 7 Mar 2014 21:58:54 +0200 Subject: [PATCH] attempt better sorting --- Qalbum.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Qalbum.py b/Qalbum.py index 3fbf643..4780f32 100755 --- a/Qalbum.py +++ b/Qalbum.py @@ -100,9 +100,9 @@ def getimagelist(path,options=False): if options.timesort: imgs.sort(key=lambda f: os.path.getmtime(os.path.join(path, f)),reverse=options.reverse) else: - imgs.sort(reverse=options.reverse) + imgs.sort(reverse=options.reverse,key=lambda x: natural_sort_key(x)) else: - imgs.sort() + imgs.sort(key=lambda x: natural_sort_key(x)) return imgs def getnonconvertiblelist(path,options=False): @@ -116,9 +116,9 @@ def getnonconvertiblelist(path,options=False): if options.timesort: files.sort(key=lambda f: os.path.getmtime(os.path.join(path, f)),reverse=options.reverse) else: - files.sort(reverse=options.reverse) + files.sort(reverse=options.reverse,key=lambda x: natural_sort_key(x)) else: - files.sort() + files.sort(key=lambda x: natural_sort_key(x)) return files def getfiletimes(path,list): @@ -147,7 +147,7 @@ def getnonimagelist(path,options): if options.timesort: files.sort(key=lambda f: os.path.getmtime(os.path.join(path, f)),reverse=options.reverse) else: - files.sort(reverse=options.reverse) + files.sort(reverse=options.reverse,key=lambda x: natural_sort_key(x)) return files def getpathlist(path,options=False): @@ -161,9 +161,9 @@ def getpathlist(path,options=False): if options.timesort: paths.sort(key=lambda f: os.path.getmtime(f),reverse=options.reverse) else: - paths.sort(reverse=options.reverse) + paths.sort(reverse=options.reverse,key=lambda x: natural_sort_key(x)) else: - paths.sort() + paths.sort(key=lambda x: natural_sort_key(x)) return paths def pathscript(path,list): @@ -404,6 +404,11 @@ def sizestring(size): return "%3.1f%s" % (size, x) size /= 1024.0 +def natural_sort_key(s, _nsre=re.compile('([0-9]+)')): + ''' Natural sort / Claudiu@Stackoverflow ''' + return [int(text) if text.isdigit() else text.lower() + for text in re.split(_nsre, s)] + def traverse(path,crumbs,inputs,options): ''' The recursive main function to create the index.html and seek sub folders '''