diff --git a/src/swingmusic/api/folder.py b/src/swingmusic/api/folder.py index d6c52c06..f128524f 100644 --- a/src/swingmusic/api/folder.py +++ b/src/swingmusic/api/folder.py @@ -43,6 +43,7 @@ class FolderTree(BaseModel): "playduration", "playcount", "title", + "random", ]""", ) tracksort_reverse: bool = Field( diff --git a/src/swingmusic/lib/sortlib.py b/src/swingmusic/lib/sortlib.py index 3113654c..75c4a9cb 100644 --- a/src/swingmusic/lib/sortlib.py +++ b/src/swingmusic/lib/sortlib.py @@ -5,6 +5,7 @@ from swingmusic.models.folder import Folder from swingmusic.models.track import Track from swingmusic.utils import flatten +import random def sort_tracks(tracks: list[Track], key: str, reverse: bool = False): @@ -14,6 +15,9 @@ def sort_tracks(tracks: list[Track], key: str, reverse: bool = False): if key == "default": return tracks + if key == "random": + return random.sample(tracks, len(tracks)) + sortfunc: Callable[[Track], str] = lambda track: getattr(track, key) if key == "artists" or key == "albumartists": sortfunc = lambda track: getattr(track, key)[0]["name"]