bugfix: datatables search for radio queue was returning incorrect queue positions for items once a filter/query was provided (numbering/index was based on the filtered resultset)

This commit is contained in:
codey 2025-04-27 08:27:08 -04:00
parent 2a49a92bb2
commit 8848d3a493
2 changed files with 17 additions and 17 deletions

View File

@ -128,9 +128,9 @@ class Radio(FastAPI):
start: int = int(data.start)
end: int = start + 20
search: Optional[str] = data.search
orig_queue: list[dict] = self.radio_util.active_playlist
if not search:
queue_full: list = self.radio_util.active_playlist
queue_full: list = orig_queue
else:
queue_full: list = self.radio_util.datatables_search(data.search)
queue: list = queue_full[start:end]
@ -138,7 +138,7 @@ class Radio(FastAPI):
for x, item in enumerate(queue):
queue_out.append(
{
"pos": queue_full.index(item),
"pos": orig_queue.index(item),
"id": item.get("id"),
"uuid": item.get("uuid"),
"artist": item.get("artist"),
@ -150,7 +150,7 @@ class Radio(FastAPI):
}
)
fallback_playlist_len: int = len(
self.radio_util.active_playlist
orig_queue
) # Used if search term is provided
out_json = {
"draw": data.draw,

View File

@ -50,12 +50,12 @@ class RadioUtil:
"/usr/local/share", "sqlite_dbs", "track_album_art.db"
)
self.playback_genres: list[str] = [
"post-hardcore",
"post hardcore",
"metalcore",
"deathcore",
"edm",
"electronic",
# "post-hardcore",
# "post hardcore",
# "metalcore",
# "deathcore",
# "edm",
# "electronic",
]
self.active_playlist: list[dict] = []
self.playlist_loaded: bool = False
@ -118,7 +118,7 @@ class RadioUtil:
filter (str): The filter query to fuzzy match with
Returns:
list[str]: List of matching playlist items (if any are found)
list[dict]: List of matching playlist items (if any are found)
"""
filter = filter.strip().lower()
matched: list[dict] = []
@ -335,10 +335,10 @@ class RadioUtil:
LIMITED GENRES
"""
db_query: str = (
'SELECT distinct(LOWER(TRIM(artist)) || " - " || LOWER(TRIM(song))), (TRIM(artist) || " - " || TRIM(song))'
"AS artistdashsong, id, artist, song, album, file_path, duration FROM tracks"
)
# db_query: str = (
# 'SELECT distinct(LOWER(TRIM(artist)) || " - " || LOWER(TRIM(song))), (TRIM(artist) || " - " || TRIM(song))'
# "AS artistdashsong, id, artist, song, album, file_path, duration FROM tracks"
# )
"""
LIMITED TO ONE/SMALL SUBSET OF GENRES
@ -351,8 +351,8 @@ class RadioUtil:
LIMITED TO ONE/SOME ARTISTS...
"""
# db_query = 'SELECT distinct(artist || " - " || song) AS artistdashsong, id, artist, song, album, file_path, duration FROM tracks\
# WHERE (artist LIKE "%outline in color%") AND (NOT song LIKE "%%stripped%%" AND NOT song LIKE "%(2022)%" AND NOT song LIKE "%(live%%" AND NOT song LIKE "%%acoustic%%" AND NOT song LIKE "%%instrumental%%" AND NOT song LIKE "%%remix%%" AND NOT song LIKE "%%reimagined%%" AND NOT song LIKE "%%alternative%%" AND NOT song LIKE "%%unzipped%%") GROUP BY artistdashsong ORDER BY RANDOM()' # ORDER BY album ASC, id ASC'
db_query = 'SELECT distinct(artist || " - " || song) AS artistdashsong, id, artist, song, album, file_path, duration FROM tracks\
WHERE (artist LIKE "%chunk!%") AND (NOT song LIKE "%%stripped%%" AND NOT song LIKE "%(2022)%" AND NOT song LIKE "%(live%%" AND NOT song LIKE "%%acoustic%%" AND NOT song LIKE "%%instrumental%%" AND NOT song LIKE "%%remix%%" AND NOT song LIKE "%%reimagined%%" AND NOT song LIKE "%%alternative%%" AND NOT song LIKE "%%unzipped%%") GROUP BY artistdashsong ORDER BY RANDOM()' # ORDER BY album ASC, id ASC'
# db_query = 'SELECT distinct(artist || " - " || song) AS artistdashsong, id, artist, song, album, genre, file_path, duration FROM tracks\
# WHERE (artist LIKE "%sullivan king%" OR artist LIKE "%kayzo%" OR artist LIKE "%adventure club%") AND (NOT song LIKE "%%stripped%%" AND NOT song LIKE "%(2022)%" AND NOT song LIKE "%(live%%" AND NOT song LIKE "%%acoustic%%" AND NOT song LIKE "%%instrumental%%" AND NOT song LIKE "%%remix%%" AND NOT song LIKE "%%reimagined%%" AND NOT song LIKE "%%alternative%%" AND NOT song LIKE "%%unzipped%%") GROUP BY artistdashsong ORDER BY RANDOM()'# ORDER BY album ASC, id ASC'