Use natrual sorting

This commit is contained in:
Bowen Ding
2020-04-11 19:28:15 +08:00
parent 972f0f167d
commit 8143e2a453
2 changed files with 13 additions and 8 deletions

View File

@@ -35,6 +35,7 @@ install_requires =
Markdown
Pillow>=4.0.0
pilkit
natsort
[options.extras_require]
all = boto; brotli; feedgenerator; zopfli

View File

@@ -38,6 +38,7 @@ from os.path import isfile, join, splitext
from urllib.parse import quote as url_quote
from click import get_terminal_size, progressbar
from natsort import natsort_keygen, ns
from . import image, signals, video
from .image import (get_exif_data, get_exif_tags, get_iptc_data, get_size,
@@ -377,14 +378,15 @@ class Album:
root_path = self.path if self.path != '.' else ''
if albums_sort_attr.startswith("meta."):
meta_key = albums_sort_attr.split(".", 1)[1]
key = lambda s: locale.strxfrm(
self.gallery.albums[join(root_path, s)].meta.get(meta_key, [''])[0])
key = natsort_keygen(key=lambda s:
self.gallery.albums[join(root_path, s)].meta.get(meta_key, [''])[0],
alg=ns.LOCALE)
else:
key = lambda s: locale.strxfrm(
getattr(self.gallery.albums[join(root_path, s)],
albums_sort_attr))
key = natsort_keygen(key=lambda s:
getattr(self.gallery.albums[join(root_path, s)], albums_sort_attr),
alg=ns.LOCALE)
else:
key = locale.strxfrm
key = natsort_keygen(alg=ns.LOCALE)
self.subdirs.sort(key=key,
reverse=self.settings['albums_sort_reverse'])
@@ -397,9 +399,11 @@ class Album:
key = lambda s: s.date or datetime.now()
elif medias_sort_attr.startswith('meta.'):
meta_key = medias_sort_attr.split(".", 1)[1]
key = lambda s: locale.strxfrm(s.meta.get(meta_key, [''])[0])
key = natsort_keygen(key=lambda s: s.meta.get(meta_key, [''])[0],
alg=ns.LOCALE)
else:
key = lambda s: locale.strxfrm(getattr(s, medias_sort_attr))
key = natsort_keygen(key=lambda s: getattr(s, medias_sort_attr),
alg=ns.LOCALE)
self.medias.sort(key=key,
reverse=self.settings['medias_sort_reverse'])